/* RU Community - front-end du reseau. Charte bleue : accent bleu de RU Design
   (repli #1d5c8f), encre bleu nuit #0e2438 sur blanc.
   Aucun trait cadratin, apostrophe droite. Mobile d'abord. */

.rucom-app{
  --or:var(--ru-accent,#1d5c8f); --or-d:var(--ru-accent-fonce,#174a73); --ink:var(--ru-texte,#0e2438); --muted:var(--ru-discret,#6b7280);
  --line:rgba(17,17,20,.08); --soft:#f4f4f6; --g1:linear-gradient(135deg,#eef2f6,#F4F4F5 60%,#e8edf2);
  max-width:600px; margin:0 auto; color:var(--ru-texte,#0e2438);
  font-family:var(--ru-police,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif);
  position:relative; padding-bottom:64px;
}
/* Les modales, menus et bulles sont poses sur <body>, DONC hors de .rucom-app :
   sans cette declaration, ils perdaient les variables de marque (les bordures
   var(--line) devenaient invalides et disparaissaient, d'ou des modales sans
   separateurs). On publie donc la meme palette a la racine du document. */
:root{
  --or:var(--ru-accent,#1d5c8f); --or-d:var(--ru-accent-fonce,#174a73); --ink:var(--ru-texte,#0e2438); --muted:var(--ru-discret,#6b7280);
  --line:rgba(17,17,20,.08); --soft:#f4f4f6;
}
.rucom-app *{box-sizing:border-box}
/* LES MODALES SONT HORS DE .rucom-app. On leur avait donne les variables de
   marque, mais pas le MODELE DE BOITE : leur `max-height:90vh` se calculait
   donc sur le contenu seul, et le rembourrage s'ajoutait par-dessus. Sur un
   ecran court, la carte depassait de l'ecran et ses boutons devenaient
   inatteignables. Une regle qui ne suit pas l'element qu'elle protege ne
   protege rien. */
.rucom-modal,.rucom-modal *,
.rucom-cmpmodal,.rucom-cmpmodal *,
.rucom-story-view,.rucom-story-view *,
.rucom-ephov,.rucom-ephov *,
.rucom-pmenu,.rucom-pmenu *{box-sizing:border-box}
.rucom-app img{max-width:100%}
.rucom-hidden{display:none !important}

/* Barre du haut */
.rucom-appbar{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;position:sticky;top:0;background:#fff;z-index:30;border-bottom:1px solid var(--line)}
.rucom-appbar .rucom-brand{height:24px;width:auto;cursor:pointer}
.rucom-appbar .rucom-actions{display:flex;gap:16px;align-items:center}
.rucom-ic{width:24px;height:24px;color:var(--ru-texte,#0e2438);cursor:pointer;background:none;border:0;padding:0;display:inline-flex;align-items:center;justify-content:center}
.rucom-ic svg{width:100%;height:100%}
.rucom-badge-dot{position:relative}
.rucom-badge-dot[data-count]:not([data-count="0"])::after{content:attr(data-count);position:absolute;top:-6px;right:-8px;background:var(--or);color:var(--ru-sur-accent,#FFFFFF);font-size:10px;font-weight:800;min-width:15px;height:15px;border-radius:8px;display:grid;place-items:center;padding:0 4px}

/* Avatars */
.rucom-av{border-radius:50%;background-size:cover;background-position:center;background-color:#e7e7ea;display:inline-grid;place-items:center;color:#fff;font-weight:800;overflow:hidden;flex:0 0 auto}
.rucom-av img{width:100%;height:100%;object-fit:cover;border-radius:50%}

/* Stories */
.rucom-stories{display:flex;gap:14px;padding:12px 14px;overflow-x:auto;border-bottom:1px solid var(--line);scrollbar-width:none}
.rucom-stories::-webkit-scrollbar{display:none}
.rucom-story{display:flex;flex-direction:column;align-items:center;gap:6px;flex:0 0 auto;width:64px;cursor:pointer}
.rucom-ring{width:60px;height:60px;border-radius:50%;padding:3px;background:conic-gradient(from 30deg,var(--or),var(--ru-accent,#1d5c8f),var(--ru-accent,#1d5c8f),var(--or));display:grid;place-items:center}
.rucom-ring.rucom-me{background:#e7e7ea}
.rucom-ring .rucom-av{width:52px;height:52px;border:2px solid #fff}
.rucom-story .rucom-nm{font-size:11px;color:#333;max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-plus{width:52px;height:52px;border-radius:50%;background:#f0f0f2;display:grid;place-items:center;color:var(--ru-texte,#0e2438);font-size:26px;border:2px solid #fff}

/* Composer */
.rucom-composer{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:8px solid var(--soft)}
.rucom-composer .rucom-av{width:38px;height:38px}
.rucom-composer .rucom-q{flex:1;background:var(--soft);border:0;border-radius:20px;padding:10px 14px;color:#333;font-size:14px;font-family:inherit}
.rucom-composer .rucom-q::placeholder{color:#8a8a92}
.rucom-composer .rucom-cam{color:var(--or-d)}

/* Composer ouvert (zone d'edition) */
.rucom-compose-box{padding:12px 14px;border-bottom:8px solid var(--soft)}
.rucom-compose-box textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px;font-size:15px;font-family:inherit;resize:vertical;min-height:80px}
.rucom-compose-row{display:flex;align-items:center;justify-content:space-between;margin-top:10px;gap:10px}
.rucom-compose-row .rucom-left{display:flex;gap:12px;align-items:center;color:var(--or-d)}
.rucom-preview{margin-top:10px;border-radius:12px;overflow:hidden;max-height:320px}
.rucom-preview img{width:100%;object-fit:cover}

/* Boutons */
.rucom-btn{border:0;border-radius:10px;font-weight:800;font-size:14px;padding:9px 16px;cursor:pointer;font-family:inherit}
/* Un bouton peut porter une icone : elle reste petite et alignee au texte. */
.rucom-btn:has(svg){display:inline-flex;align-items:center;justify-content:center;gap:7px}
.rucom-btn svg{width:16px;height:16px;flex:0 0 auto}
.rucom-btn.rucom-gold{background:var(--or);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-btn.rucom-ghost{background:var(--soft);color:var(--ru-texte,#0e2438)}
/* Bouton d'action SECONDAIRE, contour : « Suivre » une entreprise, etc. Le
   dore reste pour l'action principale seulement, jamais repete en pleine
   largeur sous chaque carte (norme Meta/LinkedIn : suivre = bouton discret). */
.rucom-btn.rucom-outline{background:#fff;color:var(--ru-texte,#0e2438);border:1.5px solid var(--ink,#111114)}
.rucom-btn:disabled{opacity:.5;cursor:default}

/* Publication */
.rucom-post{border-bottom:8px solid var(--soft)}
.rucom-p-head{display:flex;align-items:center;gap:10px;padding:11px 14px}
.rucom-p-head .rucom-av{width:40px;height:40px}
.rucom-p-head .rucom-who{flex:1;line-height:1.15}
.rucom-p-head .rucom-who b{font-size:14px;cursor:pointer}
.rucom-p-head .rucom-who small{display:block;color:var(--muted);font-size:12px;margin-top:1px}
.rucom-photo{width:100%;background:var(--g1);display:block}
.rucom-photo img{width:100%;display:block}
.rucom-p-acts{display:flex;align-items:center;gap:18px;padding:11px 14px 4px}
.rucom-p-acts .rucom-sp{flex:1}
.rucom-p-acts .rucom-ic.rucom-on{color:#ff5a1f}
.rucom-p-likes{padding:2px 14px;font-weight:700;font-size:13px}
.rucom-p-cap{padding:4px 14px 2px;font-size:14px;line-height:1.4}
.rucom-p-cap b{font-weight:700;cursor:pointer}
.rucom-p-more{padding:3px 14px 12px;color:var(--muted);font-size:13px;cursor:pointer}
.rucom-txtpost{padding:6px 16px 16px;font-size:15px;line-height:1.5;white-space:pre-wrap}

/* Etat vide / chargement */
.rucom-empty,.rucom-loading{padding:40px 20px;text-align:center;color:var(--muted);font-size:15px}
/* REGLE DE FORME : aucun texte ne flotte seul dans un onglet. Un etat vide
   place directement dans le contenu prend la meme boite blanche que le reste,
   sinon la phrase a l'air posee sur le fond par accident. */
.rucom-content>.rucom-empty,.rucom-content>.rucom-loading,
.rucom-notifs>.rucom-empty{background:#fff;border:1px solid var(--line);border-radius:16px;
  padding:44px 24px;margin:0 0 16px}

/* Barre d'onglets bas */
/* Tenue par le CSS SEUL (aucun script ne la deplace) : position:fixed;bottom:0
   est deja gere correctement par Safari, Chrome, Firefox et Samsung quand leur
   barre d'adresse apparait ou disparait. Pas de transform (source de
   tremblement sur iOS) : centrage par left/right + margin auto. */
.rucom-tabbar{position:fixed;left:0;right:0;bottom:0;margin:0 auto;width:100%;max-width:600px;box-sizing:border-box;display:flex;justify-content:space-around;align-items:center;padding:4px 6px;border-top:1px solid var(--line);background:#fff;z-index:40;-webkit-tap-highlight-color:transparent}
.rucom-tabbar .rucom-ic{width:26px;height:26px}
.rucom-tabbar .rucom-mid{width:36px;height:36px;border-radius:12px;background:var(--or);color:var(--ru-sur-accent,#FFFFFF);display:grid;place-items:center}
.rucom-tabbar .rucom-av{width:26px;height:26px;font-size:11px}
.rucom-tabbar .rucom-ic.rucom-active{color:var(--or-d)}

/* Profil */
.rucom-cover{height:150px;background:linear-gradient(135deg,#eef2f6,#d3e0ec 60%,var(--ru-accent-filet,rgba(44,111,181,.45)));background-size:cover;background-position:center}
.rucom-p-top{padding:0 16px;margin-top:-40px}
.rucom-p-avatar{width:88px;height:88px;border:4px solid #fff;font-size:28px}
.rucom-p-name{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:20px;font-weight:800}
.rucom-check{width:18px;height:18px;background:var(--or);border-radius:50%;display:grid;place-items:center;color:var(--ru-sur-accent,#FFFFFF);font-size:11px;font-weight:900}
.rucom-p-handle{color:var(--muted);font-size:13px;margin-top:1px}
.rucom-p-headline{font-size:14px;margin-top:8px;line-height:1.45}
.rucom-stats{display:flex;gap:6px;margin:14px 0 12px}
.rucom-stat{flex:1;text-align:center}
.rucom-stat b{display:block;font-size:17px;font-weight:800}
.rucom-stat small{color:var(--muted);font-size:12px}
.rucom-p-btns{display:flex;gap:9px;padding:0 16px}
.rucom-p-btns .rucom-btn{flex:1}
.rucom-tops{padding:16px 16px 6px}
.rucom-tops .rucom-h{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#88888f;margin-bottom:10px}
.rucom-tops .rucom-row{display:flex;gap:16px;overflow-x:auto;scrollbar-width:none}
.rucom-friend{display:flex;flex-direction:column;align-items:center;gap:6px;width:56px;cursor:pointer}
.rucom-friend .rucom-av{width:50px;height:50px}
.rucom-friend small{font-size:11px;color:#555;max-width:56px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-ptabs{display:flex;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:12px}
.rucom-pt{flex:1;text-align:center;padding:12px;color:#9a9aa2;display:flex;align-items:center;justify-content:center;gap:6px}
.rucom-pt.rucom-on{color:var(--ru-texte,#0e2438);border-bottom:2px solid var(--ru-texte,#0e2438);font-weight:700}
.rucom-pt svg{width:18px;height:18px}
/* Onglet "Plus" et son menu deroulant (epure le rang d'onglets, surtout mobile). */
.rucom-pt-more{position:relative;flex:1;display:flex}
.rucom-pt-morebtn{flex:1;cursor:pointer}
.rucom-pt-morelbl+svg,.rucom-pt-morebtn svg{width:16px;height:16px}
.rucom-pt-menu{position:absolute;top:100%;right:0;min-width:180px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.14);padding:6px;z-index:40}
.rucom-pt-mi{padding:10px 12px;border-radius:8px;cursor:pointer;font-size:14px;color:#333;white-space:nowrap}
.rucom-pt-mi:hover{background:#f4f4f5}
.rucom-pt-mi.rucom-on{color:var(--ru-texte,#0e2438);font-weight:700;background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-gallery{display:grid;grid-template-columns:1fr 1fr 1fr;gap:3px}
.rucom-gcell{aspect-ratio:1/1;position:relative;background:var(--g1);cursor:pointer;overflow:hidden}
.rucom-gcell img{width:100%;height:100%;object-fit:cover}

/* Modale publication */
.rucom-modal{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:60;display:flex;align-items:center;justify-content:center;padding:16px}
.rucom-modal-card{background:#fff;border-radius:16px;max-width:560px;width:100%;max-height:90vh;overflow:auto}
.rucom-cmts{padding:8px 14px;display:flex;flex-direction:column;gap:13px}
.rucom-cmt{display:flex;gap:9px}
.rucom-cmt .rucom-av{width:32px;height:32px;font-size:12px}
.rucom-cmt .rucom-bd{flex:1;font-size:13.5px;line-height:1.4}
.rucom-cmt .rucom-bd b{font-weight:700}
.rucom-cmt .rucom-meta{color:var(--muted);font-size:11.5px;margin-top:3px;display:flex;gap:14px}
.rucom-cmtbar{display:flex;align-items:center;gap:9px;padding:10px 12px;border-top:1px solid var(--line);position:sticky;bottom:0;background:#fff}
.rucom-cmtbar .rucom-q{flex:1;background:var(--soft);border:0;border-radius:20px;padding:10px 14px;font-size:14px;font-family:inherit}
.rucom-cmtbar .rucom-send{color:var(--or-d);font-weight:800;font-size:14px;background:none;border:0;cursor:pointer}

/* Messagerie */
.rucom-m-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;font-size:20px;font-weight:800;border-bottom:1px solid var(--line)}
.rucom-m-search{margin:10px 14px;background:var(--soft);border:0;border-radius:12px;padding:10px 13px;font-size:14px;width:calc(100% - 28px);font-family:inherit}
.rucom-conv{display:flex;align-items:center;gap:12px;padding:11px 15px;cursor:pointer}
.rucom-conv:hover{background:#fafafa}
.rucom-conv .rucom-av{width:54px;height:54px;font-size:16px;position:relative}
.rucom-conv .rucom-bd{flex:1;line-height:1.2;min-width:0}
.rucom-conv .rucom-bd b{font-size:14px}
.rucom-conv .rucom-bd small{display:block;color:var(--muted);font-size:12.5px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-conv .rucom-bd small.rucom-un{color:var(--ru-texte,#0e2438);font-weight:700}
.rucom-conv .rucom-rt{display:flex;flex-direction:column;align-items:flex-end;gap:5px}
.rucom-conv .rucom-rt small{color:var(--muted);font-size:11px}
.rucom-pill{background:var(--or);color:var(--ru-sur-accent,#FFFFFF);font-size:11px;font-weight:800;min-width:19px;height:19px;border-radius:10px;display:grid;place-items:center;padding:0 5px}

/* Fil de discussion */
.rucom-c-head{display:flex;align-items:center;gap:11px;padding:12px 14px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;z-index:10}
.rucom-c-head .rucom-av{width:40px;height:40px;font-size:14px}
.rucom-c-head .rucom-who b{font-size:15px}
.rucom-c-head .rucom-who small{display:block;color:#22c55e;font-size:12px;font-weight:600}
.rucom-thread{padding:14px;display:flex;flex-direction:column;gap:8px;background:#fafafa;min-height:50vh}
.rucom-bub{max-width:74%;padding:9px 13px;border-radius:18px;font-size:14px;line-height:1.35;word-wrap:break-word}
.rucom-bub.rucom-in{background:#ececed;color:var(--ru-texte,#0e2438);align-self:flex-start;border-bottom-left-radius:5px}
.rucom-bub.rucom-out{background:var(--or);color:var(--ru-sur-accent,#FFFFFF);align-self:flex-end;border-bottom-right-radius:5px}
.rucom-chatbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-top:1px solid var(--line);background:#fff;position:sticky;bottom:0}
.rucom-chatbar .rucom-q{flex:1;background:var(--soft);border:0;border-radius:20px;padding:10px 14px;font-size:14px;font-family:inherit}
.rucom-chatbar .rucom-send{color:var(--or-d);font-weight:800;background:none;border:0;cursor:pointer;font-size:14px}

/* Notifications */
.rucom-n-head{padding:14px 16px;font-size:20px;font-weight:800;border-bottom:1px solid var(--line)}
.rucom-notif{display:flex;align-items:center;gap:11px;padding:11px 15px;border-bottom:1px solid var(--line)}
.rucom-notif.rucom-unread{background:rgba(44,111,181,.06)}
.rucom-notif .rucom-av{width:44px;height:44px;font-size:14px}
.rucom-notif .rucom-bd.rucom-notif-clic{cursor:pointer}
.rucom-notif .rucom-bd.rucom-notif-clic:hover{color:var(--ru-texte,#0e2438)}
.rucom-notif .rucom-bd{flex:1;font-size:13.5px;line-height:1.35}
.rucom-notif .rucom-bd small{color:var(--muted);font-size:11.5px;display:block;margin-top:2px}

/* Story plein ecran */
.rucom-story-view{position:fixed;inset:0;background:#000;z-index:70;display:flex;align-items:center;justify-content:center}
.rucom-story-inner{position:relative;width:100%;max-width:440px;height:100%;background:linear-gradient(135deg,#0e2438,#14314b 60%,#0b1d2e);display:grid;place-items:center;color:#fff;text-align:center}
.rucom-story-close{position:absolute;top:18px;right:18px;color:#fff;font-size:26px;cursor:pointer;background:none;border:0;z-index:2}
.rucom-story-top{position:absolute;top:24px;left:16px;display:flex;align-items:center;gap:9px}
.rucom-story-top .rucom-av{width:36px;height:36px;font-size:12px;border:2px solid rgba(255,255,255,.7)}
.rucom-story-body{padding:20px;font-size:24px;font-weight:800}
.rucom-story-body img{border-radius:12px}

@media (min-width:601px) and (max-width:999px){
  .rucom-center{border-left:1px solid var(--line);border-right:1px solid var(--line);min-height:100vh}
}

/* ================= Disposition multi-colonnes (style reseau) ================= */
/* Mobile : jamais de defilement horizontal (la page reste figee en largeur).
   ATTENTION : `overflow-x:hidden` fait de l'application un conteneur de
   defilement, ce qui ANNULE tout `position:sticky` a l'interieur. On le reserve
   donc au telephone, ou il sert vraiment, et on le retire sur ordinateur, ou il
   empechait le menu lateral de rester en place pendant le defilement. */
.rucom-app{max-width:1600px;margin:0 auto;padding-bottom:64px}
/* MOBILE (2026-09-22) : `clip` au lieu de `hidden`. `clip` coupe le debordement
   horizontal SANS creer de zone de defilement : la page garde une seule zone
   (la fenetre), la barre du haut reste collee, le defilement ne s'accroche plus
   sur iPhone. `hidden` reste en repli pour les tres vieux navigateurs. */
@media (max-width:999px){ .rucom-app{overflow-x:hidden;overflow-x:clip} }
.rucom-left,.rucom-right{display:none}
.rucom-center{max-width:600px;margin:0 auto}

.rucom-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:6px 0 10px;margin-bottom:16px;overflow:hidden}
.rucom-card-h{font-weight:800;font-size:14px;padding:12px 16px 8px}
.rucom-r-search{width:100%;background:var(--soft);border:0;border-radius:12px;padding:11px 14px;font-size:14px;font-family:inherit;margin-bottom:16px}

.rucom-suggest-row{display:flex;align-items:center;gap:10px;padding:9px 14px}
.rucom-suggest-bd{flex:1;min-width:0;cursor:pointer;line-height:1.25}
.rucom-suggest-bd b{font-size:13.5px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-suggest-bd small{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.rucom-follow-mini{background:none;border:1.5px solid var(--ink);color:var(--ru-texte,#0e2438);font-weight:800;font-size:12.5px;padding:6px 12px;border-radius:9px;cursor:pointer;flex:0 0 auto;transition:transform .12s ease}
.rucom-follow-mini:active{transform:scale(.94)}
.rucom-follow-mini.rucom-done{background:var(--soft);border-color:transparent;color:var(--muted)}

.rucom-left .rucom-brand{height:30px;margin:2px 2px 16px;cursor:pointer}
.rucom-nav-list{display:flex;flex-direction:column;gap:2px}
.rucom-nav{display:flex;align-items:center;gap:15px;padding:12px;border-radius:12px;background:none;border:0;cursor:pointer;font-size:16px;font-weight:600;color:var(--ru-texte,#0e2438);font-family:inherit;text-align:left;transition:background .15s ease}
.rucom-nav:hover{background:var(--soft)}
.rucom-nav svg{width:24px;height:24px;flex:0 0 auto}
/* Visite guidee des visiteurs non connectes : juste sous le logo, teintee or
   pour attirer l'oeil sans crier. C'est la premiere invitation a rester. */
.rucom-tour-cta{margin:0 2px 12px;color:var(--or-d);background:var(--ru-accent-doux,rgba(44,111,181,.12));border:1px solid var(--ru-accent-filet,rgba(44,111,181,.45))}
.rucom-tour-cta:hover{background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-tour-cta svg{color:var(--or-d)}
.rucom-pub{width:100%;margin:14px 0;padding:12px}
.rucom-left-me{display:flex;align-items:center;gap:10px;padding:10px;border-radius:12px;cursor:pointer;transition:background .15s ease}
.rucom-left-me:hover{background:var(--soft)}
.rucom-left-me b{font-size:14px;display:block}
.rucom-left-me small{color:var(--muted);font-size:12px}

.rucom-welcome{background:var(--ru-fond,#FFFFFF);color:var(--ru-texte,#0e2438);box-shadow:var(--ru-ombre,0 1px 3px rgba(0,0,0,.05),0 8px 24px rgba(0,0,0,.05));border-radius:16px;padding:22px;margin:14px;text-align:center;border:1px solid var(--ru-accent-filet,rgba(44,111,181,.45))}
.rucom-welcome h3{color:var(--ru-texte,#0e2438)}
.rucom-welcome h3{margin:0 0 6px;font-size:19px;font-weight:800}
.rucom-welcome p{margin:0;opacity:.86;font-size:14px;line-height:1.4}
.rucom-inline-suggest{margin:0 14px 14px;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}

@media (min-width:1000px){
  /* L'application n'est plus enfermee dans 1500 pixels centres : c'est ce qui
     laissait un vide enorme a gauche et repoussait le menu loin du bord. Elle
     prend la largeur de l'ecran, et une marge FIXE de 30 pixels tient le menu
     pres du bord sans jamais l'y coller. */
  .rucom-app{max-width:none;padding-bottom:0}
  .rucom-shell{display:grid;grid-template-columns:250px minmax(0,600px) 340px;justify-content:space-between;gap:26px;align-items:start;padding:20px 30px}
  .rucom-left,.rucom-right{display:block;align-self:start}
  /* CHAQUE COLONNE EST NOMMEE. Sans cela, la grille place les enfants dans
     l'ordre ou ils se presentent : le jour ou l'un d'eux sort du flux (fixe,
     absolu, masque), les suivants glissent d'une colonne et le centre herite
     de la largeur prevue pour le menu. C'est exactement ce qui est arrive avec
     le menu reduit. En fixant la colonne de chacun, la faute devient
     impossible, au lieu d'etre seulement corrigee. */
  .rucom-left{grid-column:1}
  .rucom-center{grid-column:2}
  .rucom-right{grid-column:3}
  /* PAS de boite defilante : les colonnes laterales suivent le fil naturel de la
     page. Tous les liens et boites restent donc toujours accessibles (aucune
     option cachee dans un scroll interne que personne ne pense a faire defiler). */
  .rucom-left,.rucom-right{max-height:none;overflow:visible}
  .rucom-center{max-width:none;margin:0}
  .rucom-appbar{display:none}
  .rucom-tabbar{display:none}
}
/* PAS de decalage ici. Cette regle disait autrefois `top:48px` pour laisser
   passer la barre d'administration de WordPress, du temps ou les deux colonnes
   etaient collantes : `top` etait alors leur point d'accroche, et ne deplacait
   rien. Le jour ou `.rucom-left` a recu `position:relative` (pour ancrer le
   bouton de repli), le meme `top` s'est mis a POUSSER la colonne de 48 pixels
   vers le bas : le logo et tout le menu descendaient sous le haut du contenu,
   sans que rien dans la regle ait change.
   Les deux endroits qui sortent vraiment du flux gardent, eux, leur propre
   decalage : le tiroir mobile (position fixe) et le rail reduit (collant). */

/* Page profil en pleine largeur (comme Facebook / LinkedIn) : on retire la
   colonne de droite et le centre s'elargit. */
@media (min-width:1000px){
  /* CLASSEMENT : un tableau de sept colonnes etouffe dans 600 pixels alors que
     l'ecran en offre le double. On elargit le centre sans retirer la colonne de
     droite, qui reste utile ici. */
  .rucom-app.rucom-view-lb .rucom-shell{grid-template-columns:250px minmax(0,880px) 340px}
  .rucom-app.rucom-view-lb.rucom-rail-min .rucom-shell{grid-template-columns:76px minmax(0,980px) 340px}
  .rucom-app.rucom-view-wide .rucom-shell{grid-template-columns:250px minmax(0,1200px);justify-content:start}
  .rucom-app.rucom-view-wide .rucom-right{display:none}
  .rucom-app.rucom-view-wide .rucom-cover{height:220px}
  .rucom-app.rucom-view-wide .rucom-gallery{grid-template-columns:repeat(4,1fr)}
  .rucom-app.rucom-view-wide .rucom-p-top,
  .rucom-app.rucom-view-wide .rucom-p-btns,
  .rucom-app.rucom-view-wide .rucom-tops{max-width:1000px}
}

/* ---------------------------------------------------------- Fluidite */
@keyframes rucomFade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes rucomPop{0%{transform:scale(1)}40%{transform:scale(1.4)}100%{transform:scale(1)}}
@keyframes rucomHeart{0%{transform:translate(-50%,-50%) scale(0);opacity:0}20%{transform:translate(-50%,-50%) scale(1.15);opacity:.95}75%{opacity:.95}100%{transform:translate(-50%,-50%) scale(1);opacity:0}}
@keyframes rucomShimmer{0%{background-position:-420px 0}100%{background-position:420px 0}}

.rucom-content{animation:rucomFade .22s ease both}
.rucom-post{animation:rucomFade .28s ease both}
.rucom-btn,.rucom-ic,.rucom-story,.rucom-friend,.rucom-conv{transition:transform .12s ease,background .15s ease,color .15s ease,box-shadow .15s ease}
.rucom-btn:active{transform:scale(.96)}
.rucom-ic:active{transform:scale(.86)}
.rucom-story:active,.rucom-friend:active{transform:scale(.94)}
.rucom-ic.rucom-pop{animation:rucomPop .45s ease}

/* Coeur du double-clic (esprit Instagram) */
.rucom-heart-fx{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);color:#fff;font-size:96px;line-height:1;pointer-events:none;z-index:5;filter:drop-shadow(0 6px 16px rgba(0,0,0,.45))}
.rucom-heart-fx.rucom-go{animation:rucomHeart .85s ease}
.rucom-heart-fx svg{fill:currentColor}

/* Squelettes de chargement */
.rucom-sk{background:linear-gradient(90deg,#ececed 25%,#f6f6f7 37%,#ececed 63%);background-size:800px 100%;animation:rucomShimmer 1.15s infinite linear;border-radius:10px}
.rucom-sk-card{border-bottom:8px solid var(--soft);padding:12px 14px}
.rucom-sk-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.rucom-sk-av{width:40px;height:40px;border-radius:50%}
.rucom-sk-line{height:11px}
.rucom-sk-photo{width:100%;aspect-ratio:1/1;border-radius:0;margin:6px 0}

.rucom-gcell img{transition:transform .3s ease}
.rucom-gcell:hover img{transform:scale(1.06)}
.rucom-conv:active{background:#f0f0f2}
.rucom-photo{position:relative;overflow:hidden}

/* Respecte les preferences de mouvement reduit */
@media (prefers-reduced-motion:reduce){
  .rucom-content,.rucom-post,.rucom-ic.rucom-pop,.rucom-heart-fx.rucom-go{animation:none}
  .rucom-btn,.rucom-ic{transition:none}
}

/* Plein ecran : la barre du haut se cale sous la barre d'admin WordPress */
body.admin-bar .rucom-appbar{top:32px}
@media screen and (max-width:782px){ body.admin-bar .rucom-appbar{top:46px} }
/* En plein ecran, la colonne occupe toute la hauteur, fond blanc net */
body.rucom-fs{background:#fff;overflow-x:hidden;overflow-x:clip}
body.rucom-fs .rucom-app{min-height:100vh;min-height:100svh}

/* ================= Correctifs + editeur de profil (0.9.0) ================= */
/* Bouton fermer : bouton rond visible, ancre en haut a droite de la carte */
.rucom-modal-card{position:relative}

/* Description sous le nom (plus a cote) */
.rucom-p-cap{padding:6px 14px 2px}
.rucom-p-cap b{display:inline-block}
.rucom-cap-body{margin-top:3px;line-height:1.45;white-space:pre-wrap}

/* Liens @ et # */
.rucom-tag,.rucom-mention{color:var(--or-d);font-weight:700;cursor:pointer;text-decoration:none}
/* Tag de portee (@tous / @abonnés / @all / @followers...) : pastille, pas un lien. */
.rucom-mention-all{color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,rgba(44,111,181,.12));border-radius:6px;padding:0 5px;font-weight:800;cursor:default}
/* Menu d'autocompletion des mentions (@). */
.rucom-mentionbox{position:absolute;z-index:1600;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(16,24,40,.16);overflow:hidden;max-height:266px;overflow-y:auto}
.rucom-mentionit{display:flex;align-items:center;gap:9px;padding:8px 11px;cursor:pointer}
.rucom-mentionit .rucom-av{width:26px;height:26px;font-size:11px;flex:0 0 auto}
.rucom-mentionit b{font-size:13.5px;font-weight:700}
.rucom-mentionit small{color:var(--muted);font-size:12px;margin-left:2px}
.rucom-mentionit.rucom-on,.rucom-mentionit:hover{background:var(--soft)}
.rucom-mentionit-ic{width:26px;height:26px;flex:0 0 auto;border-radius:8px;background:var(--ru-accent-doux,rgba(44,111,181,.12));color:var(--ru-accent,#1d5c8f);display:grid;place-items:center}
.rucom-mentionit-ic svg{width:15px;height:15px}

/* Editeur de profil */
.rucom-editor{max-width:520px;padding:20px 18px 16px}
.rucom-ed-title{margin:0 0 16px;font-size:18px;font-weight:800}
.rucom-ed-field{margin-bottom:15px}
.rucom-ed-field>label{display:block;font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#88888f;margin-bottom:6px}
.rucom-ed-input{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:14px;font-family:inherit;background:#fff}
.rucom-ed-ta{min-height:82px;resize:vertical}
.rucom-ed-cover{height:110px;border-radius:12px;background:linear-gradient(135deg,#eef2f6,#d3e0ec 60%,var(--ru-accent-filet,rgba(44,111,181,.45)));background-size:cover;background-position:center;margin-bottom:8px}
/* La previsualisation reprend le cadrage horizontal compact du profil. */
.rucom-ed-cover.rucom-ed-cover--photo{height:auto;aspect-ratio:5.6 / 1;min-height:0;background:#0e2438;overflow:hidden}
.rucom-ed-cover.rucom-ed-cover--photo>img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 65%}
.rucom-ed-cover-focus{margin-top:10px;padding:10px 12px;border:1px solid var(--line,rgba(17,17,20,.10));border-radius:12px;background:#fafbfc}
.rucom-ed-cover-focus-title{margin:0 0 8px;font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted,#6b6b73)}
.rucom-ed-range{display:grid;grid-template-columns:74px minmax(0,1fr) 44px;align-items:center;gap:10px;margin:8px 0}
.rucom-ed-range>span{font-size:12.5px;font-weight:700;color:#33333b}
.rucom-ed-range>input[type=range]{width:100%;margin:0}
.rucom-ed-range>b{font-size:12px;color:var(--muted,#6b6b73);text-align:right;font-variant-numeric:tabular-nums}
.rucom-ed-avatar{margin-bottom:8px}
.rucom-ed-avatar .rucom-av{width:84px;height:84px;font-size:26px}
.rucom-ed-pa{display:flex;gap:8px;align-items:center}
.rucom-ed-url{flex:1;border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-size:13px;font-family:inherit}
.rucom-tip{display:block;color:var(--muted);font-size:12px;margin-top:6px}
.rucom-ed-radio{display:flex;gap:20px;font-size:14px}
.rucom-ed-radio label{display:flex;align-items:center;gap:6px;cursor:pointer}
.rucom-ed-check{display:flex;align-items:center;gap:8px;font-size:14px;margin:9px 0;cursor:pointer}
.rucom-ed-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}
.rucom-ed-actions .rucom-btn{flex:0 0 auto;min-width:110px}

/* Les modales/story sont hors de .rucom-app : on leur donne les memes variables */
.rucom-modal,.rucom-story-view,.rucom-pmenu{--or:var(--ru-accent,#1d5c8f);--or-d:var(--ru-accent,#1d5c8f);--ink:#111114;--muted:#6b6b73;--line:rgba(17,17,20,.10);--soft:#f4f4f6;--g1:linear-gradient(135deg,#111,#2f2f2f 60%,#000);color:var(--ru-texte,#0e2438)}
.rucom-editor input,.rucom-editor textarea{accent-color:var(--ru-accent,#1d5c8f)}

/* ============= Editeur : onglets + compact + sous la barre admin (0.10) ============= */
/* Une modale se pose au CENTRE de l'ecran, pas contre son bord haut. Cette
   regle avait ete ecrite pour l'editeur, qui est haut ; elle s'appliquait a
   toutes les modales du logiciel, y compris a celles de trois lignes, qui
   flottaient tout en haut. L'editeur, lui, a deja sa propre hauteur maximale :
   centrer ne le fait pas deborder. */
.rucom-modal{align-items:center}
body.admin-bar .rucom-modal{padding-top:44px}
.rucom-editor{max-height:calc(100vh - 70px);display:flex;flex-direction:column;padding:14px 18px;margin:12px auto}
body.admin-bar .rucom-editor{max-height:calc(100vh - 112px)}
.rucom-ed-title{margin:0 0 10px}
.rucom-ed-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:12px;flex:0 0 auto}
.rucom-ed-tab{padding:9px 14px;font-weight:700;font-size:13.5px;color:#8a8a92;border:0;background:none;border-bottom:3px solid transparent;cursor:pointer;font-family:inherit}
.rucom-ed-tab.rucom-on{color:var(--ru-texte,#0e2438);border-bottom-color:var(--or)}
.rucom-ed-body{overflow:auto;flex:1;min-height:0}
.rucom-ed-note{background:var(--ru-accent-doux,rgba(44,111,181,.12));border:1px solid var(--ru-accent-filet,rgba(44,111,181,.45));border-radius:10px;padding:10px 12px;font-size:12.5px;color:var(--ru-accent,#1d5c8f);margin-bottom:14px}
.rucom-ed-ro{padding:9px 12px;background:var(--soft);border-radius:10px;font-size:14px}
.rucom-ed-chips{display:flex;flex-wrap:wrap;gap:6px}
.rucom-chip{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF);font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px}
.rucom-p-pro{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}
.rucom-p-pro .rucom-chip{background:var(--or);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-pro-loc{color:var(--muted);font-size:13px}
.rucom-ed-actions{border-top:1px solid var(--line);padding-top:12px;margin-top:8px;flex:0 0 auto}

/* Bio repliee sur 2 lignes + fleche (garde l'interface propre) */
.rucom-bio{margin-top:8px}
.rucom-bio-text{font-size:14px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rucom-bio.rucom-open .rucom-bio-text{-webkit-line-clamp:unset;display:block}
.rucom-bio-toggle{display:inline-flex;align-items:center;gap:3px;color:var(--or-d);font-size:12.5px;font-weight:700;cursor:pointer;margin-top:3px}
.rucom-bio-toggle svg{width:14px;height:14px;transition:transform .15s ease}
.rucom-bio.rucom-open .rucom-bio-toggle svg{transform:rotate(180deg)}

/* ============ Choix de publication : Publication (texte) vs Photo (0.12) ============ */
.rucom-cmp-modes{display:flex;gap:8px;margin-bottom:10px}
.rucom-cmp-mode{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;padding:9px 10px;
  border:1px solid var(--line);background:#fff;border-radius:12px;font-family:inherit;font-size:13.5px;
  font-weight:700;color:#6b6b73;cursor:pointer;transition:all .12s ease}
.rucom-cmp-mode svg{width:18px;height:18px}
.rucom-cmp-mode.rucom-on{border-color:var(--or);background:var(--ru-accent-doux,rgba(44,111,181,.12));color:var(--ru-texte,#0e2438)}
.rucom-cmp-mode:hover{border-color:var(--or)}

/* Menu du profil (bouton chevron) */
.rucom-pmenu{position:absolute;z-index:80;min-width:210px;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.16);padding:6px;display:flex;flex-direction:column;
  animation:rucomFade .12s ease}
.rucom-pmenu-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:0;background:none;
  border-radius:9px;font-family:inherit;font-size:14px;color:var(--ru-texte,#0e2438);cursor:pointer;text-decoration:none;text-align:left;width:100%}
.rucom-pmenu-item svg{width:18px;height:18px;color:#6b6b73;flex:0 0 auto}
.rucom-pmenu-item span{flex:1 1 auto;text-align:left;white-space:nowrap}
.rucom-pmenu-item:hover{background:var(--soft)}

/* Petit toast (confirmation discrete) */
.rucom-toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);z-index:90;
  background:var(--ru-texte,#0e2438);color:#fff;font-size:13.5px;font-weight:600;padding:11px 18px;border-radius:999px;
  box-shadow:0 8px 24px rgba(0,0,0,.28);opacity:0;transition:opacity .2s ease,transform .2s ease;pointer-events:none}
.rucom-toast.rucom-show{opacity:1;transform:translate(-50%,0)}

/* Retirer la photo choisie dans le composeur */
.rucom-preview{position:relative}
.rucom-preview-x{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;border:0;
  background:rgba(0,0,0,.6);color:#fff;font-size:19px;line-height:1;cursor:pointer;display:grid;place-items:center;z-index:2}
.rucom-preview-x:hover{background:rgba(0,0,0,.8)}

/* Fil vide (message discret, sans banniere) */
.rucom-feed-empty{padding:44px 24px;text-align:center;color:var(--muted);font-size:14px;
  background:#fff;border:1px solid var(--line);border-radius:16px}

/* Explorer : annuaire + recherche dynamique */
.rucom-x-head{padding:16px 16px 4px;font-size:20px;font-weight:800}
.rucom-x-search{display:block;margin:8px 16px 6px;width:100%;max-width:460px;border:1px solid var(--line);border-radius:12px;
  padding:12px 14px;font-size:14px;font-family:inherit;background:var(--soft);box-sizing:border-box}
@media(max-width:600px){.rucom-x-search{max-width:calc(100% - 32px)}}
.rucom-x-search:focus{outline:none;border-color:var(--or);background:#fff}
.rucom-x-list{padding:6px 8px 20px}
.rucom-x-row{display:flex;align-items:center;gap:12px;padding:10px 10px;border-radius:12px}
.rucom-x-row:hover{background:var(--soft)}
.rucom-x-row .rucom-av{width:46px;height:46px;font-size:16px;flex:0 0 auto}
.rucom-x-bd{flex:1;min-width:0;cursor:pointer}
.rucom-x-bd b{display:block;font-size:14.5px}
.rucom-x-bd small{display:block;color:var(--muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ================= 0.15 : emoji, menus, promos, compte, explorer ================= */
/* Reactions en vrais emoji + choix au survol (facon Facebook) */
.rucom-react-wrap{position:relative;display:inline-flex}
.rucom-react{font-size:20px;line-height:1;display:inline-grid;place-items:center;min-width:34px;height:34px}
.rucom-react svg{width:24px;height:24px}
.rucom-react.rucom-on{transform:none}
.rucom-react-pick{position:absolute;bottom:calc(100% + 8px);left:-6px;transform:scale(.92);transform-origin:bottom left;
  display:flex;gap:4px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 11px;
  box-shadow:0 12px 30px rgba(0,0,0,.18);opacity:0;pointer-events:none;transition:opacity .12s ease,transform .12s ease;z-index:40;white-space:nowrap}
.rucom-react-wrap:hover .rucom-react-pick,.rucom-react-pick.rucom-open{opacity:1;pointer-events:auto;transform:scale(1)}
.rucom-react-emoji{background:none;border:0;cursor:pointer;font-size:27px;line-height:1;padding:2px;border-radius:50%;transition:transform .1s ease}
.rucom-react-emoji:hover{transform:scale(1.4) translateY(-4px)}

/* Menu compte (haut a droite, style Player One) + danger */
.rucom-acctbar{display:flex;justify-content:flex-end;padding:8px 12px 0}
.rucom-acct{background:none;border:0;padding:0;cursor:pointer;border-radius:50%}
.rucom-acct .rucom-av{border:2px solid var(--line)}
.rucom-acctmenu{min-width:240px}
.rucom-acct-head{display:flex;align-items:center;gap:11px;padding:10px 11px 12px;border-bottom:1px solid var(--line);margin-bottom:6px}
.rucom-acct-head .rucom-av{width:44px;height:44px;font-size:15px}
.rucom-acct-id b{font-size:14.5px;display:block}
.rucom-acct-id small{color:var(--muted);font-size:12px;display:block}
.rucom-acct-url{color:var(--or-d)!important;font-weight:600;margin-top:2px;word-break:break-all}
.rucom-pmenu-item.rucom-danger{color:#b40000}
.rucom-pmenu-item.rucom-danger svg{color:#b40000}
.rucom-pmenu-div{height:1px;background:var(--line);margin:6px 6px}
/* Ligne systeme dans un fil (ex. "X a quitte le groupe") : centree, discrete. */
.rucom-msg-sys{display:flex;justify-content:center;margin:10px 0}
.rucom-msg-sys span{background:var(--soft);color:var(--muted);font-size:12px;font-weight:600;
  padding:5px 12px;border-radius:999px;max-width:80%;text-align:center}
/* Choix "prevenir les autres" a la sortie d'un groupe. */
.rucom-leave-opt{display:flex;align-items:center;gap:9px;margin:12px 0 4px;font-size:14px;cursor:pointer}
.rucom-leave-opt input{width:16px;height:16px;accent-color:var(--ink)}
.rucom-btn.rucom-danger-btn2{background:#b40000;color:#fff;border:0}
.rucom-btn.rucom-danger-btn2:hover{background:#8f0000}

/* Liens de promotion dans le menu lateral (Player One, Bottin) */
.rucom-promos{margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
.rucom-promos-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#9a9aa2;padding:0 12px 4px}
.rucom-nav-ext{text-decoration:none}
.rucom-nav-ext:hover{background:var(--soft)}

/* Explorer : deux onglets (Publications / Membres) */
.rucom-xtabs{display:flex;border-bottom:1px solid var(--line);margin:6px 12px 0}
.rucom-xtab{flex:1;text-align:center;padding:12px 8px;font-weight:800;font-size:14px;color:#8a8a92;
  background:none;border:0;border-bottom:3px solid transparent;cursor:pointer;font-family:inherit}
.rucom-xtab.rucom-on{color:var(--ru-texte,#0e2438);border-bottom-color:var(--or)}

/* Vues sans colonne de droite (Explorer, Messages) */
@media (min-width:1000px){
  .rucom-app.rucom-no-right .rucom-shell{grid-template-columns:250px minmax(0,1200px);justify-content:start}
  .rucom-app.rucom-no-right .rucom-right{display:none}
  /* Garde-fou A TOUTE EPREUVE : sur ces vues (dont un groupe), le contenu se cale
     A GAUCHE, juste apres le rail. On ajoute une 3e colonne 1fr qui AVALE tout
     l'espace libre a DROITE : le rail et le contenu sont donc pousses a gauche
     meme si un autre reglage tente de centrer (on ne depend plus de justify). */
  .rucom-app.rucom-view-wide .rucom-shell,
  .rucom-app.rucom-no-right .rucom-shell{grid-template-columns:250px minmax(0,1200px) 1fr !important;justify-content:flex-start !important}
  .rucom-app.rucom-view-wide.rucom-rail-min .rucom-shell,
  .rucom-app.rucom-no-right.rucom-rail-min .rucom-shell{grid-template-columns:76px minmax(0,1400px) 1fr !important}
}


/* Correctif : groupe entre les onglets du profil et la grille */
.rucom-gallery{margin-top:10px}
.rucom-ptabs{margin-bottom:2px}

/* Correctif : la modale Infos pro ne deborde pas et reste alignee */
.rucom-ed-pane{width:100%}
.rucom-ed-pane .rucom-ed-input,.rucom-ed-pane .rucom-ed-ta,.rucom-ed-pane .rucom-ed-ro,.rucom-ed-pane .rucom-ed-chips{max-width:100%;box-sizing:border-box}
.rucom-ed-body{padding-right:2px}

/* ================= Messagerie 2 colonnes (forum + FB/IG/LinkedIn) ================= */
.rucom-msgr{display:grid;grid-template-columns:1fr;height:calc(100vh - 96px);min-height:460px;
  border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fff}
body.admin-bar .rucom-msgr{height:calc(100vh - 140px)}
.rucom-conv-list{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line)}
.rucom-conv-items{flex:1;overflow:auto;min-height:0}
.rucom-chat-pane{display:flex;flex-direction:column;min-height:0;background:#fafafb}
.rucom-chat-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:14px;padding:24px;text-align:center}
.rucom-chat-empty svg{width:40px;height:40px;opacity:.5}
.rucom-chat-h{display:flex;align-items:center;gap:11px;padding:12px 14px;border-bottom:1px solid var(--line);background:#fff;flex:0 0 auto}
.rucom-chat-h .rucom-av{width:40px;height:40px;font-size:14px}
.rucom-chat-h .rucom-who b{font-size:15px}
.rucom-chat-h .rucom-who small{display:block;color:#22c55e;font-size:12px;font-weight:600}
.rucom-chat-pane .rucom-thread{flex:1;overflow:auto;min-height:0;background:#fafafb}
.rucom-chat-back{display:none}
.rucom-conv.rucom-on{background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-send svg{width:20px;height:20px;display:block}
.rucom-chatbar .rucom-send{width:40px;height:40px;border-radius:50%;background:var(--or);color:var(--ru-sur-accent,#FFFFFF);display:grid;place-items:center;flex:0 0 auto}
@media (min-width:1000px){
  .rucom-msgr{grid-template-columns:320px minmax(0,1fr)}
}
@media (max-width:999px){
  .rucom-msgr{position:relative}
  .rucom-chat-pane{position:absolute;inset:0;transform:translateX(100%);transition:transform .2s ease;z-index:5}
  .rucom-msgr.rucom-chat-open .rucom-chat-pane{transform:translateX(0)}
  .rucom-chat-back{display:grid}
}

/* 0.17 : recherche de membres dans la messagerie + respiration */
.rucom-m-head{padding:16px 16px 6px}
.rucom-m-search{margin:6px 14px 12px}
.rucom-msg-newhint{padding:12px 15px 4px;font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#9a9aa2}
.rucom-chat-h{gap:12px}
.rucom-chat-pane .rucom-thread{padding-top:16px}

/* 0.18 : colonnes Tendances / Publications recentes (droite) */
.rucom-reflist{max-height:300px;overflow-y:auto;scrollbar-width:thin}
.rucom-ref{display:flex;align-items:center;gap:10px;padding:8px 14px;cursor:pointer}
.rucom-ref:hover{background:var(--soft)}
.rucom-ref-thumb{width:44px;height:44px;border-radius:9px;overflow:hidden;flex:0 0 auto;background:var(--g1);display:grid;place-items:center;color:var(--or);font-weight:900}
.rucom-ref-thumb img{width:100%;height:100%;object-fit:cover}
.rucom-ref-noimg{font-size:18px}
.rucom-ref-bd{flex:1;min-width:0;line-height:1.25}
.rucom-ref-bd small{display:block;font-weight:700;font-size:12.5px;color:var(--ru-texte,#0e2438);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-ref-bd span{display:block;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-ref-likes{flex:0 0 auto;font-size:11.5px;font-weight:700;color:var(--muted);white-space:nowrap}

/* 0.19 : recherche de membres dynamique (colonne de droite) */
.rucom-r-searchwrap{position:relative;margin-bottom:16px}
.rucom-r-searchwrap .rucom-r-search{margin-bottom:0}
.rucom-r-results{position:absolute;top:100%;left:0;right:0;margin-top:6px;background:#fff;border:1px solid var(--line);
  border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.16);z-index:25;max-height:340px;overflow:auto}
.rucom-r-result{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer}
.rucom-r-result:hover{background:var(--soft)}
.rucom-r-result .rucom-av{width:34px;height:34px;font-size:12px}
.rucom-r-rbd{min-width:0}
.rucom-r-rbd b{display:block;font-size:13.5px}
.rucom-r-rbd small{display:block;color:var(--muted);font-size:12px}

/* 0.19 : commentaires (j'aime, reponses, edition) */
.rucom-cmt{display:flex;gap:9px;padding:2px 0}
.rucom-cmt .rucom-av{width:32px;height:32px;font-size:12px}
.rucom-cmt .rucom-bd{flex:1;min-width:0}
.rucom-cmt-bubble{background:var(--soft);border-radius:14px;padding:8px 12px;display:inline-block;max-width:100%}
.rucom-cmt-bubble b{font-size:13px;margin-right:5px;cursor:pointer}
.rucom-cmt-body{font-size:14px;line-height:1.4;word-wrap:break-word}
.rucom-cmt .rucom-meta{display:flex;gap:14px;align-items:center;padding:4px 12px 2px;font-size:12px;color:var(--muted)}
.rucom-cmt-act{cursor:pointer;font-weight:700}
.rucom-cmt-act:hover{color:var(--ru-texte,#0e2438)}
.rucom-cmt-act.rucom-on{color:#e0245e}
.rucom-edited{font-style:italic}
.rucom-cmt-replies{margin:2px 0 2px 40px;display:flex;flex-direction:column;gap:2px}
.rucom-cmt-edit{margin-top:6px}
.rucom-cmt-edit textarea{width:100%;border:1px solid var(--line);border-radius:12px;padding:9px 12px;font-size:14px;font-family:inherit;resize:vertical;min-height:44px}
.rucom-cmt-edit-btns{display:flex;gap:8px;justify-content:flex-end;margin-top:6px}
.rucom-cmt-edit-btns .rucom-btn{padding:6px 14px;font-size:13px}
.rucom-cmtbar.rucom-replying .rucom-q{outline:2px solid var(--or)}

/* 0.20 : "Voir tout" sous les suggestions */
.rucom-see-all{padding:10px 14px 6px;color:var(--or-d);font-weight:800;font-size:13px;cursor:pointer}
.rucom-see-all:hover{text-decoration:underline}

/* 0.20 : avatar de compte en haut a droite (au-dessus de la recherche membres) */
.rucom-r-acct{display:flex;justify-content:flex-end;margin-bottom:12px;background:#fff;padding-bottom:8px}
.rucom-r-acct .rucom-acct{background:none;border:0;padding:0;cursor:pointer;border-radius:50%}
.rucom-r-acct .rucom-av{width:38px;height:38px;border:2px solid var(--line)}

/* 0.21 : messagerie pro (separateurs de jour, avatars, Vu, envoi instantane) */
.rucom-msg-day{text-align:center;color:var(--muted);font-size:11.5px;font-weight:700;margin:12px 0 6px;text-transform:uppercase;letter-spacing:.04em}
.rucom-msgrow{display:flex;align-items:flex-end;gap:8px;margin:2px 0}
.rucom-msgrow.rucom-out{justify-content:flex-end}
.rucom-msgrow.rucom-in .rucom-av{width:26px;height:26px;font-size:10px;margin-bottom:2px;flex:0 0 auto}
.rucom-msgrow .rucom-bub{margin:0}
.rucom-bub.rucom-sending{opacity:.6}
.rucom-seen{text-align:right;color:var(--muted);font-size:11px;font-weight:600;padding:2px 4px 0}

/* 0.22 : Explorer membres en grille 3 colonnes + pagination */
.rucom-mgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:14px}
.rucom-mcard{border:1px solid var(--line);border-radius:14px;padding:16px 12px 14px;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;transition:box-shadow .15s ease}
.rucom-mcard:hover{box-shadow:0 6px 20px rgba(0,0,0,.08)}
.rucom-mcard-top{display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;width:100%}
.rucom-mcard .rucom-av{width:58px;height:58px;font-size:18px}
.rucom-mcard b{font-size:14px;line-height:1.2}
.rucom-mcard small{color:var(--muted);font-size:12px}
.rucom-mcard-h{color:var(--muted);font-size:12px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rucom-mcard .rucom-follow-mini{margin-top:8px;width:100%;padding:8px;border-radius:10px}
/* Fiche membre enrichie : metier + pays + pastille verifie Bottin. */
.rucom-vcheck{display:inline-flex;align-items:center}
.rucom-mcard-meta{display:flex;flex-direction:column;align-items:center;gap:2px;margin-top:2px}
.rucom-mcard-metier{font-size:12.5px;font-weight:700;color:#2a2a30}
.rucom-mcard-place{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}
.rucom-mcard-place svg{width:13px;height:13px}
.rucom-mcard-bottin{display:inline-flex;align-items:center;gap:5px;margin-top:6px;font-size:10.5px;font-weight:800;letter-spacing:.02em;color:#0a6b2e;background:#e7f6ec;border:1px solid #bfe6cc;border-radius:999px;padding:2px 8px}
.rucom-mcard-bottin svg{width:12px;height:12px}
.rucom-pager{display:flex;align-items:center;justify-content:center;gap:16px;padding:14px 16px 20px}
.rucom-pager-n{font-weight:700;font-size:13px;color:var(--muted)}
.rucom-pager .rucom-btn{min-width:100px}
@media (max-width:820px){ .rucom-mgrid{grid-template-columns:repeat(2,1fr)} }
@media (max-width:520px){ .rucom-mgrid{grid-template-columns:1fr} }
/* Explorer - vue LISTE des membres (choix d'affichage grille/liste) */
.rucom-mlist{display:flex;flex-direction:column;gap:2px;padding:8px}
.rucom-mrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:12px}
.rucom-mrow:hover{background:#f7f7f8}
.rucom-mrow-l{display:flex;align-items:center;gap:12px;min-width:0;cursor:pointer;flex:1}
.rucom-mrow-bd{min-width:0}
.rucom-mrow-bd b{display:block;font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-mrow-bd small{display:block;font-size:12px;color:var(--muted,#6b6b73);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-mrow .rucom-follow-mini{flex:0 0 auto}
/* Modale claire des participants d'un evenement */
.rucom-att-card{max-width:420px;width:calc(100% - 32px)}
.rucom-att-count{display:inline-block;font-size:13px;font-weight:800;color:var(--muted,#6b6b73)}
.rucom-att-list{max-height:60vh;overflow:auto;margin-top:8px}
.rucom-att-row{display:flex;align-items:center;gap:12px;padding:8px 6px;border-radius:12px;cursor:pointer}
.rucom-att-row:hover{background:#f4f4f5}
.rucom-att-bd b{display:block;font-size:14px;font-weight:700}
.rucom-att-bd small{display:block;font-size:12px;color:var(--muted,#6b6b73)}
.rucom-evp-kebab{padding:6px 9px}
.rucom-evp-kebab svg{width:18px;height:18px}

/* 0.24 : medias riches (video, audio, documents), multi-fichiers, pastille messages */
.rucom-badge-msg{position:relative}
.rucom-badge-msg[data-count]:not([data-count="0"])::after{content:attr(data-count);position:absolute;top:-6px;right:-8px;background:var(--or);color:var(--ru-sur-accent,#FFFFFF);font-size:10px;font-weight:800;min-width:15px;height:15px;border-radius:8px;display:grid;place-items:center;padding:0 4px}
.rucom-media-wrap{width:100%;background:var(--g1);display:block}
.rucom-media-wrap.rucom-mk-image img{width:100%;display:block}
.rucom-media-wrap.rucom-ar{overflow:hidden}
.rucom-media-wrap.rucom-ar img,.rucom-media-wrap.rucom-ar video{width:100%;height:100%;object-fit:cover;display:block}
.rucom-media-video{width:100%;max-height:70vh;display:block;background:#000}
.rucom-media-audio{padding:12px 14px;background:var(--g1);display:flex;flex-direction:column;gap:8px}
.rucom-media-audio .rucom-audio-name{font-size:12px;font-weight:700;color:var(--muted);word-break:break-word}
.rucom-media-audio audio{width:100%}
.rucom-media-doc{display:flex;align-items:center;gap:12px;padding:14px;margin:0;background:var(--g1);border:1px solid var(--line);border-radius:12px;text-decoration:none;color:inherit}
.rucom-media-doc svg{width:30px;height:30px;flex:0 0 auto;color:var(--or)}
.rucom-media-doc .rucom-doc-bd{flex:1;min-width:0}
.rucom-media-doc .rucom-doc-bd b{display:block;font-size:14px;word-break:break-word;line-height:1.25}
.rucom-media-doc .rucom-doc-bd small{color:var(--muted);font-size:12px}
.rucom-media-doc .rucom-doc-dl{font-size:12px;font-weight:800;color:var(--or)}
.rucom-media-grid{display:grid;gap:3px;grid-template-columns:repeat(2,1fr)}
.rucom-media-grid.rucom-n1{grid-template-columns:1fr}
.rucom-media-grid .rucom-media-cell{position:relative;aspect-ratio:1/1;overflow:hidden;background:var(--g1)}
.rucom-media-grid .rucom-media-cell img,.rucom-media-grid .rucom-media-cell video{width:100%;height:100%;object-fit:cover}
.rucom-media-grid .rucom-media-cell.rucom-mk-doc,.rucom-media-grid .rucom-media-cell.rucom-mk-audio{aspect-ratio:auto}
.rucom-gcell-ic{width:100%;height:100%;display:grid;place-items:center;background:var(--g1)}
.rucom-gcell-ic svg{width:34px;height:34px;color:var(--muted)}
/* Pieces jointes du composer (apercu multi-fichiers) */
.rucom-preview{display:flex;flex-wrap:wrap;gap:8px;max-height:none}
.rucom-att{position:relative;width:84px}
.rucom-att img,.rucom-att .rucom-att-ic{width:84px;height:84px;border-radius:10px;object-fit:cover;display:grid;place-items:center;background:var(--g1)}
.rucom-att .rucom-att-ic svg{width:26px;height:26px;color:var(--muted)}
.rucom-att small{display:block;font-size:10px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:84px}
.rucom-att-x{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:0;background:rgba(0,0,0,.65);color:#fff;font-size:15px;line-height:1;cursor:pointer}
.rucom-att-x:hover{background:rgba(0,0,0,.85)}
/* Medias dans les bulles de message */
.rucom-bub .rucom-msg-media{margin:-2px 0 4px}
.rucom-bub .rucom-msg-media img{max-width:220px;border-radius:12px;display:block}
.rucom-bub .rucom-msg-media video{max-width:240px;border-radius:12px;display:block;background:#000}
.rucom-bub .rucom-msg-media .rucom-media-doc{background:rgba(0,0,0,.06);min-width:200px}
.rucom-bub .rucom-msg-media .rucom-media-audio{padding:6px 0;background:transparent}
.rucom-bub .rucom-bub-tx{display:block}
.rucom-chat-attach{flex:0 0 auto}

/* 0.25 : carte document pro, bulles media sans fond, reactions message, mur profil, notifs */
/* Carte document : blanche, nette, icone or, bouton telecharger clair (fini la banane) */
.rucom-media-doc{display:flex;align-items:center;gap:12px;padding:12px 14px;margin:0;background:#fff;border:1px solid var(--line);border-radius:12px;text-decoration:none;color:var(--ru-texte,#0e2438);box-shadow:0 1px 3px rgba(0,0,0,.05);max-width:340px}
.rucom-media-doc:hover{box-shadow:0 4px 14px rgba(0,0,0,.1)}
.rucom-media-doc .rucom-doc-ic{width:42px;height:42px;flex:0 0 auto;border-radius:9px;background:var(--g1);display:grid;place-items:center}
.rucom-media-doc .rucom-doc-ic svg{width:22px;height:22px;color:var(--or)}
.rucom-media-doc .rucom-doc-bd{flex:1;min-width:0}
.rucom-media-doc .rucom-doc-bd b{display:block;font-size:13.5px;font-weight:700;word-break:break-word;line-height:1.25}
.rucom-media-doc .rucom-doc-bd small{color:var(--muted);font-size:12px}
.rucom-media-doc .rucom-doc-dl{flex:0 0 auto;font-size:12px;font-weight:800;color:var(--ru-sur-accent,#FFFFFF);background:var(--or);padding:6px 12px;border-radius:999px}
/* Bulle qui contient un media : pas de fond colore (style Messenger), le media parle seul */
.rucom-bub.rucom-has-media{background:transparent!important;padding:0;max-width:78%}
.rucom-bub.rucom-has-media .rucom-msg-media{margin:0 0 4px}
.rucom-bub.rucom-has-media .rucom-bub-tx{padding:8px 12px;border-radius:14px;background:#ececed}
.rucom-msgrow.rucom-out .rucom-bub.rucom-has-media .rucom-bub-tx{background:var(--or);margin-left:auto;display:inline-block}
.rucom-bub .rucom-msg-media img{max-width:240px;width:100%;border-radius:14px;display:block;cursor:pointer}
.rucom-bub .rucom-msg-media video{max-width:260px;border-radius:14px;display:block;background:#000}
.rucom-bub .rucom-msg-media .rucom-media-doc{max-width:280px}
/* Reactions sur un message : bouton au survol + selecteur, et pastille sous la bulle */
.rucom-msg-col{display:flex;flex-direction:column;max-width:78%}
.rucom-msgrow.rucom-out .rucom-msg-col{align-items:flex-end}
.rucom-msgrow.rucom-in .rucom-msg-col{align-items:flex-start}
.rucom-msg-rwrap{position:relative;display:flex;align-items:center;align-self:flex-end;opacity:0;transition:opacity .12s ease}
.rucom-msgrow:hover .rucom-msg-rwrap{opacity:1}
.rucom-msg-rbtn{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--muted);display:grid;place-items:center;cursor:pointer;padding:0}
.rucom-msg-rbtn svg{width:15px;height:15px}
.rucom-msg-pick{position:absolute;bottom:32px;left:50%;transform:translateX(-50%) scale(.9);transform-origin:bottom center;display:none;gap:2px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:4px 6px;box-shadow:0 6px 20px rgba(0,0,0,.15);z-index:20}
.rucom-msg-rwrap:hover .rucom-msg-pick{display:flex}
.rucom-msg-pick .rucom-react-emoji{border:0;background:none;font-size:20px;line-height:1;cursor:pointer;padding:2px;transition:transform .1s ease}
.rucom-msg-pick .rucom-react-emoji:hover{transform:scale(1.3)}
.rucom-msg-chip{margin-top:-6px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:1px 7px;font-size:12px;line-height:1.5;box-shadow:0 1px 3px rgba(0,0,0,.08);cursor:pointer;display:inline-flex;align-items:center;gap:3px;z-index:2}
.rucom-msg-chip b{font-weight:700;color:var(--muted);font-size:11px}
.rucom-msg-chip.rucom-mine{border-color:var(--or)}
/* Compteurs like/commentaires sur les cellules de la grille (facon Instagram) */
.rucom-gcell-stats{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:16px;background:rgba(0,0,0,.42);color:#fff;font-weight:700;font-size:14px;opacity:0;transition:opacity .15s ease}
.rucom-gcell:hover .rucom-gcell-stats{opacity:1}
.rucom-gcell-stats span{display:inline-flex;align-items:center;gap:5px}
.rucom-gcell-stats svg{width:17px;height:17px}
/* Vue MUR du profil (publications en cartes facon Facebook) */
.rucom-p-posts.rucom-wall{display:block;max-width:600px;margin:0 auto;padding:8px 0}
.rucom-p-posts.rucom-wall .rucom-post{border:1px solid var(--line);border-radius:14px;margin:0 10px 14px}
/* Bouton d'attache avec libelle dans le composer */
.rucom-attach-lbl{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}
.rucom-attach-lbl svg{width:20px;height:20px}
.rucom-ic.rucom-cam .rucom-attach-lbl{pointer-events:none}
/* Notifications : en-tete avec actions + X par ligne */
.rucom-n-head2{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 16px 10px;font-size:22px;font-weight:800;flex-wrap:wrap}
.rucom-n-actions{display:flex;gap:8px}
.rucom-btn.rucom-sm{padding:6px 12px;font-size:12.5px;min-width:0}
.rucom-notif{position:relative}
.rucom-notif-x{position:absolute;top:50%;right:12px;transform:translateY(-50%);width:26px;height:26px;border-radius:50%;border:0;background:transparent;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s ease}
.rucom-notif:hover .rucom-notif-x{opacity:1}
.rucom-notif-x:hover{background:var(--g1);color:var(--ru-texte,#0e2438)}
@media (max-width:520px){ .rucom-notif-x{opacity:1} .rucom-msg-rwrap{opacity:1} }

/* 0.26 : selecteur de reaction au CLIC (gros emoji, stable), pouce par defaut */
.rucom-reactpop{position:absolute;z-index:1000;display:flex;gap:2px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px 8px;box-shadow:0 8px 24px rgba(0,0,0,.16)}
.rucom-rp-emoji{border:0;background:none;cursor:pointer;padding:4px;border-radius:50%;line-height:1;transition:transform .12s ease,background .12s ease}
.rucom-rp-emoji span{font-size:21px;line-height:1;display:block;pointer-events:none}
.rucom-rp-emoji:hover{transform:scale(1.22) translateY(-1px);background:var(--soft)}
.rucom-ic.rucom-react.rucom-on{color:var(--or)}
.rucom-ic.rucom-react svg{width:22px;height:22px}
.rucom-msg-rbtn svg{width:16px;height:16px}
@media (max-width:520px){ .rucom-rp-emoji span{font-size:20px} }

/* 0.27 : mur plus large, presence en ligne, connexion, carte doc message, espacements */
/* Profil : le MUR occupe toute la largeur (fini la petite colonne) */
.rucom-p-posts.rucom-wall{display:block;max-width:100%;margin:0;padding:10px 0}
.rucom-p-posts.rucom-wall .rucom-post{border:1px solid var(--line);border-radius:14px;margin:0 0 16px}
/* Carte document dans une bulle : largeur fixe, plus de retour lettre par lettre */
.rucom-msg-col{max-width:82%}
.rucom-bub.rucom-has-media{max-width:300px}
.rucom-bub .rucom-msg-media .rucom-media-doc{width:250px;max-width:78vw;box-sizing:border-box}
.rucom-bub .rucom-msg-media .rucom-media-doc .rucom-doc-bd b{overflow-wrap:anywhere}
/* Liste des conversations + en-tete : titres tronques proprement */
.rucom-conv .rucom-bd b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.rucom-chat-h .rucom-who{min-width:0;flex:1}
.rucom-chat-h .rucom-who b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Widget de presence en ligne (accueil, entre recherche et suggestions) */
.rucom-pres-tabs{display:flex;gap:6px;padding:2px 12px 10px}
.rucom-pres-tab{flex:1;border:0;background:var(--soft);color:var(--muted);font-weight:700;font-size:12.5px;padding:7px;border-radius:9px;cursor:pointer;font-family:inherit;transition:background .15s ease,color .15s ease}
.rucom-pres-tab.rucom-on{background:var(--or);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-pres-list{max-height:320px;overflow-y:auto;padding:0 6px 8px}
.rucom-pres-row{display:flex;align-items:center;gap:11px;padding:8px 8px;cursor:pointer;border-radius:11px}
.rucom-pres-row:hover{background:var(--soft)}
.rucom-pres-av{position:relative;display:inline-flex;flex:0 0 auto}
.rucom-pres-av.rucom-online::after{content:'';position:absolute;right:0;bottom:0;width:11px;height:11px;border-radius:50%;background:#22c55e;border:2px solid #fff}
.rucom-pres-bd{min-width:0}
.rucom-pres-bd b{display:block;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-pres-bd small{color:var(--muted);font-size:12px}
.rucom-pres-av.rucom-online ~ .rucom-pres-bd small{color:#16a34a;font-weight:700}
/* Ecran de connexion (non connecte) */
.rucom-login{max-width:440px;margin:56px auto;text-align:center;padding:34px 24px;border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 30px rgba(0,0,0,.05)}
.rucom-login-logo{height:54px;margin-bottom:18px}
.rucom-login h2{font-size:23px;margin:0 0 10px}
.rucom-login p{color:var(--muted);margin:0 0 24px;line-height:1.5}
.rucom-login-btn{display:inline-block;padding:13px 36px;font-size:15px;font-weight:800}
/* Espacements : options du menu gauche plus aerees et lisibles */
.rucom-nav-list{gap:4px}
.rucom-nav{padding:12px 14px;gap:16px}
.rucom-pub{margin:14px 0 4px}
.rucom-promos{margin-top:18px;padding-top:14px}
.rucom-promos .rucom-nav{padding:11px 14px}
.rucom-promos-h{padding:0 14px 8px}

/* 0.28 : corrections visuelles, reactions +, messagerie premium, carte doc grille */
/* X de suppression d'une notification : visible au survol (fond noir, X or) */
.rucom-notif-x:hover{background:var(--ru-accent-fonce,#174a73);color:var(--ru-sur-accent,#FFFFFF)}
/* Selecteur de reaction : bouton "+" pour plus d'emoji, retour a la ligne si besoin */
.rucom-reactpop{flex-wrap:wrap;max-width:372px;justify-content:center}
.rucom-rp-more{border:0;background:var(--soft);width:32px;height:32px;border-radius:50%;font-size:19px;font-weight:700;color:var(--muted);cursor:pointer;line-height:1;transition:background .12s ease,color .12s ease}
.rucom-rp-more:hover{background:var(--or);color:var(--ru-sur-accent,#FFFFFF)}
/* Bouton de reaction dans la messagerie : look premium, visible au survol */
.rucom-msg-rwrap{opacity:.4}
.rucom-msgrow:hover .rucom-msg-rwrap{opacity:1}
.rucom-msg-rbtn{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--muted);box-shadow:0 1px 5px rgba(0,0,0,.1);display:grid;place-items:center;cursor:pointer;transition:transform .12s ease,color .12s ease,background .12s ease}
.rucom-msg-rbtn:hover{color:var(--ru-sur-accent,#FFFFFF);background:var(--or);transform:scale(1.1)}
.rucom-msg-rbtn svg{width:16px;height:16px}
@media (max-width:520px){ .rucom-msg-rwrap{opacity:1} }
/* Carte document dans une bulle : un peu plus large, plus aeree */
.rucom-msg-col{max-width:86%}
.rucom-bub.rucom-has-media{max-width:340px}
.rucom-bub .rucom-msg-media .rucom-media-doc{width:300px;max-width:80vw}
/* Cellule de grille non-image (document / video) : carre noir moderne + auteur */
.rucom-gcell-card{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;background:linear-gradient(160deg,#F6F6F4,#eef2f6);color:var(--ru-texte,#0e2438);padding:16px;text-align:center;box-sizing:border-box}
.rucom-gcc-ic{width:48px;height:48px;border-radius:13px;display:grid;place-items:center;background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-gcc-ic svg{width:26px;height:26px;color:var(--or)}
.rucom-gcc-name{font-size:12.5px;font-weight:800;line-height:1.3;max-width:100%;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.rucom-gcc-by{font-size:11px;color:var(--ru-discret,#6b7280)}
.rucom-gcell-txt{width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;padding:16px;font-size:13px;line-height:1.45;color:var(--ru-texte,#0e2438);background:linear-gradient(160deg,#F6F6F4,#eef2f6);box-sizing:border-box}
/* Separation claire entre les publications du fil (style Facebook) */
.rucom-feed-list .rucom-post{border:1px solid var(--line);border-radius:14px;margin:0 0 16px;background:#fff;overflow:hidden}
/* Plafond de taille des photos de publication (valeurs par defaut, comme Facebook) */
.rucom-post .rucom-photo img,.rucom-post .rucom-media-wrap.rucom-mk-image img{max-height:560px;object-fit:cover}
.rucom-p-posts.rucom-wall .rucom-photo img,.rucom-p-posts.rucom-wall .rucom-media-wrap.rucom-mk-image img{max-height:520px;object-fit:cover}
/* Demarcation discrete entre la legende de l'auteur et les commentaires */
.rucom-cmt-head{padding:12px 14px 2px;margin-top:6px;border-top:1px solid var(--line);color:var(--muted);font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}

/* 0.29 : lecteur video de marque (natif) dans le fil */
.rucom-video{position:relative;width:100%;background:#000}
.rucom-video-frame{position:relative;width:100%;aspect-ratio:16/9;background:#000}
.rucom-video-frame iframe,.rucom-video-frame video{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.rucom-video-badge{position:absolute;top:10px;left:10px;z-index:3;display:inline-flex;align-items:center;gap:5px;background:rgba(0,0,0,.62);color:var(--or);font-weight:900;font-size:12px;letter-spacing:.04em;padding:5px 9px;border-radius:999px;pointer-events:none}
.rucom-video-badge svg{width:15px;height:15px}
.rucom-vjs{background:#000}
/* Vignette video dans la grille */
.rucom-gcell-vid{width:100%;height:100%;position:relative;background:#000}
.rucom-gcell-vid img{width:100%;height:100%;object-fit:cover}
.rucom-gcell-play{position:absolute;inset:0;display:grid;place-items:center;color:#fff}
.rucom-gcell-play svg{width:40px;height:40px;filter:drop-shadow(0 2px 6px rgba(0,0,0,.6))}

/* 0.30 : habillage du lecteur natif (style Player One), badge EN DIRECT */
.rucom-video{border-radius:12px;overflow:hidden}
.rucom-video-frame{border-radius:12px;overflow:hidden}
.rucom-video-live{position:absolute;top:12px;left:12px;z-index:5;display:inline-flex;align-items:center;gap:7px;background:#e50914;color:#fff;font-weight:900;font-size:11.5px;letter-spacing:.06em;padding:5px 10px;border-radius:999px}
.rucom-video-live i{width:8px;height:8px;border-radius:50%;background:#fff;animation:rucomPulse 1.4s ease-in-out infinite}
@keyframes rucomPulse{0%,100%{opacity:1}50%{opacity:.25}}
/* Lecteur : grand bouton central, barre de progression a la marque, controles au survol */
.rucom-vjs{position:absolute;inset:0;width:100%;height:100%;background:#000;cursor:pointer}
.rucom-vp-big{position:absolute;inset:0;z-index:2;display:grid;place-items:center;border:0;background:transparent;cursor:pointer;color:#fff}
.rucom-vp-big svg{width:38px;height:38px;padding:18px;border-radius:50%;background:rgba(0,0,0,.55);border:2px solid rgba(255,255,255,.75);box-sizing:content-box}
.rucom-vp-playing .rucom-vp-big{background:transparent}
.rucom-vp-spinner{position:absolute;top:50%;left:50%;width:44px;height:44px;margin:-22px 0 0 -22px;z-index:3;border:3px solid rgba(255,255,255,.25);border-top-color:var(--or);border-radius:50%;opacity:0;pointer-events:none;animation:rucomSpin .8s linear infinite}
.rucom-vp-loading .rucom-vp-spinner{opacity:1}
@keyframes rucomSpin{to{transform:rotate(360deg)}}
.rucom-vp-ctrls{position:absolute;left:0;right:0;bottom:0;z-index:4;padding:8px 12px 10px;background:linear-gradient(transparent,rgba(0,0,0,.72));opacity:0;transition:opacity .2s ease}
.rucom-video-frame:hover .rucom-vp-ctrls,.rucom-vp-frame:focus-within .rucom-vp-ctrls{opacity:1}
.rucom-vp-playing:hover .rucom-vp-ctrls{opacity:1}
.rucom-vp-bar{position:relative;height:4px;background:rgba(255,255,255,.28);border-radius:2px;cursor:pointer;margin-bottom:8px;transition:height .15s ease}
.rucom-video-frame:hover .rucom-vp-bar{height:6px}
.rucom-vp-buf{position:absolute;left:0;top:0;height:100%;width:0;background:rgba(255,255,255,.4);border-radius:2px}
.rucom-vp-fill{position:absolute;left:0;top:0;height:100%;width:0;background:var(--or);border-radius:2px}
.rucom-vp-thumb{position:absolute;top:50%;left:0;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--or);opacity:0;transition:opacity .15s ease}
.rucom-video-frame:hover .rucom-vp-thumb{opacity:1}
.rucom-vp-row{display:flex;align-items:center;gap:12px;color:#fff}
.rucom-vp-btn{width:34px;height:34px;border:0;background:transparent;color:#fff;cursor:pointer;display:grid;place-items:center;border-radius:50%;transition:background .15s ease,transform .12s ease}
.rucom-vp-btn:hover{background:rgba(255,255,255,.16);transform:scale(1.05)}
.rucom-vp-btn svg{width:20px;height:20px}
.rucom-vp-time{font-size:12.5px;font-variant-numeric:tabular-nums;color:#e9e9ec}
.rucom-vp-time i{font-style:normal}
.rucom-vp-sp{flex:1}
.rucom-video-badge{top:12px;right:12px;bottom:auto;left:auto;z-index:5}

/* =========================================================================
   0.31 : classement (leaderboard), onglets messagerie, bascule de vue
   Explorer, rails defilables + mobile, corrections d'espacement et d'icones.
   ========================================================================= */

/* --- Colonnes laterales : flux naturel, aucune boite defilante interne --- */
@media (min-width:1000px){
  .rucom-left,.rucom-right{max-height:none;overflow:visible;padding-right:0}
}

/* --- Pastille de compteur COLLEE au texte (avant : perdue en haut a droite,
   on ne savait pas si c'etait Explorer ou Messages). Maintenant en ligne. --- */
.rucom-badge-dot[data-count]:not([data-count="0"])::after,
.rucom-badge-msg[data-count]:not([data-count="0"])::after{
  position:static;top:auto;right:auto;left:auto;margin-left:8px;align-self:center}
.rucom-nav.rucom-badge-dot,.rucom-nav.rucom-badge-msg{position:relative}

/* --- Icone / puce de reaction dans la messagerie : plus ecrasee en hauteur --- */
.rucom-msg-chip{margin-top:-4px;padding:2px 9px;line-height:1.35;min-height:24px;font-size:15px}
.rucom-msg-chip b{font-size:11px;line-height:1}
.rucom-msg-rbtn{width:30px;height:30px}
.rucom-msg-rbtn svg{width:16px;height:16px}
.rucom-msg-pick .rucom-react-emoji{font-size:22px;line-height:1.1;padding:3px}

/* --- Groupe entre le composeur et la premiere publication --- */
.rucom-composer{border-bottom:1px solid var(--line)}
.rucom-feed-list{padding-top:16px}
@media (min-width:1000px){ .rucom-feed-list{padding-top:18px} }

/* --- Carte document CENTREE dans la bande blanche (avant : collee a gauche) --- */
.rucom-media-wrap.rucom-mk-doc,.rucom-media-wrap.rucom-mk-audio{
  background:var(--soft);display:flex;justify-content:center;padding:16px}
.rucom-media-wrap.rucom-mk-doc .rucom-media-doc,
.rucom-media-wrap.rucom-mk-audio .rucom-media-doc{margin:0 auto;width:100%;max-width:360px}

/* --- Onglets de messagerie facon Instagram : Primaire / General / Demandes --- */
.rucom-msg-tabs{display:flex;gap:4px;padding:6px 10px 8px;border-bottom:1px solid var(--line)}
.rucom-msg-tab{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;background:none;font-family:inherit;font-size:13px;font-weight:700;color:var(--muted);padding:8px 4px;border-radius:9px;cursor:pointer;transition:background .12s ease,color .12s ease}
.rucom-msg-tab:hover{background:var(--soft)}
.rucom-msg-tab.rucom-on{color:var(--ru-texte,#0e2438);background:var(--soft)}
.rucom-msg-tc{font-size:11px;font-weight:800;min-width:16px;height:16px;padding:0 4px;border-radius:9px;display:none;place-items:center;background:rgba(17,17,20,.1);color:var(--ru-texte,#0e2438)}
.rucom-msg-tc.rucom-has{display:grid}
.rucom-msg-tc.rucom-msg-tc-req.rucom-has{background:var(--or);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-msg-reqintro{padding:10px 12px;font-size:12.5px;line-height:1.4;color:var(--muted);background:var(--soft);border-radius:10px;margin:10px 10px 4px}
/* Onglet Demandes en alerte : un membre non connecte a ecrit et le message
   n'est pas encore lu. Impossible a rater sans etre agressif. */
.rucom-msg-tab.rucom-req-alert{color:var(--ru-texte,#0e2438);background:var(--ru-accent-doux,rgba(44,111,181,.12));box-shadow:inset 0 0 0 1px var(--or)}
.rucom-msg-tab.rucom-req-alert .rucom-msg-tc-req{animation:rucom-reqpulse 1.6s ease-in-out infinite}
@keyframes rucom-reqpulse{0%,100%{box-shadow:0 0 0 0 var(--ru-accent-filet,rgba(44,111,181,.45))}50%{box-shadow:0 0 0 4px var(--ru-accent-doux,rgba(44,111,181,.12))}}
/* Icone Messages (barre de nav) : petit point dore quand une DEMANDE non lue
   attend, distinct du compteur general de messages non lus. */
.rucom-badge-msg.rucom-has-req::before{content:"";position:absolute;top:-3px;left:-4px;width:8px;height:8px;border-radius:50%;background:var(--or);box-shadow:0 0 0 2px var(--bg,#fff)}

/* --- Bascule de vue dans Explorer : Grille / Mur (comme sur les profils) --- */
.rucom-x-viewtoggle{margin-left:auto;display:inline-flex;gap:2px;background:var(--soft);border-radius:10px;padding:3px}
.rucom-x-view{width:34px;height:30px;border:0;background:none;color:var(--muted);border-radius:8px;cursor:pointer;display:grid;place-items:center;transition:background .12s ease,color .12s ease}
.rucom-x-view svg{width:18px;height:18px}
.rucom-x-view.rucom-on{background:#fff;color:var(--ru-texte,#0e2438);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.rucom-xtabs{align-items:center}
.rucom-x-wall{padding-top:14px}

/* =======================================================================
   Classement du Reseau : theme CLAIR facon tableau NHL, couleurs de marque.
   ======================================================================= */
.rucom-lb{padding:4px 0 24px}
.rucom-lb-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:4px 4px 14px}
.rucom-lb-title{display:flex;align-items:center;gap:12px}
.rucom-lb-cup{width:44px;height:44px;flex:0 0 auto;border-radius:13px;background:var(--or);display:grid;place-items:center;box-shadow:0 4px 12px var(--ru-accent-filet,rgba(44,111,181,.45))}
.rucom-lb-cup svg{width:24px;height:24px;color:var(--ru-sur-accent,#FFFFFF)}
.rucom-lb-title h2{margin:0;font-size:20px;font-weight:900;letter-spacing:-.01em}
.rucom-lb-title p{margin:2px 0 0;font-size:13px;color:var(--muted)}
.rucom-lb-head-r{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.rucom-lb-priv{display:inline-flex;align-items:center;gap:8px;background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:5px 6px 5px 12px}
.rucom-lb-priv-l{font-size:12.5px;font-weight:700;color:var(--muted);display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.rucom-lb-chips{display:inline-flex;gap:4px;background:var(--soft);padding:4px;border-radius:12px}
.rucom-lb-chip{border:0;background:none;font-family:inherit;font-size:13px;font-weight:700;color:var(--muted);padding:7px 14px;border-radius:9px;cursor:pointer;white-space:nowrap;transition:background .12s ease,color .12s ease}
.rucom-lb-chip:hover{color:var(--ru-texte,#0e2438)}
.rucom-lb-chip.rucom-on{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}
/* Sous-entete du classement : filtre Membres/Entreprises + bouton guide */
.rucom-lb-subhead{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:0 4px 14px}
.rucom-lb-guide{white-space:nowrap}
.rucom-lb-guide svg{width:16px;height:16px}
/* Modale "Comment gagner des points" : en-tete fixe, UNE SEULE zone de
   defilement (avant, la carte et le corps defilaient tous les deux) et icone du
   trophee bornee (une icone en ligne sans largeur imposee prenait toute la
   largeur de la modale). */
.rucom-guide-card{max-width:640px;width:calc(100% - 32px);max-height:86vh;
  overflow:hidden;display:flex;flex-direction:column;padding:24px 28px 26px}
.rucom-guide-card h3{display:flex;align-items:center;gap:10px;margin:-30px 44px 6px 0;
  font-size:19px;font-weight:900;line-height:1.3}
.rucom-guide-card h3 svg{width:22px;height:22px;flex:0 0 auto;color:var(--or-d,var(--ru-accent,#1d5c8f))}
.rucom-guide-card .rucom-modal-close{top:10px;right:12px}
/* Le corps ne DEBORDE plus dans le rembourrage de la carte. Les marges
   negatives elargissaient les blocs jusqu'au bord et donnaient cette impression
   de contenu colle : la barre de defilement se reserve maintenant sa place au
   lieu d'etre volee au rembourrage. */
.rucom-guide-body{flex:1 1 auto;min-height:0;max-height:none;overflow-y:auto;margin:16px 0 0}
/* Barre de defilement discrete, POSEE PAR-DESSUS : reserver sa place rendait le
   rembourrage de droite plus large que celui de gauche, et la carte penchait. */
.rucom-guide-body::-webkit-scrollbar{width:6px}
.rucom-guide-body::-webkit-scrollbar-thumb{background:rgba(17,17,20,.18);border-radius:99px}
.rucom-guide-body::-webkit-scrollbar-track{background:transparent}
/* Une categorie est un BLOC, pas une suite de lignes serrees : chacune respire
   dans sa propre carte, sinon l'oeil ne trouve plus ou commence quoi. */
.rucom-guide-cat{margin-bottom:16px;background:var(--soft,#f7f7f9);border-radius:16px;padding:18px 20px}
.rucom-guide-cat:last-child{margin-bottom:2px}
.rucom-guide-cat-h{padding:0 0 12px;border-bottom:1px solid var(--line);margin-bottom:2px}
.rucom-guide-cat-h b{font-size:14.5px;font-weight:900;display:block}
.rucom-guide-cat-h small{font-size:12.5px;color:var(--muted);display:block;margin-top:3px;line-height:1.45}
.rucom-guide-item{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;
  padding:13px 0;border-bottom:1px solid rgba(17,17,20,.07)}
.rucom-guide-item:last-child{border-bottom:0;padding-bottom:2px}
.rucom-guide-it-l{min-width:0}
.rucom-guide-it-l b{font-size:14px;font-weight:800}
.rucom-guide-it-l small{display:block;font-size:12.5px;color:var(--muted);margin-top:4px;line-height:1.45}
.rucom-guide-once{display:inline-block;margin-left:6px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.02em;color:#6b6b73;background:var(--soft);border-radius:6px;padding:1px 6px;vertical-align:middle}
.rucom-guide-cap{display:inline-block;margin-left:6px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.02em;color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,rgba(44,111,181,.12));border-radius:6px;padding:1px 6px;vertical-align:middle}
/* Admin : plafonds quotidiens */
.rucom-pts-cap{background:#fafafa;border:1px solid var(--line,#e5e5e5);border-radius:10px;padding:12px 14px;margin:10px 0 16px}
.rucom-pts-daily{display:inline-block;margin-left:14px;font-size:12px;color:#6b6b73}
.rucom-pts-daily input{margin:0 4px}
.rucom-guide-pts{font-size:16px;font-weight:900;color:#0f6f68;white-space:nowrap;
  background:#fff;border-radius:999px;padding:4px 12px;flex:0 0 auto;align-self:center}
.rucom-guide-pts.rucom-guide-neg{color:#b23b3b}

.rucom-lb-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 4px 16px}
.rucom-lb-stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;text-align:center}
.rucom-lb-stat b{display:block;font-size:22px;font-weight:900;line-height:1.1}
.rucom-lb-stat span{display:block;margin-top:3px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.rucom-lb-leader{color:var(--or-d);font-size:16px}

.rucom-lb-me{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 4px 16px;padding:12px 16px;border-radius:14px;background:linear-gradient(120deg,#151518,#2c2c30);color:#fff;box-shadow:0 6px 18px rgba(0,0,0,.14)}
.rucom-lb-me-l{display:flex;align-items:center;gap:12px}
.rucom-lb-me-l small{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:rgba(255,255,255,.6);font-weight:700}
.rucom-lb-me-l b{font-size:17px;font-weight:900}
.rucom-lb-me-r{display:flex;align-items:center;gap:10px}
.rucom-lb-me-rank{font-size:20px;font-weight:900;color:var(--or)}
.rucom-lb-me-unranked{font-size:12.5px;color:rgba(255,255,255,.7)}

.rucom-lb-table{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;margin:0 4px}
.rucom-lb-thead,.rucom-lb-row{display:grid;grid-template-columns:54px minmax(0,1fr) 46px 48px 54px 86px 78px;align-items:center;gap:6px}
.rucom-lb-thead{background:var(--ru-surface,#F6F6F4);color:var(--ru-discret,#6b7280);border-bottom:1px solid var(--line);padding:11px 14px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.rucom-lb-thead .rucom-lb-c-num,.rucom-lb-thead .rucom-lb-c-lvl,.rucom-lb-thead .rucom-lb-c-pts{text-align:center}
.rucom-lb-row{padding:10px 14px;border-top:1px solid var(--line);cursor:pointer;transition:background .12s ease}
.rucom-lb-row:hover{background:var(--soft)}
.rucom-lb-c-num{text-align:center;font-weight:800;font-size:14px;font-variant-numeric:tabular-nums}
.rucom-lb-c-rank{display:flex;align-items:center;justify-content:center}
.rucom-lb-num{font-weight:800;font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums}
.rucom-lb-medal{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:900;color:var(--ru-texte,#0e2438);box-shadow:inset 0 -2px 4px rgba(0,0,0,.18)}
.rucom-lb-medal-1{background:linear-gradient(145deg,var(--ru-accent,#1d5c8f),var(--ru-accent,#1d5c8f))}
.rucom-lb-medal-2{background:linear-gradient(145deg,#eef1f4,#c2c7cd)}
.rucom-lb-medal-3{background:linear-gradient(145deg,#e6b489,#cd7f32);color:#fff}
.rucom-lb-c-member{display:flex;align-items:center;gap:10px;min-width:0}
.rucom-lb-who{min-width:0}
.rucom-lb-who b{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-lb-who small{display:block;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-lb-youtag{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.03em;color:var(--ru-sur-accent,#FFFFFF);background:var(--or);padding:1px 6px;border-radius:999px;flex:0 0 auto}
.rucom-lb-c-lvl{display:flex;justify-content:center}
.rucom-lb-lvl{font-size:11px;font-weight:800;padding:3px 9px;border-radius:999px;white-space:nowrap;border:1px solid transparent}
.rucom-lvl-rookie{background:#eef0f2;color:#6b6b73}
.rucom-lvl-bronze{background:rgba(205,127,50,.14);color:#a9631f}
.rucom-lvl-silver{background:#eef1f4;color:#70767d;border-color:#d7dbe0}
.rucom-lvl-gold{background:var(--ru-accent-doux,rgba(44,111,181,.12));color:var(--ru-accent,#1d5c8f)}
.rucom-lvl-platinum{background:rgba(64,153,153,.14);color:#2f7d7d}
.rucom-lvl-diamond{background:rgba(56,178,213,.16);color:#1b8fb0}
.rucom-lvl-legend{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-lb-c-pts{display:flex;flex-direction:column;align-items:center;line-height:1.05}
.rucom-lb-c-pts b{font-size:17px;font-weight:900;color:var(--ru-texte,#0e2438);font-variant-numeric:tabular-nums}
.rucom-lb-c-pts span{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.rucom-lb-row.rucom-lb-mine{background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-lb-row.rucom-lb-mine:hover{background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-lb-empty{margin:10px 4px 0}

/* Classement responsive : sur petits ecrans on masque Reactions et Videos,
   on garde Rang / Membre / Pub / Niveau / Points, tres lisible. */
@media (max-width:700px){
  .rucom-lb-thead,.rucom-lb-row{grid-template-columns:44px minmax(0,1fr) 44px 70px 64px}
  .rucom-lb-c[data-k="react"],.rucom-lb-c[data-k="video"],
  .rucom-lb-thead .rucom-lb-c-num:nth-of-type(4),
  .rucom-lb-thead .rucom-lb-c-num:nth-of-type(5){display:none}
  .rucom-lb-stats{grid-template-columns:1fr 1fr}
  .rucom-lb-stats .rucom-lb-stat:last-child{grid-column:1/-1}
  .rucom-lb-head{gap:10px}
  .rucom-lb-head-r{width:100%;align-items:stretch}
  .rucom-lb-priv{justify-content:space-between}
}
@media (max-width:420px){
  .rucom-lb-thead,.rucom-lb-row{grid-template-columns:38px minmax(0,1fr) 58px 60px}
  .rucom-lb-c-lvl{display:none}
  .rucom-lb-chip{padding:7px 11px}
}

/* =========================================================================
   0.32 : classement (bannière claire), messagerie (bulles larges, menu 3
   points modifier/supprimer, Entrée=saut/envoi), liens cliquables.
   ========================================================================= */

/* Bannière "Ton rang" : fond gris pâle, texte noir lisible (avant : tout noir). */
.rucom-lb-me{background:#f4f4f6;color:var(--ru-texte,#0e2438);border:1px solid var(--line);box-shadow:none}
.rucom-lb-me-l small{color:var(--muted)}
.rucom-lb-me-l b{color:var(--ru-texte,#0e2438)}
.rucom-lb-me-rank{color:var(--or-d)}
.rucom-lb-me-unranked{color:var(--muted)}

/* Bulles de message : quasi pleine largeur (fini les 4 mots sur 2 lignes). */
.rucom-bub{max-width:100%}
.rucom-msg-col{max-width:92%}
.rucom-msgrow.rucom-in .rucom-msg-col,.rucom-msgrow.rucom-out .rucom-msg-col{max-width:82%}
@media (min-width:1000px){ .rucom-msgrow .rucom-msg-col{max-width:74%} }

/* Champ de saisie multiligne (textarea qui grandit). */
.rucom-chatbar .rucom-q{resize:none;overflow-y:auto;max-height:130px;line-height:1.4;font-family:inherit}

/* Bouton Entrée-envoie (bascule). */
.rucom-enter-toggle{color:var(--muted);flex:0 0 auto}
.rucom-enter-toggle.rucom-on{color:var(--or-d)}
.rucom-enter-toggle svg{width:20px;height:20px}

/* Menu 3 points d'un message (modifier / supprimer). */
.rucom-msg-menu{display:flex;align-items:center;align-self:flex-end;opacity:.45;transition:opacity .12s ease}
.rucom-msgrow:hover .rucom-msg-menu{opacity:1}
.rucom-msg-mbtn{width:26px;height:26px;border:0;background:none;color:var(--muted);border-radius:50%;cursor:pointer;display:grid;place-items:center;padding:0}
.rucom-msg-mbtn:hover{background:var(--soft);color:var(--ru-texte,#0e2438)}
.rucom-msg-mbtn svg{width:16px;height:16px}
.rucom-msg-pop{position:absolute;z-index:1000;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.18);padding:6px;min-width:158px}
.rucom-msg-popitem{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;font-family:inherit;font-size:14px;color:var(--ru-texte,#0e2438);padding:9px 10px;border-radius:8px;cursor:pointer;text-align:left}
.rucom-msg-popitem:hover{background:var(--soft)}
.rucom-msg-popitem svg{width:17px;height:17px;flex:0 0 auto}
.rucom-msg-popitem.rucom-danger{color:#c0392b}
.rucom-msg-popitem.rucom-danger:hover{background:rgba(192,57,43,.08)}
@media (max-width:520px){ .rucom-msg-menu{opacity:1} }

/* Mention "modifié" sur un message. */
.rucom-msg-edited{display:block;font-style:normal;font-size:10.5px;opacity:.6;margin-top:2px}
.rucom-bub.rucom-out .rucom-msg-edited{text-align:right}

/* Liens cliquables (commentaires, publications, légendes). */
.rucom-link{color:#1d6fb8;text-decoration:none;word-break:break-word}
.rucom-link:hover{text-decoration:underline}
.rucom-bub.rucom-out .rucom-link{color:var(--ru-sur-accent,#FFFFFF);text-decoration:underline}

/* =========================================================================
   0.33 : profil verifie (crochet), bouton de don, widget de messagerie ancre.
   ========================================================================= */

/* Crochet de verification : bleu, seulement si le membre est verifie. */
.rucom-vbadge{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;
  border-radius:50%;background:#1d9bf0;color:#fff;vertical-align:middle;margin-left:2px}
.rucom-vbadge svg{width:11px;height:11px}
.rucom-who .rucom-vbadge{width:15px;height:15px}
.rucom-who .rucom-vbadge svg{width:10px;height:10px}
.rucom-p-name .rucom-vbadge{width:20px;height:20px}
.rucom-p-name .rucom-vbadge svg{width:13px;height:13px}
/* Cache l'ancien crochet toujours-visible s'il traine quelque part. */
.rucom-check{display:none}
/* Appel a se faire verifier (profil non verifie, soi-meme). */
.rucom-verify-cta{display:inline-flex;align-items:center;gap:6px;margin:6px auto 0;border:1px solid var(--line);
  background:var(--soft);color:var(--muted);font-family:inherit;font-size:12.5px;font-weight:700;
  padding:5px 12px;border-radius:999px;cursor:pointer}
.rucom-verify-cta:hover{background:#e9eef3;color:#1d9bf0;border-color:#bfe0f6}
.rucom-verify-cta svg{width:14px;height:14px}
/* Modale de verification. */
.rucom-verify-modal{max-width:420px;text-align:center}
.rucom-verify-ic{width:56px;height:56px;border-radius:50%;background:#1d9bf0;color:#fff;display:grid;place-items:center;margin:4px auto 12px}
.rucom-verify-ic svg{width:30px;height:30px}
.rucom-verify-modal h3{margin:0 0 8px;font-size:19px;font-weight:900}
.rucom-verify-modal p{margin:0 0 12px;color:var(--muted);font-size:14px}
.rucom-verify-steps{text-align:left;margin:0 0 8px;padding-left:20px;color:var(--ru-texte,#0e2438);font-size:13.5px}
.rucom-verify-steps li{margin:5px 0}

/* --- Widget de messagerie ancre en bas a droite --- */
/* Colle au BAS de l'ecran (comme LinkedIn/Facebook), pas un pastille flottante. */
.rucom-dock{position:fixed;right:22px;bottom:0;z-index:900;width:auto;font-family:inherit}
.rucom-dock.rucom-hidden{display:none}
.rucom-dock-bar{display:flex;align-items:center;gap:9px;background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF);border:0;cursor:pointer;
  font-family:inherit;font-weight:800;font-size:14px;padding:11px 16px;border-radius:12px 12px 0 0;
  box-shadow:0 -4px 20px rgba(0,0,0,.22)}
.rucom-dock-bar svg{width:20px;height:20px;color:var(--ru-sur-accent,#FFFFFF)}
.rucom-dock-title{white-space:nowrap}
.rucom-dock-caret{transition:transform .18s ease;display:inline-flex}
.rucom-dock-caret svg{width:16px;height:16px;color:#fff}
.rucom-dock[data-open="1"] .rucom-dock-caret{transform:rotate(180deg)}
.rucom-dock-count{min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:var(--or);color:var(--ru-sur-accent,#FFFFFF);
  font-size:11px;font-weight:900;display:none;place-items:center}
.rucom-dock-count[data-count]:not([data-count="0"]){display:grid}
.rucom-dock-panel{position:absolute;right:0;bottom:46px;width:340px;max-width:86vw;height:460px;max-height:72vh;
  background:#fff;border:1px solid var(--line);border-bottom:0;border-radius:12px 12px 0 0;box-shadow:0 -6px 40px rgba(0,0,0,.2);
  display:none;flex-direction:column;overflow:hidden}
.rucom-dock[data-open="1"] .rucom-dock-panel{display:flex}
.rucom-dock-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line);flex:0 0 auto}
.rucom-dock-head .rucom-dock-h-title{flex:1;font-size:15px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-dock-back,.rucom-dock-x{border:0;background:none;cursor:pointer;color:var(--muted);display:grid;place-items:center;border-radius:8px;padding:4px}
.rucom-dock-back{width:28px;height:28px}.rucom-dock-back svg{width:18px;height:18px}
.rucom-dock-x{font-size:22px;line-height:1;width:30px;height:30px}
.rucom-dock-back:hover,.rucom-dock-x:hover{background:var(--soft);color:var(--ru-texte,#0e2438)}
.rucom-dock-back.rucom-hidden{display:none}
.rucom-dock-body{flex:1;overflow-y:auto;min-height:0}
.rucom-dock-body.rucom-dock-chat{display:flex;flex-direction:column}
.rucom-dock-conv{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;border-bottom:1px solid var(--line)}
.rucom-dock-conv:hover{background:var(--soft)}
.rucom-dock-conv .rucom-av{width:40px;height:40px;flex:0 0 auto}
.rucom-dock-cv-bd{flex:1;min-width:0}
.rucom-dock-cv-bd b{display:block;font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-dock-cv-bd small{display:block;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-dock-cv-bd small.rucom-un{color:var(--ru-texte,#0e2438);font-weight:700}
.rucom-dock-pill{background:var(--or);color:var(--ru-sur-accent,#FFFFFF);font-size:11px;font-weight:900;min-width:18px;height:18px;
  padding:0 5px;border-radius:9px;display:grid;place-items:center;flex:0 0 auto}
.rucom-dock-thread{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;min-height:0}
.rucom-dock-bar-in{display:flex;align-items:flex-end;gap:8px;padding:8px 10px;border-top:1px solid var(--line);flex:0 0 auto}
.rucom-dock-q{flex:1;resize:none;overflow-y:auto;max-height:96px;border:1px solid var(--line);border-radius:16px;
  padding:8px 12px;font-family:inherit;font-size:13.5px;line-height:1.4;background:var(--soft)}
.rucom-dock-send{width:36px;height:36px;flex:0 0 auto;border:0;border-radius:50%;background:var(--or);cursor:pointer;display:grid;place-items:center}
.rucom-dock-send svg{width:18px;height:18px;color:var(--ru-sur-accent,#FFFFFF)}
/* Sur MOBILE : on CACHE le dock. La barre d'onglets du bas contient deja
   "Messages" ; un widget flottant par-dessus couperait le contenu et entrerait
   en conflit avec la barre d'onglets, le bouton de traduction et le bandeau de
   cookies. C'est ce que font Facebook / LinkedIn : pas de dock flottant sur mobile. */
@media (max-width:999px){
  .rucom-dock{display:none !important}
}

/* --- 0.34 : verification (demande), edition + visibilite des publications --- */
.rucom-verify-cta.rucom-pending{color:var(--or-d);border-color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-verify-or{font-size:13px;color:var(--muted);margin:4px 0 10px}
.rucom-verify-note{background:var(--ru-accent-doux,rgba(44,111,181,.12));border:1px solid var(--ru-accent,#1d5c8f);color:var(--ru-accent,#1d5c8f);border-radius:10px;padding:9px 12px;font-size:13px;font-weight:600}
/* Selecteur de visibilite (composeur + editeur). */
.rucom-cmp-vis{display:inline-flex;align-items:center;gap:5px;color:var(--muted)}
.rucom-cmp-vis svg{width:18px;height:18px}
.rucom-vis-select{border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-family:inherit;font-size:13px;color:var(--ru-texte,#0e2438);background:#fff;cursor:pointer;max-width:160px}
/* Editeur de publication. */
.rucom-posted{max-width:520px}
.rucom-posted-tx{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px;font-family:inherit;font-size:15px;line-height:1.45;resize:vertical;min-height:120px}
.rucom-posted-vis{display:flex;align-items:center;gap:10px;margin-top:12px}
.rucom-posted-vis label{font-size:13px;font-weight:700;color:var(--muted)}

/* --- 0.35 : dock (recherche + onglets) + etat "membre introuvable" --- */
.rucom-dock-search{padding:10px 12px 6px;flex:0 0 auto}
.rucom-dock-qs{width:100%;border:1px solid var(--line);border-radius:999px;padding:8px 13px;font-family:inherit;font-size:13px;background:var(--soft)}
.rucom-dock-tabs{display:flex;gap:4px;padding:0 10px 8px;border-bottom:1px solid var(--line);flex:0 0 auto}
.rucom-dock-tab{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:5px;border:0;background:none;font-family:inherit;font-size:12px;font-weight:700;color:var(--muted);padding:7px 4px;border-radius:8px;cursor:pointer}
.rucom-dock-tab:hover{background:var(--soft)}
.rucom-dock-tab.rucom-on{color:var(--ru-texte,#0e2438);background:var(--soft)}
.rucom-dock-tc{font-size:10px;font-weight:800;min-width:15px;height:15px;padding:0 4px;border-radius:8px;background:rgba(17,17,20,.1);color:var(--ru-texte,#0e2438);display:none;place-items:center}
.rucom-dock-tc.rucom-has{display:grid}
.rucom-dock-tab[data-box="requests"] .rucom-dock-tc.rucom-has{background:var(--or);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-dock-list{flex:1;overflow-y:auto;min-height:0}
.rucom-dock-hint{padding:9px 12px;font-size:12px;color:var(--muted);background:var(--soft)}

/* Etat "membre introuvable" (ex. clic sur @followers qui n'est pas un membre). */
.rucom-nomember{display:flex;flex-direction:column;align-items:center;gap:10px;padding:48px 20px;text-align:center}
.rucom-nomember svg{width:44px;height:44px;color:var(--muted)}
.rucom-nomember-t{font-size:18px;font-weight:900}
.rucom-nomember-s{font-size:14px;color:var(--muted);max-width:360px}
.rucom-nomember .rucom-btn{margin-top:6px;max-width:200px}

/* --- 0.36 : lecture publique (invite connexion), qui a reagi, statistiques --- */
.rucom-loginp-card{max-width:400px;text-align:center}
.rucom-loginp-logo{height:34px;margin:2px auto 12px;display:block}
.rucom-loginp-card h3{margin:0 0 8px;font-size:19px;font-weight:900}
.rucom-loginp-card p{margin:0 0 14px;color:var(--muted);font-size:14px}
/* Ligne reactions + bouton Statistiques sous une publication. */
.rucom-p-likesrow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 14px 2px}
.rucom-p-likes{cursor:pointer;font-weight:800;font-size:13.5px}
.rucom-p-likes:hover{text-decoration:underline}
.rucom-p-stats{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--muted);
  font-family:inherit;font-size:12.5px;font-weight:700;padding:5px 11px;border-radius:999px;cursor:pointer}
.rucom-p-stats:hover{background:var(--soft);color:var(--ru-texte,#0e2438)}
.rucom-p-stats svg{width:15px;height:15px}
/* Modale "Qui a reagi". */
.rucom-reactors-modal,.rucom-stats-modal{max-width:440px}
.rucom-reactors-modal h3,.rucom-stats-modal h3{margin:0 0 12px;font-size:18px;font-weight:900;display:flex;align-items:center;gap:8px}
.rucom-reactors-modal h3 svg,.rucom-stats-modal h3 svg{width:20px;height:20px}
.rucom-reactors-list{max-height:60vh;overflow-y:auto}
.rucom-reactor{display:flex;align-items:center;gap:11px;padding:8px 4px;cursor:pointer;border-radius:10px}
.rucom-reactor:hover{background:var(--soft)}
.rucom-reactor .rucom-av{width:40px;height:40px;flex:0 0 auto}
.rucom-reactor-bd{flex:1;min-width:0}
.rucom-reactor-bd b{display:flex;align-items:center;gap:5px;font-size:14px;font-weight:700}
.rucom-reactor-bd small{display:block;font-size:12px;color:var(--muted)}
.rucom-reactor-emo{font-size:20px;flex:0 0 auto}
/* Modale statistiques. */
.rucom-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.rucom-stat-tile{background:var(--soft);border-radius:12px;padding:14px 8px;text-align:center}
.rucom-stat-tile b{display:block;font-size:24px;font-weight:900;line-height:1}
.rucom-stat-tile span{display:block;margin-top:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.rucom-stats-types{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.rucom-stat-type{background:#fff;border:1px solid var(--line);border-radius:999px;padding:4px 11px;font-size:14px;font-weight:700}
.rucom-stats-note{font-size:12.5px;color:var(--muted);background:var(--ru-accent-doux,rgba(44,111,181,.12));border:1px solid var(--ru-accent,#1d5c8f);border-radius:10px;padding:9px 12px;margin-bottom:12px}
.rucom-stats-sub{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:6px 0 6px}

/* --- 0.37 : rapport de statistiques (vues + telechargement par date) --- */
.rucom-report-modal{max-width:640px}
.rucom-report-range{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:14px}
.rucom-report-range label{font-size:12px;font-weight:700;color:var(--muted);display:flex;flex-direction:column;gap:4px}
.rucom-report-range input[type=date]{border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-family:inherit;font-size:14px}
.rucom-report-grid{grid-template-columns:repeat(4,1fr)}
.rucom-report-table{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:12px}
.rucom-rep-h,.rucom-rep-row{display:grid;grid-template-columns:92px minmax(0,1fr) 86px 60px 60px;gap:6px;align-items:center;padding:9px 12px;font-size:13px}
.rucom-rep-h{background:var(--ru-surface,#F6F6F4);color:var(--ru-discret,#6b7280);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em}
.rucom-rep-h span:nth-child(n+3),.rucom-rep-row span:nth-child(n+3){text-align:center;font-variant-numeric:tabular-nums}
.rucom-rep-row{border-top:1px solid var(--line)}
.rucom-rep-row:hover{background:var(--soft)}
/* Livraison 6 : rapport par date d'une publication (3 colonnes) */
.rucom-date-table .rucom-rep-h,.rucom-date-table .rucom-rep-row{grid-template-columns:minmax(0,1fr) 110px 130px}
.rucom-date-table .rucom-rep-h span:nth-child(2),.rucom-date-table .rucom-rep-row span:nth-child(2){text-align:center;font-variant-numeric:tabular-nums}
.rucom-rep-ex{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ru-texte,#0e2438)}
.rucom-report-table .rucom-rep-row span:nth-child(3){font-weight:800}
@media (max-width:560px){
  .rucom-report-grid{grid-template-columns:1fr 1fr}
  .rucom-rep-h,.rucom-rep-row{grid-template-columns:70px minmax(0,1fr) 70px 40px 40px;font-size:12px;padding:9px 10px}
  .rucom-rep-h{font-size:10px;letter-spacing:0}
}
/* Livraison 8 : statistiques d'une publication (impressions, vues, rapport
   par date). Mobile d'abord : tuiles 2 x 2, champs de 44 px en 16 px,
   libelle au-dessus ; 4 tuiles sur une ligne des 560 px. */
.rucom-stats-modal{max-width:560px}
.rucom-pst-grid{grid-template-columns:repeat(2,1fr)}
@media (min-width:561px){.rucom-pst-grid{grid-template-columns:repeat(4,1fr)}}
.rucom-pst-range{display:grid;grid-template-columns:1fr;gap:10px;margin:0 0 14px}
@media (min-width:561px){.rucom-pst-range{grid-template-columns:1fr 1fr auto;align-items:end}}
.rucom-pst-range label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;color:var(--ru-texte,#0e2438)}
.rucom-pst-range input[type=date]{min-height:44px;box-sizing:border-box;width:100%;border:1px solid rgba(14,36,56,.15);border-radius:10px;padding:8px 12px;font-family:inherit;font-size:16px;color:var(--ru-texte,#0e2438);background:#fff}
.rucom-pst-range input[type=date]:focus{outline:none;border-color:var(--ru-accent,#1d5c8f);box-shadow:0 0 0 3px var(--ru-accent-doux,rgba(44,111,181,.15))}
.rucom-pst-range .rucom-btn{min-height:44px}
.rucom-pst-chart{display:flex;align-items:flex-end;gap:2px;height:96px;padding:6px 0;border-bottom:1px solid var(--line);margin-bottom:8px}
.rucom-pst-day{flex:1 1 0;min-width:2px;height:100%;position:relative}
.rucom-pst-day i{position:absolute;left:0;right:0;bottom:0;border-radius:2px 2px 0 0}
.rucom-pst-i{background:color-mix(in srgb,var(--ru-accent,#1d5c8f) 28%,transparent)}
.rucom-pst-v{background:var(--ru-accent,#1d5c8f)}
.rucom-pst-day .rucom-pst-v{left:25%;right:25%}
.rucom-pst-legend{display:flex;gap:16px;font-size:12.5px;color:var(--muted);margin:0 0 12px}
.rucom-pst-legend span{display:inline-flex;align-items:center;gap:6px}
.rucom-pst-legend i{display:inline-block;width:10px;height:10px;border-radius:3px}
.rucom-stats-modal .rucom-date-table .rucom-rep-row span:nth-child(n+2){font-weight:600}
.rucom-pst-empty{padding:14px;text-align:left;font-size:13.5px;background:var(--soft);border-radius:12px;margin-bottom:12px}
.rucom-pst-defs{font-size:12.5px;line-height:1.5;color:var(--muted);margin:4px 0 12px}
@media (max-width:560px){.rucom-stats-modal .rucom-ed-actions{flex-direction:column}.rucom-stats-modal .rucom-ed-actions .rucom-btn{width:100%;min-height:44px}}

/* --- 0.38 : bouton "Entrer en relation" (facon LinkedIn) --- */
.rucom-p-btns{flex-wrap:wrap}
.rucom-btn.rucom-rel{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.rucom-btn.rucom-rel svg{width:16px;height:16px}
.rucom-btn.rucom-rel.rucom-on{color:var(--go);border-color:rgba(31,157,85,.4)}
.rucom-btn.rucom-rel[disabled]{opacity:.6;cursor:default}

/* =========================================================================
   0.39 : CORRECTIFS MOBILE (menu hamburger, double composeur, notif qui deborde).
   ========================================================================= */

/* 1) Fini le composeur en double : quand la boite de composition est ouverte,
   on cache le composeur reduit "Quoi de neuf". */
/* (Regle retiree : la boite de creation n'est plus un frere du composeur,
   elle vit dans sa propre modale. Le selecteur ne correspondait plus a rien.) */

/* 2) Notification : le texte ne passe plus SOUS le bouton X (on reserve la place). */
.rucom-notif{padding-right:46px}
.rucom-notif .rucom-bd{min-width:0;word-break:break-word}

/* 3) MENU HAMBURGER (mobile) : le menu lateral gauche devient un tiroir coulissant.
   Sur ordinateur (>=1000px) la barre du haut est cachee, donc le bouton aussi. */
.rucom-burger{display:inline-flex}
.rucom-drawer-scrim{display:none}
@media (max-width:999px){
  .rucom-left{display:block;position:fixed;top:0;left:0;bottom:0;width:84%;max-width:322px;background:#fff;
    z-index:1300;transform:translateX(-100%);transition:transform .25s ease;overflow-y:auto;
    padding:16px 14px;box-shadow:2px 0 26px rgba(0,0,0,.28);margin:0;border-right:1px solid var(--line)}
  .rucom-app.rucom-drawer-open .rucom-left{transform:translateX(0)}
  .rucom-drawer-scrim{display:block;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1200;
    opacity:0;pointer-events:none;transition:opacity .2s ease}
  .rucom-app.rucom-drawer-open .rucom-drawer-scrim{opacity:1;pointer-events:auto}
  body.admin-bar .rucom-left{top:46px}
  .rucom-left .rucom-brand{height:26px;margin:2px 8px 14px}
}

/* 4) ESPACEMENT des modales (avant : le contenu touchait les bords). */
.rucom-stats-modal,.rucom-reactors-modal,.rucom-report-modal,.rucom-verify-modal,
.rucom-loginp-card,.rucom-posted{padding:22px 24px}
.rucom-stats-modal h3,.rucom-reactors-modal h3,.rucom-report-modal h3{margin-right:34px}

/* 5) DOCK : quand il est OUVERT, la barre disparait et le panneau est COLLE au bas
   (fini le decalage + la barre "Messagerie" qui restait en double). Facon Facebook. */
.rucom-dock[data-open="1"] .rucom-dock-bar{display:none}
.rucom-dock[data-open="1"] .rucom-dock-panel{bottom:0}

/* ============================================================ 0.41.0
   Demandes de relation, page Parametres, liens auto (RU Link/Bottin),
   photo cliquable, menu de classement des conversations, notifs. */

/* Pastille du menu Demandes (comme les autres pastilles). */
.rucom-badge-rel{position:relative}
.rucom-badge-rel[data-count]:not([data-count="0"])::after{content:attr(data-count);
  position:absolute;top:-6px;right:-8px;background:var(--or,var(--ru-accent,#1d5c8f));color:var(--ru-sur-accent,#FFFFFF);font-size:10px;
  font-weight:800;min-width:15px;height:15px;border-radius:8px;display:grid;place-items:center;padding:0 4px}
.rucom-nav.rucom-badge-rel{position:relative}
/* Sur le bouton de navigation pleine largeur, la pastille suit le libelle au
   lieu d'etre collee au bord droit : elle s'aligne avec le texte (0.49). */
.rucom-nav.rucom-badge-rel[data-count]:not([data-count="0"])::after{
  position:static;top:auto;right:auto;margin-left:2px}

/* Photo de profil cliquable : petit indice au survol. */
.rucom-av-link{cursor:pointer}
.rucom-av-link:hover{filter:brightness(.94)}

/* Actions Accepter/Refuser dans une notification. */
.rucom-notif-act{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.rucom-notif-act .rucom-btn{padding:5px 14px}
.rucom-notif-done{color:#1a7f37;font-weight:700}

/* En-tete de page (Demandes, Parametres). */
.rucom-page-h{padding:20px 20px 8px}
.rucom-page-h h2{margin:0;font-size:22px;font-weight:800}
.rucom-page-sub{margin:6px 0 0;color:#6b6b73;font-size:14px}

/* Liste des demandes de relation. */
.rucom-req-list{padding:6px 12px 24px;display:flex;flex-direction:column;gap:8px}
.rucom-req-row{display:flex;align-items:center;gap:12px;padding:12px 14px;background:#fff;
  border:1px solid rgba(17,17,20,.10);border-radius:14px}
.rucom-req-bd{flex:1;min-width:0;cursor:pointer}
.rucom-req-bd b{display:block;font-size:15px;display:flex;align-items:center;gap:5px}
.rucom-req-bd small{color:#6b6b73;font-size:13px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-req-act{display:flex;gap:8px;flex:0 0 auto}
@media(max-width:520px){
  .rucom-req-row{flex-wrap:wrap}
  .rucom-req-act{width:100%;justify-content:flex-end}
}

/* Page Parametres. */
.rucom-set-card{margin:12px 16px;background:#fff;border:1px solid rgba(17,17,20,.10);border-radius:16px;overflow:hidden}
.rucom-set-h{padding:14px 16px;font-weight:800;border-bottom:1px solid rgba(17,17,20,.08)}
.rucom-set-row{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer}
.rucom-set-row:hover{background:#f4f4f6}
.rucom-set-row svg{width:20px;height:20px;color:#6b6b73;flex:0 0 auto}
.rucom-set-row svg:last-child{margin-left:auto;width:18px;height:18px}
.rucom-set-row b{display:block;font-size:15px}
.rucom-set-row small{color:#6b6b73;font-size:13px}
.rucom-blocked-list{padding:6px 0}
.rucom-blocked-row{display:flex;align-items:center;gap:12px;padding:10px 16px}
.rucom-blocked-bd{flex:1;min-width:0}
.rucom-blocked-bd b{display:block;font-size:14px}
.rucom-blocked-bd small{color:#6b6b73;font-size:12px}

/* Menu de classement d'une conversation. */
.rucom-pmenu-lbl{padding:9px 12px 4px;font-size:11px;font-weight:800;text-transform:uppercase;
  letter-spacing:.4px;color:#8a8a92}
.rucom-dock-menu,.rucom-chat-menu{background:none;border:0;cursor:pointer;color:#6b6b73;
  display:grid;place-items:center;padding:4px;border-radius:8px}
.rucom-dock-menu svg,.rucom-chat-menu svg{width:20px;height:20px}
.rucom-dock-menu:hover,.rucom-chat-menu:hover{background:rgba(17,17,20,.06);color:var(--ru-texte,#0e2438)}

/* Liens auto du profil (RU Link -> Reseau -> Bottin). */
.rucom-p-links{margin:14px 16px 4px;padding:14px 16px;background:#fff;
  border:1px solid rgba(17,17,20,.10);border-radius:16px}
.rucom-p-links-h{display:flex;align-items:center;gap:8px;font-weight:800;font-size:14px;margin-bottom:10px}
.rucom-p-links-h svg{width:18px;height:18px;color:#6b6b73}
.rucom-p-links-row{display:flex;flex-wrap:wrap;gap:8px}
.rucom-linkchip{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;
  background:#f4f4f6;border:1px solid rgba(17,17,20,.10);color:var(--ru-texte,#0e2438);text-decoration:none;font-size:13px;font-weight:600}
.rucom-linkchip:hover{background:var(--ru-accent-fonce,#174a73);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-linkchip:hover svg{color:var(--ru-accent,#1d5c8f)}
.rucom-linkchip svg{width:15px;height:15px;color:#6b6b73}
.rucom-rulink-all{margin-top:12px;display:inline-flex}

/* ============================================================ 0.45.0
   Dock messagerie : tailles (demi-ecran / plein ecran), reduire, et le
   menu Options passe enfin AU-DESSUS du dock. */
.rucom-dock-head{gap:4px}
.rucom-dock-size,.rucom-dock-min{border:0;background:none;cursor:pointer;color:var(--muted);
  display:grid;place-items:center;border-radius:8px;padding:4px;width:28px;height:28px;flex:0 0 auto}
.rucom-dock-size svg,.rucom-dock-min svg{width:17px;height:17px}
.rucom-dock-size:hover,.rucom-dock-min:hover{background:var(--soft);color:var(--ru-texte,#0e2438)}
.rucom-dock-size.rucom-on{color:var(--ru-sur-accent,#FFFFFF);background:var(--or)}
.rucom-dock.rucom-dk-half .rucom-dock-panel{width:min(560px,52vw);height:min(760px,86vh);max-height:86vh}
.rucom-dock.rucom-dk-full .rucom-dock-panel{width:min(1080px,94vw);height:94vh;max-height:94vh}
/* Le menu Options du dock doit passer au-dessus du dock (z-index 900). */
.rucom-pmenu.rucom-convmenu{z-index:1200}

/* ============================================================ 0.46.0
   Commentaire epingle, conversation epinglee, recherche dans la
   conversation, indicateur "en train d'ecrire". */

/* Commentaire epingle. */
.rucom-cmt-pin{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;
  color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,rgba(44,111,181,.12));border-radius:999px;padding:2px 9px;margin-bottom:4px}
.rucom-cmt-pin svg{width:13px;height:13px}
.rucom-cmt-pinned>.rucom-bd>.rucom-cmt-bubble{border:1px solid var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,rgba(44,111,181,.12))}

/* Conversation epinglee : petit ecusson + fond leger. */
.rucom-conv-pin{display:inline-flex;vertical-align:middle;margin-right:5px;color:var(--or,var(--ru-accent,#1d5c8f))}
.rucom-conv-pin svg{width:13px;height:13px}
/* FIX 1 - Messagerie (liste et dock) : nom et apercu ont le meme depart.
   L'epingle occupe une place distincte sur la ligne du nom et ne decale plus le nom. */
.rucom-dock-cv-bd .rucom-conv-name,
.rucom-conv .rucom-bd .rucom-conv-name{display:flex;align-items:center;gap:6px;min-width:0;max-width:100%;line-height:1.2}
.rucom-dock-cv-bd .rucom-conv-name b,
.rucom-conv .rucom-bd .rucom-conv-name b{display:block;min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-conv-name .rucom-conv-pin{display:inline-flex;align-items:center;justify-content:center;margin:0;vertical-align:initial;line-height:1;flex:0 0 auto}
.rucom-conv-name .rucom-conv-pin svg{display:block}

.rucom-conv-is-pinned{background:var(--ru-accent-doux,rgba(44,111,181,.12))}

/* Barre de recherche DANS une conversation. */
.rucom-conv-search{display:flex;align-items:center;gap:6px;padding:7px 10px;border-bottom:1px solid var(--line);background:var(--soft,#f4f4f6);flex:0 0 auto}
.rucom-conv-search input{flex:1;border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-family:inherit;font-size:13px;background:#fff}
.rucom-conv-search button{border:0;background:none;font-size:20px;line-height:1;cursor:pointer;color:var(--muted);width:26px;height:26px;border-radius:6px}
.rucom-conv-search button:hover{background:rgba(0,0,0,.06)}
.rucom-msgrow.rucom-msg-hit{background:var(--ru-accent-doux,rgba(44,111,181,.12));border-radius:12px}

/* Indicateur "en train d'ecrire" (trois points animes). */
.rucom-typing{align-self:flex-start;margin:2px 0 6px 6px;background:var(--soft,#f0f0f2);border-radius:14px;padding:9px 13px}
.rucom-typing-dots{display:inline-flex;gap:4px}
.rucom-typing-dots i{width:7px;height:7px;border-radius:50%;background:#9a9aa2;display:inline-block;animation:rucomTyping 1.2s infinite ease-in-out}
.rucom-typing-dots i:nth-child(2){animation-delay:.18s}
.rucom-typing-dots i:nth-child(3){animation-delay:.36s}
@keyframes rucomTyping{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}

/* ============================================================ 0.47.0
   Corrections visuelles : X de modale, en-tete Explorer, grille
   Explorer facon Facebook, Se connecter en haut a droite, dock plein
   ecran vers la page messagerie. */


/* Explorer : bande du haut condensee, alignee a gauche (pilules). */
.rucom-x-head{padding:14px 16px 2px;font-size:18px}
.rucom-xtabs{display:inline-flex;align-items:center;gap:4px;margin:4px 16px 8px;padding:3px;
  background:var(--soft);border-radius:12px;border-bottom:0;width:auto}
.rucom-xtab{flex:0 0 auto;padding:7px 16px;font-size:13.5px;font-weight:700;color:var(--muted);
  border:0;border-bottom:0;background:none;border-radius:9px;cursor:pointer}
.rucom-xtab.rucom-on{color:var(--ru-texte,#0e2438);background:#fff;border-bottom:0;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.rucom-x-viewtoggle{margin-left:6px}

/* Explorer : grille facon Facebook (tuiles ~200px, plus geantes). */
.rucom-x-list .rucom-gallery{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}

/* Bouton "Se connecter" en haut a droite (visiteur non connecte). */
.rucom-signin-top{position:fixed;top:14px;right:20px;z-index:1000}
.rucom-signin-top .rucom-btn{box-shadow:0 4px 16px rgba(0,0,0,.18)}
@media (max-width:999px){.rucom-signin-top{display:none}}

/* Dock : bouton "ouvrir la messagerie en pleine page". */
.rucom-dock-fullpage{border:0;background:none;cursor:pointer;color:var(--muted);display:grid;
  place-items:center;border-radius:8px;padding:4px;width:28px;height:28px;flex:0 0 auto}
.rucom-dock-fullpage svg{width:17px;height:17px}
.rucom-dock-fullpage:hover{background:var(--soft);color:var(--ru-texte,#0e2438)}

/* =======================================================================
   0.49.0 - Profil : boutons sources compacts (Bottin + RU Link),
   onglet Relations, onglet A propos (infos du Bottin + avis de sync).
   ======================================================================= */

/* Boutons sources : Bottin de l'industrie + RU Link, sur une meme ligne,
   a leur taille naturelle (fini le bouton pleine largeur et le mur de liens). */
.rucom-p-srcbtns{display:flex;flex-wrap:wrap;gap:8px;margin:10px 16px 2px}
/* Reseaux sociaux du membre : pastilles compactes cliquables. */
.rucom-p-social{display:flex;flex-wrap:wrap;gap:7px;margin:10px 16px 2px}
.rucom-social-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;
  font-size:12.5px;font-weight:600;text-decoration:none;color:var(--ru-texte,#0e2438);background:#fff;
  border:1px solid rgba(17,17,20,.16);transition:background .15s ease,color .15s ease,border-color .15s ease}
.rucom-social-chip svg{width:15px;height:15px;flex:0 0 auto}
.rucom-social-chip:hover{background:var(--ru-accent-fonce,#174a73);color:var(--ru-sur-accent,#FFFFFF);border-color:var(--ru-accent,#1d5c8f)}
.rucom-social-chip:hover svg{color:var(--ru-accent,#1d5c8f)}
.rucom-srcbtn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:11px;
  font-size:13.5px;font-weight:700;text-decoration:none;color:var(--ru-texte,#0e2438);background:#fff;
  border:1px solid rgba(17,17,20,.16);transition:background .15s ease,border-color .15s ease}
.rucom-srcbtn svg{width:17px;height:17px;flex:0 0 auto}
.rucom-srcbtn{transition:background .18s ease,color .18s ease,border-color .18s ease}
/* Survol uniforme et interactif : fond noir + texte or (les deux boutons pareil,
   pro et anime). RU Link se presente comme le Bottin au repos, puis s'anime. */
.rucom-srcbtn:hover{background:var(--ru-accent-fonce,#174a73);color:var(--ru-sur-accent,#FFFFFF);border-color:var(--ru-accent,#1d5c8f)}
.rucom-srcbtn:hover svg{color:var(--ru-accent,#1d5c8f)}
.rucom-srcbtn-rulink{background:#fff;color:var(--ru-texte,#0e2438);border-color:rgba(17,17,20,.16)}
.rucom-srcbtn-rulink:hover{background:var(--ru-accent-fonce,#174a73);color:var(--ru-sur-accent,#FFFFFF);border-color:var(--ru-accent,#1d5c8f)}

/* Onglet Relations : cartes membres cliquables. */
.rucom-relations{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:10px;padding:12px 16px}
.rucom-rel-card{display:flex;align-items:center;gap:11px;padding:10px 12px;background:#fff;
  border:1px solid rgba(17,17,20,.10);border-radius:14px;cursor:pointer;
  transition:box-shadow .15s ease,border-color .15s ease}
.rucom-rel-card:hover{box-shadow:0 4px 14px rgba(0,0,0,.08);border-color:rgba(17,17,20,.2)}
.rucom-rel-bd{min-width:0;display:flex;flex-direction:column}
.rucom-rel-bd b{font-size:14.5px;font-weight:700;color:var(--ru-texte,#0e2438);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.rucom-rel-bd small{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}

/* Onglet A propos : fiche d'infos du Bottin + avis de synchronisation. */
.rucom-about{padding:12px 16px}
.rucom-about-card{background:#fff;border:1px solid rgba(17,17,20,.10);border-radius:16px;
  padding:6px 16px}
.rucom-about-row{display:flex;gap:14px;padding:11px 0;border-bottom:1px solid rgba(17,17,20,.07)}
.rucom-about-row:last-child{border-bottom:0}
.rucom-about-k{flex:0 0 150px;color:var(--muted);font-size:13px;font-weight:700}
.rucom-about-v{flex:1;min-width:0;color:var(--ru-texte,#0e2438);font-size:14px}
.rucom-about-v a{color:var(--ru-texte,#0e2438);text-decoration:underline}
.rucom-about-note{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:12px;
  padding:11px 14px;background:var(--ru-accent-doux,rgba(44,111,181,.12));border:1px solid var(--ru-accent,#1d5c8f);border-radius:12px;
  color:var(--ru-accent,#1d5c8f);font-size:12.5px}
.rucom-about-note svg{width:17px;height:17px;flex:0 0 auto;color:var(--ru-accent,#1d5c8f)}
.rucom-about-edit{margin-left:auto;display:inline-flex;align-items:center;padding:6px 13px;
  border-radius:9px;background:var(--or,var(--ru-accent,#1d5c8f));color:var(--ru-sur-accent,#FFFFFF);font-weight:800;text-decoration:none;
  font-size:12.5px;border:1px solid var(--ru-accent,#1d5c8f)}
.rucom-about-edit:hover{background:var(--ru-accent-fonce,#174a73)}
@media(max-width:600px){.rucom-about-k{flex-basis:110px}.rucom-relations{grid-template-columns:1fr}}

/* =======================================================================
   0.50.0 - Fil d'accueil : barre de filtre + bascule d'affichage
   (mode Facebook / mode Instagram) + filtres pro tires du Bottin.
   ======================================================================= */

.rucom-feedbar{position:relative;display:flex;align-items:center;gap:8px;margin:12px 16px 2px}
.rucom-fspacer{flex:1}

/* Bouton "Filtrer" (ouvre le panneau). */
.rucom-fbtn{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:11px;
  font-size:13.5px;font-weight:700;color:var(--ru-texte,#0e2438);background:var(--soft);border:1px solid rgba(17,17,20,.12);
  cursor:pointer;position:relative;transition:background .15s ease,border-color .15s ease}
.rucom-fbtn svg{width:17px;height:17px}
.rucom-fbtn:hover{background:#ececef}
.rucom-fbtn.rucom-on{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF);border-color:var(--ru-accent,#1d5c8f)}
.rucom-fdot{width:8px;height:8px;border-radius:50%;background:var(--or,var(--ru-accent,#1d5c8f));display:inline-block}

/* Bascule d'affichage : mur (Facebook) / grille (Instagram). */
.rucom-fviews{display:inline-flex;gap:2px;padding:3px;background:var(--soft);border-radius:11px;
  border:1px solid rgba(17,17,20,.12)}
.rucom-fview{display:grid;place-items:center;width:34px;height:30px;border:0;background:none;border-radius:8px;
  cursor:pointer;color:var(--muted)}
.rucom-fview svg{width:19px;height:19px}
.rucom-fview.rucom-on{background:#fff;color:var(--ru-texte,#0e2438);box-shadow:0 1px 3px rgba(0,0,0,.12)}

/* Panneau des filtres (dropdown). */
.rucom-fpanel{position:absolute;top:calc(100% + 8px);left:16px;right:16px;z-index:60;
  background:#fff;border:1px solid rgba(17,17,20,.14);border-radius:16px;
  box-shadow:0 16px 40px rgba(0,0,0,.16);padding:14px}
.rucom-fgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 14px}
.rucom-frow{display:flex;flex-direction:column;gap:5px;font-size:12.5px;font-weight:700;color:var(--muted);min-width:0}
.rucom-fsel{font-family:inherit;font-size:14px;font-weight:600;color:var(--ru-texte,#0e2438);padding:9px 10px;border-radius:10px;
  border:1px solid rgba(17,17,20,.18);background:#fff;cursor:pointer;
  width:100%;max-width:100%;box-sizing:border-box;text-overflow:ellipsis}
.rucom-fsel:focus{outline:none;border-color:var(--ru-texte,#0e2438);box-shadow:0 0 0 3px var(--ru-accent-filet,rgba(44,111,181,.45))}
.rucom-factions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
@media(max-width:600px){.rucom-fgrid{grid-template-columns:1fr}.rucom-fpanel{left:8px;right:8px}}

/* Fil en mode grille (Instagram) : memes tuiles que le profil/Explorer. */
.rucom-feed-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;padding-top:14px}
@media(max-width:600px){.rucom-feed-grid{grid-template-columns:1fr 1fr;gap:4px}}

/* Vue LISTE COMPACTE des publications (fil + profil) : rangee + vignette 56px. */
.rucom-feed-listv{display:flex;flex-direction:column;margin-top:14px;border:1.5px solid #151518;border-radius:16px;overflow:hidden;background:#fff}
.rucom-plist-row{display:flex;align-items:center;gap:14px;padding:12px 14px;cursor:pointer}
.rucom-plist-row+.rucom-plist-row{border-top:1px solid var(--line)}
.rucom-plist-row:hover{background:var(--soft)}
.rucom-plist-thumb{flex:0 0 auto;width:56px;height:56px;border-radius:12px;overflow:hidden;background:var(--ru-surface-2,#F4F4F5);position:relative}
.rucom-plist-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.rucom-plist-noimg{display:grid;place-items:center}
.rucom-plist-noimg svg{width:20px;height:20px;color:var(--or)}
.rucom-plist-play{position:absolute;inset:0;display:grid;place-items:center;color:#fff}
.rucom-plist-play svg{width:22px;height:22px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.6))}
.rucom-plist-bd{min-width:0;display:flex;flex-direction:column;gap:3px;flex:1}
.rucom-plist-title{font-size:14.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.rucom-plist-ex{font-size:13px;color:var(--ru-texte,#0e2438);opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-plist-meta{display:flex;align-items:center;gap:12px;font-size:12px;color:var(--muted);font-weight:600}
.rucom-plist-st{display:inline-flex;align-items:center;gap:4px}
.rucom-plist-st svg{width:13px;height:13px}
.rucom-p-posts.rucom-feed-listv{padding:0}

/* =======================================================================
   0.51.0 - Volet messagerie : modale "Quoi de neuf", messages ephemeres,
   invitations, reglages de messagerie.
   ======================================================================= */

/* Modale de composition facon Facebook (barre = declencheur -> modale centree). */
.rucom-cmpmodal{position:fixed;inset:0;z-index:1300;background:rgba(17,17,20,.6);
  display:flex;align-items:center;justify-content:center;padding:24px 16px;overflow:auto;
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.rucom-cmpmodal-panel{background:#fff;width:100%;max-width:540px;border-radius:20px;
  box-shadow:0 30px 80px rgba(0,0,0,.4);overflow:hidden;margin:auto;
  animation:rucom-cmp-in .16s ease}
@keyframes rucom-cmp-in{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
.rucom-cmpmodal-h{display:flex;align-items:center;justify-content:center;position:relative;
  padding:16px 18px;border-bottom:1px solid var(--line,#e4e4e8);font-size:17px;font-weight:900;letter-spacing:-.01em}
.rucom-cmpmodal-x{position:absolute;right:12px;top:50%;transform:translateY(-50%);border:0;
  background:var(--soft,#f5f5f7);border-radius:50%;width:34px;height:34px;font-size:20px;
  cursor:pointer;color:var(--ru-texte,#0e2438);display:grid;place-items:center;line-height:1;transition:background .12s ease}
.rucom-cmpmodal-x:hover{background:#e6e6ea}
.rucom-cmpmodal .rucom-compose-box{padding:16px 18px 18px}
.rucom-cmpmodal .rucom-compose-box textarea{min-height:120px;font-size:15px}
.rucom-cmpmodal .rucom-compose-box{margin:0;border:0;border-radius:0;box-shadow:none}
@media(max-width:640px){
  .rucom-cmpmodal{padding:0}
  .rucom-cmpmodal-panel{max-width:none;min-height:100%;border-radius:0}
}

/* Messages ephemeres (facon Snapchat). */
.rucom-eph{display:inline-flex;align-items:center;gap:7px}
.rucom-eph svg{width:16px;height:16px;flex:0 0 auto}
.rucom-eph-locked{cursor:pointer;border:1px dashed rgba(17,17,20,.3);background:#fff;color:var(--ru-texte,#0e2438);font-weight:700}
.rucom-eph-locked:hover{background:var(--soft,#f5f5f7)}
.rucom-eph-done{opacity:.7;font-style:italic}
.rucom-eph-badge{display:inline-flex;vertical-align:middle;margin-left:6px;opacity:.75}
.rucom-eph-badge svg{width:13px;height:13px}
.rucom-eph-toggle.rucom-on{color:var(--ru-sur-accent,#FFFFFF);background:var(--ru-accent,#1d5c8f)}
/* Fenetre de message ephemere : blanche, moderne, aspect VIP (accent or discret). */
.rucom-ephov{position:fixed;inset:0;z-index:1400;background:rgba(17,17,20,.45);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;padding:20px}
.rucom-ephov-card{position:relative;background:#fff;color:var(--ru-texte,#0e2438);border-radius:20px;
  padding:30px 28px 24px;max-width:420px;width:100%;text-align:center;
  box-shadow:0 30px 70px rgba(0,0,0,.32);border:1px solid rgba(17,17,20,.06)}
.rucom-ephov-card::before{content:"";position:absolute;left:0;right:0;top:0;height:5px;
  border-radius:20px 20px 0 0;background:linear-gradient(90deg,var(--ru-accent,#1d5c8f),var(--ru-accent,#1d5c8f))}
.rucom-ephov-card>svg{width:30px;height:30px;color:var(--ru-sur-accent,#FFFFFF);background:var(--or,var(--ru-accent,#1d5c8f));
  border-radius:50%;padding:7px;box-sizing:content-box;margin-bottom:6px}
.rucom-ephov-tx{font-size:19px;font-weight:600;margin:14px 4px;word-break:break-word;line-height:1.45}
.rucom-ephov-media{margin:14px 0}
.rucom-ephov-hint{color:#8a8a92;font-size:12.5px;margin:6px 0 18px;letter-spacing:.01em}
.rucom-ephov-x{min-width:120px}

/* Banniere invitation (boite Demandes). */
.rucom-invbar{background:var(--ru-accent-doux,rgba(44,111,181,.12));border-top:1px solid var(--ru-accent,#1d5c8f);padding:11px 14px;
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.rucom-invbar-t{display:flex;align-items:center;gap:8px;color:var(--ru-accent,#1d5c8f);font-size:13px;font-weight:600}
.rucom-invbar-t svg{width:18px;height:18px;flex:0 0 auto;color:var(--ru-accent,#1d5c8f)}
.rucom-invbar-a{display:flex;gap:8px;flex-wrap:wrap}

/* Reglages de messagerie (Parametres). */
.rucom-msgset{padding:4px 2px}
.rucom-msgset-row{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:11px 4px;border-bottom:1px solid rgba(17,17,20,.07);font-size:14px}
.rucom-msgset-row:last-child{border-bottom:0}
.rucom-switch{position:relative;width:44px;height:26px;border-radius:14px;border:0;cursor:pointer;
  background:#d2d2d8;transition:background .15s ease;flex:0 0 auto}
.rucom-switch i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:#fff;transition:left .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.rucom-switch.rucom-on{background:var(--or,var(--ru-accent,#1d5c8f))}
.rucom-switch.rucom-on i{left:21px}
.rucom-seg{display:inline-flex;background:var(--soft,#f5f5f7);border-radius:10px;padding:3px;
  border:1px solid rgba(17,17,20,.12)}
.rucom-segb{border:0;background:none;padding:6px 13px;border-radius:8px;font-size:13px;font-weight:700;
  color:var(--muted,#6b6b73);cursor:pointer;font-family:inherit}
.rucom-segb.rucom-on{background:#fff;color:var(--ru-texte,#0e2438);box-shadow:0 1px 3px rgba(0,0,0,.12)}

/* 0.52 - Message d'absence automatique (reglages de messagerie). */
.rucom-away-wrap{padding:8px 4px 4px;display:flex;flex-direction:column;gap:8px}
.rucom-away-text{width:100%;box-sizing:border-box;font-family:inherit;font-size:14px;color:var(--ru-texte,#0e2438);
  padding:10px 12px;border-radius:12px;border:1px solid rgba(17,17,20,.18);resize:vertical;min-height:56px}
.rucom-away-text:focus{outline:none;border-color:var(--ru-texte,#0e2438);box-shadow:0 0 0 3px var(--ru-accent-filet,rgba(44,111,181,.45))}
.rucom-away-actions{display:flex;justify-content:flex-end}

/* =======================================================================
   0.52 - Messagerie de GROUPE.
   ======================================================================= */
.rucom-m-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.rucom-newgrp{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:10px;
  border:1px solid rgba(17,17,20,.14);background:var(--soft,#f5f5f7);color:var(--ru-texte,#0e2438);font-weight:700;
  font-size:12.5px;font-family:inherit;cursor:pointer}
.rucom-newgrp svg{width:16px;height:16px}
.rucom-newgrp:hover{background:#ececef}
.rucom-m-head-actions{display:inline-flex;align-items:center;gap:6px}
.rucom-msg-optbtn{width:34px;height:34px;border:1px solid rgba(17,17,20,.14);background:var(--soft,#f5f5f7);color:var(--ru-texte,#0e2438);border-radius:10px;display:grid;place-items:center;cursor:pointer;padding:0}
.rucom-msg-optbtn svg{width:18px;height:18px}
.rucom-msg-optbtn:hover{background:#ececef}

/* Avatars empiles dans la liste des conversations (groupe). */
.rucom-grp-av{position:relative;width:50px;height:50px;flex:0 0 auto}
.rucom-grp-av .rucom-av{position:absolute;border:2px solid #fff;border-radius:50%}
.rucom-grp-av .rucom-av:nth-child(1){top:0;left:0}
.rucom-grp-av .rucom-av:nth-child(2){bottom:0;right:0}
.rucom-grp-av .rucom-av:nth-child(3){bottom:0;left:0}
.rucom-grp-hicon{display:grid;place-items:center;background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-grp-hicon svg{width:22px;height:22px}
.rucom-grp-sub{color:var(--muted,#6b6b73)}

/* Bande des membres d'un groupe (photos cliquables vers le profil). */
.rucom-grp-members{display:flex;gap:8px;overflow-x:auto;padding:8px 12px;border-bottom:1px solid var(--line);background:#fafafa;-webkit-overflow-scrolling:touch}
.rucom-grp-members:empty{display:none}
.rucom-grp-mem{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;padding:3px 10px 3px 3px;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;font-size:12.5px;font-weight:600;color:var(--ru-texte,#0e2438);text-decoration:none}
.rucom-grp-mem:hover{border-color:var(--ru-texte,#0e2438)}
.rucom-grp-mem img,.rucom-grp-mem .rucom-av{width:26px;height:26px;border-radius:50%;flex:0 0 auto}
.rucom-grp-mem-n{white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}

/* Nom de l'expediteur au-dessus des bulles dans un groupe. */
.rucom-grp-sender{font-size:11.5px;font-weight:700;color:var(--muted,#6b6b73);margin:8px 0 2px 40px}

/* Modale de creation de groupe. */
.rucom-grp-modal{max-width:460px;width:100%;padding:22px 22px 18px;position:relative}
.rucom-grp-modal .rucom-modal-close{top:16px;right:16px}
.rucom-grp-modal h3{display:flex;align-items:center;gap:8px;margin:0 34px 4px 0;font-size:18px;font-weight:800}
.rucom-grp-modal h3 svg{width:20px;height:20px}
.rucom-grp-sub{margin:0 0 6px;color:var(--muted);font-size:13px}
.rucom-grp-title,.rucom-grp-search{width:100%;box-sizing:border-box;font-family:inherit;font-size:14px;
  padding:10px 12px;border-radius:12px;border:1px solid rgba(17,17,20,.18);margin-top:10px}
.rucom-grp-title:focus,.rucom-grp-search:focus{outline:none;border-color:var(--ru-texte,#0e2438);box-shadow:0 0 0 3px var(--ru-accent-filet,rgba(44,111,181,.45))}
.rucom-grp-picked{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.rucom-grp-picked:empty{display:none}
.rucom-grp-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 11px;border-radius:999px;
  background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF);font-size:12.5px;font-weight:600}
.rucom-grp-chip button{border:0;background:rgba(255,255,255,.2);color:#fff;width:18px;height:18px;border-radius:50%;
  cursor:pointer;font-size:14px;line-height:1;display:grid;place-items:center}
.rucom-grp-results{max-height:230px;overflow:auto;margin-top:8px}
.rucom-grp-r{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;cursor:pointer}
.rucom-grp-r:hover{background:var(--soft,#f5f5f7)}
.rucom-grp-r.rucom-on{background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-grp-r .rucom-bd{flex:1;min-width:0}
.rucom-grp-r .rucom-bd b{display:block;font-size:14px}
.rucom-grp-r .rucom-bd small{color:var(--muted,#6b6b73);font-size:12px}
.rucom-grp-r>svg{width:18px;height:18px;color:#1a7f37;flex:0 0 auto}

/* =======================================================================
   0.53 - Republication (repost facon LinkedIn) + passe MOBILE.
   ======================================================================= */

/* Vignette de la publication d'origine (repost). */
.rucom-repost-embed{border:1px solid rgba(17,17,20,.14);border-radius:14px;margin:6px 16px 4px;
  padding:10px 12px;background:#fafafb;cursor:pointer}
.rucom-repost-embed:hover{background:#f2f2f5}
.rucom-repost-head{display:flex;align-items:center;gap:8px;font-size:13.5px;margin-bottom:6px}
.rucom-repost-head b{font-weight:700}
.rucom-repost-head small{color:var(--muted,#6b6b73);margin-left:auto}
.rucom-repost-body{font-size:14px;color:var(--ru-texte,#0e2438);line-height:1.45;white-space:pre-wrap;word-break:break-word}
.rucom-repost-img img{width:100%;border-radius:10px;display:block;margin-bottom:6px}
.rucom-repost-gone{color:var(--muted,#6b6b73);font-style:italic;cursor:default}
.rucom-repost-modal{max-width:520px;width:100%}
.rucom-repost-tx{width:100%;box-sizing:border-box;font-family:inherit;font-size:15px;padding:12px 14px;
  border-radius:12px;border:1px solid rgba(17,17,20,.18);resize:vertical;min-height:70px;margin:6px 0 10px}
.rucom-repost-tx:focus{outline:none;border-color:var(--ru-texte,#0e2438);box-shadow:0 0 0 3px var(--ru-accent-filet,rgba(44,111,181,.45))}
.rucom-pmenu-sep{height:1px;background:rgba(17,17,20,.10);margin:4px 6px}

/* ---------------------------------------------------------- PASSE MOBILE */
@media (max-width:760px){
  /* Modales : plein cadre, contenu defilable, actions atteignables. */
  .rucom-modal{padding:10px}
  .rucom-modal-card{max-width:100%;width:100%;max-height:92vh}
  .rucom-modal-card .rucom-ed-actions{position:sticky;bottom:0;background:#fff;padding-top:10px;
    margin-top:6px;border-top:1px solid rgba(17,17,20,.08);flex-wrap:wrap}
  .rucom-modal-card .rucom-ed-actions .rucom-btn{flex:1 1 auto;min-height:44px}

  /* Menus contextuels (partage, conversation, compte) : jamais hors ecran. */
  .rucom-pmenu{max-width:calc(100vw - 20px)}
  .rucom-pmenu-item{min-height:44px}

  /* Barre de filtre du fil : reste sur une ligne, panneau defilable. */
  .rucom-feedbar{flex-wrap:wrap}
  .rucom-fpanel{max-height:70vh;overflow:auto}
  .rucom-fbtn,.rucom-fview{min-height:40px}

  /* Boutons/pastilles tactiles : cible d'au moins 40 px. */
  .rucom-srcbtn,.rucom-newgrp,.rucom-segb,.rucom-switch{min-height:40px}
  .rucom-ic{min-width:40px;min-height:40px}

  /* Republication : marges plus serrees. */
  .rucom-repost-embed{margin-left:12px;margin-right:12px}

  /* Groupe : le nom d'expediteur suit la marge de l'avatar. */
  .rucom-grp-sender{margin-left:34px}

  /* Reglages messagerie : la segmentation passe sous le libelle si trop etroit. */
  .rucom-msgset-row{flex-wrap:wrap}

  /* Modale evenement : jamais en "taille PC" sur telephone, espacement adapte. */
  .rucom-ev-modal{max-width:100%;padding:18px 16px 16px}
  .rucom-ev-row2{grid-template-columns:1fr}

  /* Top bar mobile : notifications et messagerie sont deja dans le menu hamburger,
     on les retire de la barre du haut pour ne pas doubler. */
  .rucom-appbar .rucom-badge-dot,
  .rucom-appbar .rucom-badge-msg{display:none}
}

/* Tres petits ecrans : tuiles du fil en grille sur 1 colonne large. */
@media (max-width:380px){
  .rucom-relations{grid-template-columns:1fr}
  .rucom-grp-chip{font-size:12px}
}

/* =======================================================================
   0.54 - Module EVENEMENTS (page, cartes, RSVP, modale, detail).
   ======================================================================= */
.rucom-ev-page{max-width:820px;margin:0 auto}
/* Rangee 1 : le titre, et l'action principale. Rien d'autre. */
.rucom-ev-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 2px 12px;flex-wrap:wrap}
.rucom-ev-head-t{display:flex;align-items:center;gap:10px;min-width:0}
.rucom-ev-head-t svg{width:24px;height:24px;color:var(--ru-texte,#0e2438);flex:0 0 auto}
.rucom-ev-head h2{margin:0;font-size:24px;font-weight:800}
/* Rangee 2 : les onglets a gauche, les outils a droite. Les onglets defilent
   horizontalement si la place manque, au lieu de pousser les outils dehors. */
.rucom-ev-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;
  border-bottom:1px solid var(--line);margin-bottom:14px}
.rucom-ev-bar .rucom-ev-tabs{border-bottom:0;margin:0;flex:1 1 auto;min-width:0;
  overflow-x:auto;scrollbar-width:none}
.rucom-ev-bar .rucom-ev-tabs::-webkit-scrollbar{display:none}
.rucom-ev-tools{display:flex;align-items:center;gap:8px;flex:0 0 auto;padding-bottom:6px}
.rucom-ev-newbtn{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;flex:0 0 auto}
@media (max-width:720px){
  /* Sur telephone les outils passent SOUS les onglets : les serrer sur la meme
     ligne redonnerait exactement le defaut qu'on corrige. */
  .rucom-ev-bar{flex-direction:column;align-items:stretch;gap:0}
  .rucom-ev-tools{justify-content:flex-end;padding:8px 0}
  .rucom-ev-newbtn{width:100%;justify-content:center}
}
.rucom-ev-newbtn svg{width:16px;height:16px;flex:0 0 auto}
/* Bascule Liste / Calendrier (meme esprit que la bascule mur/grille du fil). */
.rucom-ev-viewtoggle{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.rucom-ev-vbtn{border:0;background:#fff;padding:8px 10px;cursor:pointer;color:var(--muted,#6b6b73);display:inline-flex;align-items:center}
.rucom-ev-vbtn svg{width:18px;height:18px}
.rucom-ev-vbtn.rucom-on{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}
/* ---- Mode CALENDRIER ---- */
.rucom-cal{padding:4px 14px 24px}
.rucom-cal-nav{display:flex;align-items:center;justify-content:space-between;margin:4px 0 12px}
.rucom-cal-title{font-size:17px;font-weight:800}
.rucom-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.rucom-cal-dow{margin-bottom:6px}
.rucom-cal-dowc{text-align:center;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted,#6b6b73);padding:2px 0}
.rucom-cal-cell{min-height:82px;border:1px solid var(--line);border-radius:10px;padding:5px;display:flex;flex-direction:column;gap:3px;background:#fff;overflow:hidden}
.rucom-cal-empty{border:0;background:transparent}
.rucom-cal-has{border-color:rgba(17,17,20,.18)}
.rucom-cal-today{border-color:var(--or,var(--ru-accent,#1d5c8f));box-shadow:inset 0 0 0 1px var(--or,var(--ru-accent,#1d5c8f))}
.rucom-cal-d{font-size:12px;font-weight:700;color:#333}
.rucom-cal-today .rucom-cal-d{color:var(--ru-texte,#0e2438)}
.rucom-cal-ev{font-size:11px;font-weight:600;line-height:1.25;background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF);border-radius:6px;padding:2px 6px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-cal-ev:hover{background:var(--ru-accent-fonce,#174a73)}
.rucom-cal-more{font-size:10.5px;color:var(--muted,#6b6b73);font-weight:700;padding-left:4px}
@media(max-width:600px){
  .rucom-cal-cell{min-height:60px;padding:3px}
  .rucom-cal-ev{font-size:10px;padding:1px 4px}
  .rucom-cal-dowc{font-size:9.5px}
}
.rucom-ev-tabs{display:flex;gap:4px;margin:6px 18px 12px;border-bottom:1px solid var(--line,#e4e4e8)}
.rucom-ev-tab{border:0;background:none;padding:10px 14px;font-size:14px;font-weight:700;color:var(--muted,#6b6b73);
  cursor:pointer;font-family:inherit;border-bottom:2px solid transparent;margin-bottom:-1px}
.rucom-ev-tab:hover{color:var(--ru-texte,#0e2438)}
.rucom-ev-tab.rucom-on{color:var(--ru-texte,#0e2438);border-bottom-color:var(--or,var(--ru-accent,#1d5c8f))}

.rucom-ev-empty{text-align:center;padding:48px 24px;color:var(--muted,#6b6b73);
  background:#fff;border:1px solid var(--line);border-radius:16px}
.rucom-ev-empty-ic{display:inline-flex;width:64px;height:64px;border-radius:50%;background:var(--soft,#f5f5f7);
  align-items:center;justify-content:center;margin-bottom:14px}
.rucom-ev-empty-ic svg{width:30px;height:30px;color:#b0b0b8}
.rucom-ev-empty-t{font-size:15px;margin-bottom:16px}

.rucom-ev-list{display:flex;flex-direction:column;gap:14px;padding:4px 18px 30px}
.rucom-ev-card{background:#fff;border:1px solid var(--line,#e4e4e8);border-radius:16px;overflow:hidden}
/* Grille des evenements : 2 colonnes sur ordinateur, 1 sur telephone. */
.rucom-ev-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media (max-width:760px){ .rucom-ev-grid{grid-template-columns:1fr} }
.rucom-ev-pager{display:flex;align-items:center;justify-content:center;gap:16px;margin:22px 0 8px}
.rucom-ev-pager-i{font-size:13px;color:var(--muted);font-weight:700}
.rucom-ev-pager .rucom-btn[disabled]{opacity:.45;cursor:default}
/* Console de moderation (agents RU) */
.rucom-mod-tabs{display:flex;gap:8px;margin:6px 0 16px;flex-wrap:wrap}
.rucom-mod-tab{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 16px;font-weight:700;font-size:13.5px;cursor:pointer;color:var(--ru-texte,#0e2438)}
.rucom-mod-tab.rucom-on{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF);border-color:var(--ru-accent,#1d5c8f)}
.rucom-mod-card{border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:12px;background:#fff}
.rucom-mod-cardh{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.rucom-mod-badge{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:#fdecec;color:#b00000;border-radius:999px;padding:2px 10px}
.rucom-mod-cardh small{color:var(--muted);font-size:12px}
.rucom-mod-excerpt{font-style:italic;color:var(--ru-texte,#0e2438);margin:4px 0 8px;font-size:14px}
.rucom-mod-meta{font-size:12.5px;color:var(--muted);margin:0 0 12px}
.rucom-mod-meta b{color:var(--ru-texte,#0e2438)}
.rucom-mod-acts{display:flex;gap:8px;flex-wrap:wrap}
.rucom-mod-search{width:100%;border:1px solid var(--line);border-radius:12px;padding:11px 14px;font-size:14px;margin-bottom:14px}
.rucom-mod-mrow{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid #f0f0f2}
.rucom-mod-mbd{flex:1 1 auto;min-width:0;cursor:pointer}
.rucom-mod-mbd b{display:flex;align-items:center;gap:5px;font-size:14.5px}
.rucom-mod-mbd b svg{width:15px;height:15px;stroke:var(--or,var(--ru-accent,#1d5c8f))}
.rucom-mod-mbd small{color:var(--muted);font-size:12.5px}
.rucom-mod-macts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;max-width:60%}
.rucom-btn.rucom-danger{background:#fdecec;color:#b00000;border-color:#f5c6c6}
.rucom-btn.rucom-danger:hover{background:#b00000;color:#fff}
/* BANNIERE : cadre fixe uniforme, image ENTIERE centree sur fond de marque.
   Rien n'est coupe (portrait, carre ou large), toutes les cartes s'alignent. */
.rucom-ev-cover{cursor:pointer;height:210px;background:var(--ru-surface-2,#F4F4F5);display:flex;align-items:center;justify-content:center;overflow:hidden}
.rucom-ev-cover img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}
.rucom-ev-body{display:flex;gap:14px;padding:14px 16px}
.rucom-ev-date{flex:0 0 56px;text-align:center;border:1px solid var(--line,#e4e4e8);border-top:3px solid var(--or,var(--ru-accent,#1d5c8f));
  border-radius:12px;padding:8px 4px;height:fit-content;background:#fafafa}
.rucom-ev-m{display:block;font-size:11px;font-weight:800;text-transform:uppercase;color:var(--ru-accent,#1d5c8f);letter-spacing:.04em}
.rucom-ev-d{display:block;font-size:22px;font-weight:900;color:var(--ru-texte,#0e2438);line-height:1}
.rucom-ev-main{flex:1;min-width:0}
.rucom-ev-title{display:block;font-size:17px;font-weight:800;color:var(--ru-texte,#0e2438);cursor:pointer;line-height:1.25}
.rucom-ev-title:hover{text-decoration:underline}
.rucom-ev-when{font-size:13.5px;color:var(--muted,#6b6b73);margin-top:3px}
.rucom-ev-loc{display:flex;align-items:center;gap:5px;font-size:13px;color:#444;margin-top:5px}
.rucom-ev-loc svg{width:15px;height:15px;flex:0 0 auto;color:var(--muted,#6b6b73)}
.rucom-ev-org{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:12.5px;color:var(--muted,#6b6b73)}
.rucom-ev-count{margin-left:2px}
.rucom-ev-acts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:0 16px 14px}
.rucom-ev-acts .rucom-btn svg{width:15px;height:15px}
.rucom-ev-edit{margin-left:auto}

/* Modale de creation / edition. */
.rucom-ev-modal{max-width:560px;width:100%;padding:24px 26px 22px}
.rucom-ev-modal h3{margin:0 0 4px}
.rucom-ev-modal h3{display:flex;align-items:center;gap:8px}
.rucom-ev-modal h3 svg{width:20px;height:20px}
.rucom-ev-f{display:flex;flex-direction:column;gap:5px;margin-top:10px;font-size:12.5px;font-weight:700;color:var(--muted,#6b6b73)}
.rucom-ev-f input,.rucom-ev-f textarea,.rucom-ev-f select{font-family:inherit;font-size:14px;font-weight:500;color:var(--ru-texte,#0e2438);
  padding:10px 12px;border-radius:12px;border:1px solid rgba(17,17,20,.18);background:#fff;box-sizing:border-box;width:100%}
.rucom-ev-f input:focus,.rucom-ev-f textarea:focus,.rucom-ev-f select:focus{outline:none;border-color:var(--ru-texte,#0e2438);box-shadow:0 0 0 3px var(--ru-accent-filet,rgba(44,111,181,.45))}
.rucom-ev-row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rucom-ev-del{margin-right:auto;color:#b00000}

/* Detail. */
.rucom-ev-detail{max-width:560px;width:100%;padding:0;overflow:hidden}
.rucom-ev-dcover img{width:100%;max-height:280px;object-fit:cover;display:block}
.rucom-ev-dbody{padding:18px 20px 20px}
.rucom-ev-dbody h3{margin:0 0 10px;font-size:21px;font-weight:800}
.rucom-ev-drow{display:flex;align-items:center;gap:8px;font-size:14px;color:#333;margin:6px 0}
.rucom-ev-drow svg{width:18px;height:18px;flex:0 0 auto;color:var(--muted,#6b6b73)}
.rucom-ev-dtext{margin:12px 0;font-size:14.5px;line-height:1.55;color:var(--ru-texte,#0e2438);white-space:pre-wrap}
.rucom-ev-dcounts{font-size:13px;color:var(--muted,#6b6b73);margin:8px 0 4px}
.rucom-ev-attend{display:flex;align-items:center;gap:10px;margin:12px 0 4px}
.rucom-ev-faces{display:flex}
.rucom-ev-face{margin-left:-8px;border:2px solid #fff;border-radius:50%;overflow:hidden;display:inline-flex;line-height:0}
.rucom-ev-face:first-child{margin-left:0}
.rucom-ev-face img,.rucom-ev-face .rucom-avatar{width:28px;height:28px;border-radius:50%;display:block}
.rucom-ev-attlbl{font-size:13px;color:var(--muted,#6b6b73)}

/* ---- PAGE EVENEMENT (style billetterie, design RU) 0.61 ---- */
.rucom-evp{max-width:980px;margin:0 auto;padding:16px 18px 48px}
/* Toutes les icones des boutons de la page sont calibrees (fini les tuiles geantes). */
.rucom-evp .rucom-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:13.5px}
.rucom-evp .rucom-btn svg{width:16px;height:16px;flex:0 0 auto}
.rucom-evp-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px;flex-wrap:wrap}
.rucom-evp-topacts{display:flex;gap:8px;flex-wrap:wrap}
.rucom-evp-back{font-weight:700}
.rucom-evp .rucom-btn.rucom-danger{background:#c0392b;border-color:#c0392b;color:#fff}
.rucom-evp .rucom-btn.rucom-danger svg{color:#fff}
.rucom-evp .rucom-btn.rucom-danger:hover{background:#a93226;color:#fff;border-color:#a93226}
.rucom-evp-hero{border-radius:16px;overflow:hidden;border:1px solid var(--line);margin-bottom:18px;background:var(--ru-surface-2,#F4F4F5)}
.rucom-evp-hero img{width:100%;max-height:360px;object-fit:cover;display:block}

.rucom-evp-cols{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:28px;align-items:start}
@media(max-width:820px){.rucom-evp-cols{grid-template-columns:1fr;gap:18px}}

.rucom-evp-vis{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted,#6b6b73);background:#f4f4f5;border-radius:999px;padding:3px 11px}
.rucom-evp-title{font-size:30px;font-weight:900;margin:12px 0 10px;line-height:1.12}
@media(max-width:600px){.rucom-evp-title{font-size:23px}}
.rucom-evp-meta{margin:6px 0 4px}
.rucom-evp-row{display:flex;align-items:center;gap:9px;font-size:15px;color:var(--ru-texte,#0e2438);margin:7px 0}
.rucom-evp-row svg{width:19px;height:19px;flex:0 0 auto;color:var(--muted,#6b6b73)}
.rucom-evp-sec{margin:20px 0 0}
.rucom-evp-sec h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted,#6b6b73);margin:0 0 10px;font-weight:800}
.rucom-evp-orgs{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rucom-evp-org{display:inline-flex;align-items:center;gap:8px;padding:4px 13px 4px 4px;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;font-size:13.5px;font-weight:600}
.rucom-evp-org:hover{border-color:var(--ru-texte,#0e2438)}
.rucom-evp-org img,.rucom-evp-org .rucom-av{width:30px;height:30px;border-radius:50%}
.rucom-evp-text{font-size:15px;line-height:1.62;color:var(--ru-texte,#0e2438);white-space:pre-wrap}

/* Colonne droite : carte d'action collante facon billetterie. */
.rucom-evp-aside{align-self:start;position:sticky;top:16px}
.rucom-evp-buy{border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 8px 26px rgba(0,0,0,.06);background:#fff}
.rucom-evp-when{display:flex;align-items:center;gap:8px;font-size:14.5px;font-weight:700}
.rucom-evp-when svg{width:18px;height:18px;color:var(--muted,#6b6b73);flex:0 0 auto}
.rucom-evp-where{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted,#6b6b73);margin-top:4px}
.rucom-evp-where svg{width:16px;height:16px;flex:0 0 auto}
.rucom-evp-buybtns{display:flex;flex-direction:column;gap:7px;margin-top:12px}
.rucom-evp-buybtns .rucom-btn{width:100%;min-height:36px;font-size:13px;padding:7px 12px;font-weight:700}
.rucom-evp-buybtns .rucom-btn svg{width:15px;height:15px}
.rucom-evp-cta{font-size:13.5px}
.rucom-evp-rsvp{display:flex;gap:7px}
.rucom-evp-rsvp .rucom-btn{flex:1;min-height:34px;font-size:12.5px;padding:6px 8px}
.rucom-evp-attend{display:flex;align-items:center;gap:10px;margin:14px 0 2px;cursor:pointer}
.rucom-evp-attend:hover{opacity:.85}
.rucom-evp-counts{font-size:13px;color:var(--muted,#6b6b73);margin-top:8px;cursor:pointer}
.rucom-evp-counts:hover{color:var(--ru-texte,#0e2438);text-decoration:underline}
/* Colonne principale de l'evenement : posee dans une vraie boite (plus "perdue dans le HTML"). */
.rucom-evp-main{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;box-shadow:0 6px 22px rgba(0,0,0,.05)}
@media(max-width:600px){.rucom-evp-main{padding:16px}}
.rucom-evp-main .rucom-evp-sec:first-of-type{margin-top:14px}
/* Section "A propos" : encadre le texte pour qu'il respire. */
.rucom-evp-main .rucom-evp-text{background:#fafafa;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.rucom-evp-price{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;margin-top:8px}
.rucom-evp-price svg{width:17px;height:17px;color:var(--or-d,var(--ru-accent,#1d5c8f));flex:0 0 auto}
/* Programmation (artistes) : cartes avec photo ronde. */
.rucom-evp-lineup{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:12px}
.rucom-evp-artist{text-align:center;cursor:pointer;text-decoration:none;color:inherit}
.rucom-evp-artist img,.rucom-evp-artist .rucom-av{width:56px;height:56px;border-radius:50%;margin:0 auto 6px;display:block}
.rucom-evp-artist b{display:block;font-size:12.5px;font-weight:700;line-height:1.2}
.rucom-evp-artist:hover b{text-decoration:underline}

/* Modale de creation d'evenement : condensee et defilable, actions toujours
   atteignables (le bouton "Creer" ne passe jamais sous la barre du systeme). */
.rucom-ev-modal{max-height:88vh;overflow:auto;padding-top:18px}
.rucom-ev-modal .rucom-ev-f{margin-top:8px}
.rucom-ev-modal .rucom-ed-actions{position:sticky;bottom:0;background:#fff;padding:10px 0 2px;margin-top:10px;border-top:1px solid var(--line)}
.rucom-ev-prodhead{margin:16px 0 2px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--or-d,var(--ru-accent,#1d5c8f));border-top:1px dashed var(--or-d,var(--ru-accent,#1d5c8f));padding-top:12px}

/* Evenements : vue LISTE COMPACTE (rangee + petite vignette). */
.rucom-ev-clist{display:flex;flex-direction:column;border:1.5px solid #151518;border-radius:16px;overflow:hidden;background:#fff}
.rucom-evc-row{display:flex;align-items:center;gap:14px;padding:14px 14px}
.rucom-evc-row+.rucom-evc-row{border-top:1.5px solid #151518}
.rucom-evc-row:hover{background:var(--soft)}
.rucom-evc-l{display:flex;align-items:center;gap:14px;flex:1;min-width:0;cursor:pointer}
.rucom-evc-thumb{flex:0 0 auto;width:58px;height:58px;border-radius:12px;overflow:hidden;background:var(--ru-surface-2,#F4F4F5)}
.rucom-evc-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.rucom-evc-noimg{display:grid;place-items:center}
.rucom-evc-noimg svg{width:22px;height:22px;color:var(--or)}
.rucom-evc-bd{min-width:0;display:flex;flex-direction:column;gap:4px}
.rucom-evc-title{font-size:15px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.rucom-evc-when{font-size:12.5px;color:var(--or-d);font-weight:600}
.rucom-evc-loc{font-size:12.5px;color:var(--muted);display:inline-flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-evc-loc svg{width:13px;height:13px;flex:0 0 auto}
.rucom-evc-count{font-size:12px;color:var(--muted);font-weight:600}
.rucom-evc-acts{flex:0 0 auto;display:flex;align-items:center;gap:6px}
.rucom-evc-acts .rucom-btn svg{width:15px;height:15px}
@media(max-width:600px){
  .rucom-evc-loc,.rucom-evc-count{display:none}
  .rucom-evc-acts .rucom-btn span{display:none}
}

/* Editeur riche (description d'evenement) + rendu du texte riche. */
.rucom-rte{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;margin-top:4px}
.rucom-rte-tb{display:flex;gap:2px;padding:6px;background:var(--soft);border-bottom:1px solid var(--line)}
.rucom-rte-b{border:0;background:none;width:30px;height:30px;border-radius:8px;cursor:pointer;font-family:inherit;font-size:14px;color:var(--ru-texte,#0e2438);display:grid;place-items:center}
.rucom-rte-b:hover{background:#e6e6ea}
.rucom-rte-b svg{width:15px;height:15px}
.rucom-rte-area{min-height:110px;max-height:260px;overflow-y:auto;padding:12px 14px;font-size:14px;line-height:1.5;outline:none}
.rucom-rte-area:empty::before{content:attr(data-ph);color:var(--muted)}
.rucom-rte-area:focus{box-shadow:inset 0 0 0 2px var(--or)}
.rucom-richtext{line-height:1.6}
.rucom-richtext p{margin:0 0 10px}
.rucom-richtext ul,.rucom-richtext ol{margin:0 0 10px;padding-left:22px}
.rucom-richtext li{margin:2px 0}
.rucom-richtext a{color:var(--or-d);text-decoration:underline}
.rucom-richtext blockquote{margin:0 0 10px;padding:6px 12px;border-left:3px solid var(--or);color:var(--muted)}

/* Assistant de creation d'evenement : etapes + navigation */
.rucom-ev-steps{display:flex;gap:8px;margin:12px 0 18px}
.rucom-ev-step{padding-top:4px}
.rucom-ev-step>.rucom-ev-f:first-child,.rucom-ev-step>.rucom-ev-row2:first-child{margin-top:0}
.rucom-ev-prodhead:first-child{margin-top:0;border-top:0;padding-top:0}
.rucom-ev-stepdot{flex:1;display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--soft);border-radius:12px;padding:8px 10px;font-family:inherit;cursor:pointer;text-align:left;min-width:0;transition:border-color .12s ease,background .12s ease}
.rucom-ev-stepdot b{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:#fff;border:1px solid var(--line);display:grid;place-items:center;font-size:12px;font-weight:800;color:var(--muted)}
.rucom-ev-stepdot span{font-size:12.5px;font-weight:700;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rucom-ev-stepdot.rucom-on{border-color:var(--or);background:#fff}
.rucom-ev-stepdot.rucom-on b{background:var(--or);border-color:var(--or);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-ev-stepdot.rucom-on span{color:var(--ru-texte,#0e2438)}
.rucom-ev-stepdot.rucom-done b{background:var(--ru-accent,#1d5c8f);border-color:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-ev-nav{position:sticky;bottom:0;background:#fff;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 0 2px;margin-top:14px;border-top:1px solid var(--line)}
.rucom-ev-nav-r{display:flex;align-items:center;gap:8px;margin-left:auto}
@media(max-width:600px){
  .rucom-ev-stepdot span{display:none}
  .rucom-ev-stepdot{flex:0 0 auto;justify-content:center}
  .rucom-ev-stepdot.rucom-on span{display:inline}
}

/* Confirmation au design du Reseau (remplace window.confirm). */
.rucom-confirm-modal{max-width:400px;width:100%}
.rucom-confirm-modal h3{margin:0 0 8px;font-size:18px}
.rucom-confirm-body{margin:0 0 4px;font-size:14px;color:var(--muted);line-height:1.5}
.rucom-btn.rucom-danger{background:#c0392b;border-color:#c0392b;color:#fff}
.rucom-btn.rucom-danger:hover{background:#a93226;border-color:#a93226}
.rucom-cal-menu{max-width:400px}
.rucom-cal-menu h3{display:flex;align-items:center;gap:8px;margin:0 0 4px}
.rucom-cal-menu h3 svg{width:20px;height:20px}
.rucom-cal-intro{margin:0 0 14px;font-size:13.5px;color:var(--muted)}
.rucom-cal-opts{display:flex;flex-direction:column;gap:8px}
.rucom-cal-opt{justify-content:center;text-decoration:none}
.rucom-merge-modal{max-width:460px}
.rucom-merge-modal h3{display:flex;align-items:center;gap:8px;margin:0 0 4px}
.rucom-merge-modal h3 svg{width:19px;height:19px}
.rucom-merge-list{max-height:300px;overflow-y:auto;margin-top:6px;display:flex;flex-direction:column;gap:8px}
.rucom-merge-row{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff;cursor:pointer;font-family:inherit}
.rucom-merge-row:hover{background:var(--soft);border-color:var(--or)}
.rucom-merge-row b{font-size:14px;font-weight:800}
.rucom-merge-row small{font-size:12.5px;color:var(--muted)}
.rucom-share-modal{max-width:460px}
.rucom-share-modal h3{display:flex;align-items:center;gap:8px;margin:0 0 4px}
.rucom-share-modal h3 svg{width:19px;height:19px}
.rucom-share-results{max-height:220px;overflow-y:auto}
.rucom-prompt-modal{max-width:440px}
.rucom-prompt-f{margin-top:6px}
.rucom-prompt-in{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:14px;font-family:inherit;background:var(--soft);box-sizing:border-box}
.rucom-prompt-in:focus{outline:none;border-color:var(--or);background:#fff}

/* Filtre du fil : plage de dates (entre telle date/heure et telle autre). */
.rucom-fdates{margin-top:6px;padding-top:12px;border-top:1px dashed var(--line)}
.rucom-fdates-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 8px}
.rucom-fdates-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rucom-fdate{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:13px;font-family:inherit;background:var(--soft);box-sizing:border-box}
.rucom-fdate:focus{outline:none;border-color:var(--or);background:#fff}
@media(max-width:600px){.rucom-fdates-row{grid-template-columns:1fr}}

/* Signalement : formulaire propre (motif + details + info du membre). */
.rucom-report-form{max-width:460px;width:100%}
.rucom-report-form h3{display:flex;align-items:center;gap:8px;margin:0 0 4px}
.rucom-report-form h3 svg{width:20px;height:20px;color:#c0392b}
.rucom-rep-intro{margin:2px 0 12px;font-size:13.5px;color:var(--muted);line-height:1.5}
.rucom-report-form select.rucom-rep-reason{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:14px;font-family:inherit;background:var(--soft)}
.rucom-report-form select.rucom-rep-reason:focus{outline:none;border-color:var(--or);background:#fff}
.rucom-rep-from{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding:10px 12px;background:var(--soft);border:1px solid var(--line);border-radius:12px}
.rucom-rep-from>span{font-size:12.5px;font-weight:700;color:var(--muted)}
.rucom-rep-who{display:flex;align-items:center;gap:8px;font-size:13.5px}
.rucom-rep-who .rucom-rep-h{color:var(--muted);font-weight:600}
.rucom-cmt-report{color:#c0392b !important}

/* Visibilite "a certaines personnes precises" : selecteur de membres. */
.rucom-seg-wrap{flex-wrap:wrap}
.rucom-privallow{margin:2px 0 12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--soft)}
.rucom-privallow-hint{font-size:12.5px;color:var(--muted);margin-bottom:8px}
.rucom-privallow-search{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:13px;font-family:inherit;background:#fff;box-sizing:border-box}
.rucom-privallow-search:focus{outline:none;border-color:var(--or)}
.rucom-privallow-results{max-height:200px;overflow-y:auto}

/* Confidentialite : petit "?" d'aide + modale explicative. */
.rucom-help-dot{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--muted,#6b6b73);font-size:11px;font-weight:800;cursor:pointer;line-height:1;vertical-align:middle}
.rucom-help-dot:hover{background:var(--ru-accent-fonce,#174a73);color:var(--ru-sur-accent,#FFFFFF);border-color:var(--ru-accent,#1d5c8f)}
.rucom-help-modal{max-width:440px;width:100%;padding:24px 26px 20px}
.rucom-help-modal h3{margin:0 0 10px;font-size:18px;font-weight:800}
.rucom-help-body{font-size:14.5px;line-height:1.6;color:#333;margin:0}

/* Reclamation d'une page entreprise. */
.rucom-p-claim{margin:10px 16px 2px}
.rucom-claim-btn{cursor:pointer;border-style:dashed}
.rucom-claim-pending{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:11px;font-size:13px;font-weight:700;color:#1a7f4b;background:#e8f7ee;border:1px solid #b6e6c8}
.rucom-claim-pending svg{width:16px;height:16px;flex:0 0 auto}
.rucom-claim-modal{max-width:460px;width:100%;padding:24px 26px 20px}
.rucom-claim-modal h3{margin:0 0 8px;font-size:19px;font-weight:800}
.rucom-claim-intro{font-size:13.5px;line-height:1.55;color:#555;margin:0 0 6px}
.rucom-claim-ok{display:flex;align-items:flex-start;gap:9px;font-size:15px;font-weight:600;color:#1a7f4b;margin:8px 0 14px}
.rucom-claim-ok svg{width:20px;height:20px;flex:0 0 auto;margin-top:1px}
.rucom-claim-authbtns{display:flex;gap:10px;margin-bottom:12px}
.rucom-claim-authbtns .rucom-btn{flex:1;min-height:44px}
.rucom-claim-hub{display:block;text-align:center;font-size:13px;font-weight:700;color:var(--muted,#6b6b73);text-decoration:none}
.rucom-claim-hub:hover{color:var(--ru-texte,#0e2438)}

/* Raison d'une suggestion (pourquoi ce membre est propose). */
.rucom-suggest-why{display:inline-block;margin-top:3px;font-size:11px;font-weight:700;padding:1px 8px;border-radius:999px;background:#f4f4f5;color:var(--muted,#6b6b73)}
.rucom-why-mutual{background:#eef3ff;color:#2b57c4}
.rucom-why-metier{background:var(--ru-accent-doux,rgba(44,111,181,.12));color:var(--ru-accent,#1d5c8f)}
.rucom-why-connexe{background:#fdf0e3;color:#a3611b}
.rucom-why-role{background:#e7f5f3;color:#0f6f68}
.rucom-why-new{background:#e8f7ee;color:#1a7f4b}
/* Suggestions dans l'onglet Relations. */
.rucom-rel-suggest{margin-top:24px}
.rucom-page-h2{display:flex;align-items:center;gap:8px;padding:0 2px 8px}
.rucom-page-h2 h3{margin:0;font-size:16px;font-weight:800}
.rucom-rel-sugg-list{display:flex;flex-direction:column;gap:2px}

/* Encart publicitaire dans la liste des evenements (apres le 6e). */
.rucom-ev-ad{display:block;position:relative;border:1px solid var(--line);border-radius:14px;overflow:hidden;margin:10px 0;background:#fff;text-decoration:none;color:inherit}
.rucom-ev-ad img{width:100%;max-height:220px;object-fit:cover;display:block}
.rucom-ev-ad-t{font-weight:800;font-size:14.5px;padding:12px 14px 8px}
.rucom-ev-ad-tag{position:absolute;top:8px;right:8px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#fff;background:rgba(17,17,20,.72);border-radius:999px;padding:2px 8px}

/* ---- Carte evenement embarquee dans le fil (0.58) ---- */
.rucom-ev-embed{border:1px solid var(--line);border-radius:14px;overflow:hidden;cursor:pointer;margin:4px 0 2px;background:#fff}
.rucom-ev-embed:hover{border-color:var(--ru-texte,#0e2438)}
.rucom-ev-embed-cover{height:200px;background:var(--ru-surface-2,#F4F4F5);display:flex;align-items:center;justify-content:center;overflow:hidden}
.rucom-ev-embed-cover img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}
.rucom-ev-embed-b{display:flex;align-items:center;gap:12px;padding:12px 14px}
.rucom-ev-embed-main{min-width:0}
.rucom-ev-embed-main b{display:block;font-size:15.5px;font-weight:800;line-height:1.2}
.rucom-ev-embed-when{font-size:13px;color:var(--muted,#6b6b73);margin-top:2px}
.rucom-ev-embed-loc{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--muted,#6b6b73);margin-top:3px}
.rucom-ev-embed-loc svg{width:14px;height:14px;flex:0 0 auto}
.rucom-ev-embed-cta{display:block;text-align:center;padding:9px;font-size:13px;font-weight:700;color:var(--or-d,var(--ru-accent,#1d5c8f));border-top:1px solid var(--line);background:#fafafa}

/* ---- Co-organisateurs dans la modale (0.58) ---- */
.rucom-coorg-picked{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.rucom-coorg-picked:empty{display:none}
.rucom-coorg-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 4px 3px 4px;border:1px solid var(--line);border-radius:999px;background:#fafafa;font-size:12.5px;font-weight:600}
.rucom-coorg-chip img,.rucom-coorg-chip .rucom-av{width:22px;height:22px;border-radius:50%}
.rucom-coorg-x{border:0;background:transparent;cursor:pointer;font-size:16px;line-height:1;color:var(--muted,#6b6b73);padding:0 2px}
.rucom-coorg-results{max-height:180px;overflow:auto}
.rucom-coorg-res{display:flex;align-items:center;gap:10px;padding:7px 6px;border-radius:10px;cursor:pointer}
.rucom-coorg-res:hover{background:#f4f4f5}
.rucom-coorg-res img,.rucom-coorg-res .rucom-av{width:30px;height:30px;border-radius:50%}
.rucom-coorg-res .rucom-bd b{font-size:13.5px;font-weight:700;display:block}
.rucom-coorg-res .rucom-bd small{font-size:11.5px;color:var(--muted,#6b6b73)}
.rucom-ev-hint{display:block;font-size:11.5px;color:var(--muted,#6b6b73);margin-top:4px;font-weight:400}
/* Salle (Bottin) : jeton choisi + resultats de recherche */
.rucom-venue-picked:empty{display:none}
.rucom-venue-picked{margin-bottom:6px}
.rucom-venue-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 6px 5px 8px;border:1px solid var(--line);border-radius:999px;background:#fafafa;font-size:12.5px;font-weight:600}
.rucom-venue-chip .rucom-venue-ic svg{width:15px;height:15px;stroke:var(--gold,var(--ru-accent,#1d5c8f))}
.rucom-venue-res .rucom-venue-ic{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border-radius:50%;background:#f4f4f5}
.rucom-venue-res .rucom-venue-ic svg{width:16px;height:16px}
.rucom-search.rucom-hidden,.rucom-venue-search.rucom-hidden{display:none}
.rucom-evp-venue a{color:inherit;text-decoration:underline;text-underline-offset:2px}
/* LIEU : rangees d'action (ajouter une salle, lieu public) sous les resultats. */
.rucom-venue-new .rucom-venue-ic,.rucom-venue-pub .rucom-venue-ic{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border-radius:50%;background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-venue-new .rucom-venue-ic svg,.rucom-venue-pub .rucom-venue-ic svg{width:16px;height:16px;stroke:var(--gold,var(--ru-accent,#1d5c8f))}
.rucom-venue-new b,.rucom-venue-pub b{font-weight:700}
.rucom-venue-wait{font-style:normal;font-weight:600;font-size:11px;color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,rgba(44,111,181,.12));border-radius:999px;padding:1px 8px;margin-left:2px}
.rucom-venue-pubtag{font-style:normal;font-weight:600;font-size:11px;color:#555;background:#eee;border-radius:999px;padding:1px 8px;margin-left:2px}
/* Mini-formulaire d'ajout de salle / lieu public. */
.rucom-venue-form{margin-top:8px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fafafa}
.rucom-venue-form .rucom-ev-f{margin:0 0 8px}
.rucom-venue-formact{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
.rucom-evp-venue svg{stroke:var(--gold,var(--ru-accent,#1d5c8f))}

@media(max-width:600px){.rucom-ev-row2{grid-template-columns:1fr}.rucom-ev-body{gap:10px}
  .rucom-evp-title{font-size:22px}.rucom-evp-acts .rucom-btn{flex:1 1 auto}}

/* ===================================================================
   GROUPES (sous-communautes) - charte bleue : blanc, gris, bleu nuit, accent bleu
   =================================================================== */
.rucom-sp-page{max-width:900px;margin:0 auto;padding:6px 0 60px}
.rucom-sp-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:4px 0}
.rucom-sp-head-t{display:flex;align-items:center;gap:10px}
.rucom-sp-head-t h2{margin:0;font-size:22px;font-weight:800}
.rucom-sp-head-t svg{width:22px;height:22px;color:var(--or,var(--ru-accent,#1d5c8f))}
.rucom-sp-sub{color:var(--muted,#6b6b73);margin:2px 0 16px;font-size:14px}
.rucom-sp-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.rucom-sp-card{background:#fff;border:1px solid rgba(17,17,20,.10);border-radius:14px;overflow:hidden;
  cursor:pointer;transition:box-shadow .15s,transform .15s;display:flex;flex-direction:column}
.rucom-sp-card:hover{box-shadow:0 6px 22px rgba(0,0,0,.10)}
.rucom-sp-cover{height:96px;background-size:cover;background-position:center;background-color:#f4f4f6}
.rucom-sp-cover-none{display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#eef2f6,#e2eaf2 60%,#d3e0ec)}
.rucom-sp-cover-none svg{width:34px;height:34px;color:var(--or,var(--ru-accent,#1d5c8f));opacity:.9}
.rucom-sp-cbody{padding:12px 14px;display:flex;flex-direction:column;gap:8px;flex:1}
.rucom-sp-ctitle{display:flex;align-items:center;gap:8px;justify-content:space-between}
.rucom-sp-ctitle b{font-size:16px;font-weight:800}
.rucom-sp-lock{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--muted,#6b6b73);
  border:1px solid rgba(17,17,20,.12);border-radius:999px;padding:1px 8px}
.rucom-sp-lock svg{width:12px;height:12px}
.rucom-sp-desc{margin:0;color:#3a3a40;font-size:13px;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rucom-sp-cfoot{display:flex;align-items:center;justify-content:space-between;margin-top:auto}
.rucom-sp-mc{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--muted,#6b6b73)}
.rucom-sp-mc svg{width:14px;height:14px}
/* Page d'un groupe */
.rucom-sp-single{max-width:860px;margin:0 0 0 16px;padding:6px 0 60px}
.rucom-sp-back{margin:2px 0 10px}
.rucom-sp-hero{height:150px;border-radius:16px;background-size:cover;background-position:center;background-color:#f4f4f6}
.rucom-sp-hero-none{background:linear-gradient(135deg,#eef2f6,#e2eaf2 60%,#d3e0ec)}
.rucom-sp-hbar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:12px 2px 4px}
.rucom-sp-htitle{flex:1;min-width:0}
.rucom-sp-htitle h2{margin:0;font-size:22px;font-weight:800;overflow-wrap:break-word;word-break:normal;line-height:1.15}
/* Photo de profil du groupe : chevauche la banniere, a gauche du titre. */
.rucom-sp-av{width:64px;height:64px;border-radius:16px;flex:0 0 auto;background-size:cover;background-position:center;
  background-color:var(--ru-surface-2,#F4F4F5);border:3px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.18);margin-top:-34px;
  display:inline-flex;align-items:center;justify-content:center;color:var(--ru-accent,#1d5c8f)}
.rucom-sp-av-none{background:linear-gradient(135deg,#eef2f6,#e2eaf2 60%,#d3e0ec)}
.rucom-sp-av svg{width:24px;height:24px}
.rucom-sp-hacts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-start;margin:12px 0 4px}
.rucom-sp-delbtn{color:#b3261e}
.rucom-sp-delbtn:hover{background:rgba(179,38,30,.08)}
/* Apercus dans le modal d'edition d'un groupe. */
.rucom-spe-prev{display:block;max-width:200px;max-height:96px;border-radius:8px;margin-top:6px;object-fit:cover}
.rucom-spe-prev-av{max-width:64px;max-height:64px;border-radius:14px}
.rucom-sp-htitle small{color:var(--muted,#6b6b73);font-size:13px}
.rucom-sp-hdesc{color:#3a3a40;font-size:14px;margin:6px 2px 0}
.rucom-sp-tabs{display:flex;gap:6px;border-bottom:1px solid rgba(17,17,20,.10);margin:14px 0 14px;
  flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;max-width:100%;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;overscroll-behavior-x:contain}
.rucom-sp-tabs::-webkit-scrollbar{height:0;display:none}
.rucom-sp-tab{background:none;border:none;padding:9px 14px;font-size:14px;font-weight:700;
  color:var(--muted,#6b6b73);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;
  white-space:nowrap;flex:0 0 auto}
.rucom-sp-tab.rucom-on{color:var(--ru-texte,#0e2438);border-bottom-color:var(--or,var(--ru-accent,#1d5c8f))}
.rucom-sp-composer{display:flex;gap:8px;align-items:flex-start;background:#fff;border:1px solid rgba(17,17,20,.10);
  border-radius:12px;padding:10px;margin-bottom:14px}
.rucom-sp-input{flex:1;border:none;resize:vertical;min-height:40px;font:inherit;outline:none;background:transparent}
.rucom-sp-joinhint{background:#f4f4f6;border-radius:10px;padding:12px 14px;color:var(--muted,#6b6b73);
  font-size:13.5px;margin-bottom:14px;text-align:center}
.rucom-sp-lb{margin-top:2px}
/* Barre de publication du groupe : meme allure que l'accueil, posee comme une
   carte au-dessus du mur. Elle ouvre le vrai composeur au clic. */
.rucom-sp-composerbar{border:1px solid var(--line);border-radius:14px;border-bottom:1px solid var(--line);
  margin-bottom:16px;cursor:pointer;background:#fff}
.rucom-sp-composerbar .rucom-q{cursor:pointer}
/* Champ PROGRAMMER (compact) revele par l'icone horloge dans le composeur. */
.rucom-cmp-sched{display:flex;align-items:center;gap:10px;margin:8px 0 2px;padding:10px 12px;
  background:var(--soft,#f4f4f6);border-radius:12px;font-size:13.5px}
.rucom-cmp-sched>span{color:var(--muted,#6b6b73);font-weight:700}
.rucom-cmp-sched .rucom-cmp-schedin{flex:1;border:1px solid var(--line);border-radius:9px;padding:8px 10px;
  font:inherit;background:#fff}
.rucom-compose-row .rucom-cam.rucom-on{color:var(--ru-texte,#0e2438);background:var(--soft,#f4f4f6);border-radius:8px}

/* ===== GROUPES : correctifs 0.91.1 (boutons, modale, debordement texte) ===== */
/* Les icones dans les boutons de groupe doivent etre bornees : sans taille, l'icone
   SVG s'affichait a sa taille intrinseque et gonflait le bouton (bouton geant). */
.rucom-sp-page .rucom-btn,
.rucom-sp-single .rucom-btn{white-space:nowrap;line-height:1}
.rucom-sp-page .rucom-btn svg,
.rucom-sp-single .rucom-btn svg,
.rucom-sp-headacts svg,
.rucom-sp-back svg{width:16px;height:16px;flex:0 0 auto}
.rucom-sp-headacts{display:flex;align-items:center;gap:8px}
/* Debordement des textes libres (ex. une description "SSSSS..." sans groupe). */
.rucom-sp-desc,.rucom-sp-hdesc,.rucom-sp-ctitle b,.rucom-sp-htitle h2{
  overflow-wrap:anywhere;word-break:break-word}
.rucom-sp-hdesc{max-height:5.5em;overflow:auto}
/* Modale "Creer un groupe" : carte bornee et lisible (avant : pleine largeur, colle). */
.rucom-spc-modal{max-width:480px;width:calc(100% - 32px);background:#fff;border-radius:16px;
  padding:24px;max-height:88vh;overflow:auto;position:relative}
.rucom-spc-modal h3{margin:0 0 16px;font-size:20px;font-weight:800;padding-right:36px}
.rucom-spc-modal .rucom-ev-f{display:block;margin:0 0 14px}
.rucom-spc-modal .rucom-ev-f>span{display:block;font-size:12.5px;font-weight:700;
  color:var(--muted,#6b6b73);margin-bottom:6px}
.rucom-spc-modal .rucom-ev-f input,
.rucom-spc-modal .rucom-ev-f select,
.rucom-spc-modal .rucom-ev-f textarea{width:100%;border:1px solid rgba(17,17,20,.16);
  border-radius:10px;padding:10px 12px;font:inherit;background:#fff;color:var(--ru-texte,#0e2438)}
.rucom-spc-modal .rucom-ev-f textarea{resize:vertical;min-height:70px}
.rucom-spc-modal .rucom-ev-nav{display:flex;justify-content:flex-end;margin-top:4px}

/* Groupes 0.92.1 : etats d'adhesion (invitation / demande) */
.rucom-sp-inviteonly{font-size:12.5px;color:var(--muted,#6b6b73);border:1px solid var(--line,rgba(17,17,20,.12));
  border-radius:999px;padding:4px 10px;display:inline-block}
.rucom-spc-note{background:#f4f4f6;border-radius:10px;padding:10px 12px;font-size:13px;color:var(--muted,#6b6b73);margin:0 0 14px}
.rucom-spc-modal .rucom-spc-note{margin-top:-4px}

/* Groupes : gestion (demandes + invitations) */
.rucom-sp-reqs{display:flex;flex-direction:column;gap:8px}
.rucom-sp-req{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));border-radius:12px;padding:10px 12px}
.rucom-sp-req-who{flex:1;min-width:0}
.rucom-sp-req-who b{display:block;font-size:14px}
.rucom-sp-req-who small{color:var(--muted,#6b6b73);font-size:12px}
.rucom-sp-req-acts{display:flex;gap:6px;flex:0 0 auto}
/* (Les styles de l'ancienne invitation propre aux groupes ont ete retires :
   le Reseau n'a plus qu'un seul systeme d'invitation.) */

/* ------------------------------------------------------------------ Liens
   Carte d'apercu d'un lien partage (vignette, nom du site, titre, description),
   affichee dans le fil comme dans la boite de composition. */
.rucom-linkcard{display:block;margin:10px 14px 2px;border:1px solid var(--line,rgba(17,17,20,.10));
  border-radius:14px;overflow:hidden;background:#fff;text-decoration:none;color:inherit;
  transition:border-color .15s ease,box-shadow .15s ease}
.rucom-linkcard:hover{border-color:rgba(17,17,20,.20);box-shadow:0 6px 20px rgba(17,17,20,.07)}
.rucom-lc-img{display:block;width:100%;aspect-ratio:1200/630;background:var(--soft,#f4f4f6);overflow:hidden}
.rucom-lc-img img{width:100%;height:100%;object-fit:cover;display:block}
.rucom-lc-img.rucom-lc-noimg{display:grid;place-items:center;aspect-ratio:auto;height:96px;color:var(--muted,#6b6b73)}
.rucom-lc-img.rucom-lc-noimg svg{width:30px;height:30px}
.rucom-lc-bd{display:block;padding:11px 13px 13px;background:var(--soft,#f4f4f6)}
.rucom-lc-site{display:block;font-size:11px;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted,#6b6b73);margin-bottom:3px}
.rucom-lc-title{display:block;font-size:14.5px;font-weight:800;line-height:1.3;color:var(--ru-texte,#0e2438)}
.rucom-lc-desc{display:block;margin-top:4px;font-size:12.5px;line-height:1.45;color:var(--muted,#6b6b73);
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.rucom-media-cell .rucom-linkcard,.rucom-media-wrap .rucom-linkcard{margin:0}

/* Apercu du lien dans la boite de composition (avant de publier). */
.rucom-cmp-link{margin:8px 0 2px}
.rucom-cmplink-load{border:1px dashed var(--line,rgba(17,17,20,.14));border-radius:12px;
  padding:12px 14px;font-size:12.5px;color:var(--muted,#6b6b73)}
.rucom-cmplink{position:relative;display:flex;gap:11px;align-items:flex-start;
  border:1px solid var(--line,rgba(17,17,20,.10));border-radius:12px;padding:10px;background:#fff}
.rucom-cmplink-th{position:relative;flex:0 0 auto;width:82px;height:62px;border-radius:9px;overflow:hidden;
  background:var(--soft,#f4f4f6);display:block}
.rucom-cmplink-th img{width:100%;height:100%;object-fit:cover;display:block}
.rucom-cmplink-th.rucom-cmplink-noimg{display:grid;place-items:center;color:var(--muted,#6b6b73)}
.rucom-cmplink-th.rucom-cmplink-noimg svg{width:24px;height:24px}
.rucom-cmplink-play{position:absolute;inset:0;display:grid;place-items:center;color:#fff;
  background:rgba(0,0,0,.28)}
.rucom-cmplink-play svg{width:24px;height:24px}
.rucom-cmplink-bd{flex:1;min-width:0;padding-right:20px}
.rucom-cmplink-bd small{display:block;font-size:10.5px;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted,#6b6b73)}
.rucom-cmplink-bd b{display:block;font-size:13.5px;font-weight:800;line-height:1.3;margin-top:2px;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.rucom-cmplink-d,.rucom-cmplink-url{display:block;margin-top:3px;font-size:11.5px;line-height:1.4;
  color:var(--muted,#6b6b73);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-cmplink-d{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.rucom-cmplink-x{position:absolute;top:6px;right:6px;width:24px;height:24px;border:0;border-radius:50%;
  background:rgba(17,17,20,.62);color:#fff;font-size:17px;line-height:1;cursor:pointer;
  display:grid;place-items:center}

/* Une boite de saisie (lien video, confirmation) doit toujours passer AU-DESSUS
   de la modale de publication (z-index 1300), sinon elle s'ouvre dessous et
   reste hors de portee : c'est ce qui rendait "Partager un lien vidéo" inerte. */
.rucom-modal.rucom-modal-top{z-index:1500}
/* Filet de securite : une icone en ligne dans un titre de modale reste bornee. */
.rucom-modal-card h3 svg{width:20px;height:20px;flex:0 0 auto}

/* --------------------------------------------------------------- Sondages
   Formulaire de creation (boite de composition et modale de modification). */
.rucom-pollform{border:1px solid var(--line,rgba(17,17,20,.12));border-radius:14px;padding:12px;margin:10px 0 2px;background:#fff}
.rucom-pf-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.rucom-pf-h b{font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted,#6b6b73)}
.rucom-pf-x{border:0;background:none;font-size:20px;line-height:1;cursor:pointer;color:var(--muted,#6b6b73)}
.rucom-pollform input[type="text"],.rucom-pollform input[type="datetime-local"]{
  width:100%;border:1px solid var(--line,rgba(17,17,20,.14));border-radius:10px;padding:9px 11px;font:inherit;font-size:14px;background:#fff}
.rucom-pf-q{font-weight:700}
.rucom-pf-opts{display:flex;flex-direction:column;gap:7px;margin:9px 0}
.rucom-pf-opt{position:relative;display:flex;align-items:center;gap:6px}
.rucom-pf-opt input{flex:1;min-width:0}
.rucom-pf-opt-x{flex:0 0 auto;width:26px;height:26px;border:0;border-radius:50%;background:var(--soft,#f4f4f6);
  color:var(--muted,#6b6b73);font-size:16px;line-height:1;cursor:pointer}
.rucom-pf-add{display:inline-flex;align-items:center;gap:6px;border:0;background:none;cursor:pointer;
  color:var(--or-d,var(--ru-accent,#1d5c8f));font-weight:800;font-size:13px;padding:2px 0}
.rucom-pf-add svg{width:16px;height:16px}
.rucom-pf-set{display:flex;flex-direction:column;gap:8px;margin-top:10px;padding-top:10px;
  border-top:1px solid var(--line,rgba(17,17,20,.08))}
.rucom-pf-chk{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}
.rucom-pf-chk input{width:16px;height:16px;flex:0 0 auto;accent-color:var(--or-d,var(--ru-accent,#1d5c8f))}
.rucom-pf-date{display:flex;align-items:center;gap:10px;font-size:13px;flex-wrap:wrap}
.rucom-pf-date span{color:var(--muted,#6b6b73)}
.rucom-pf-date input{max-width:230px}
.rucom-pf-locked input:disabled{background:var(--soft,#f4f4f6);color:var(--muted,#6b6b73)}

/* Sondage affiche dans le fil. */
.rucom-poll{margin:8px 14px 4px;border:1px solid var(--line,rgba(17,17,20,.10));border-radius:14px;padding:12px}
.rucom-poll-q{font-size:15px;font-weight:800;line-height:1.35;margin-bottom:10px}
.rucom-poll-opts{display:flex;flex-direction:column;gap:7px}
.rucom-poll-opt{position:relative;display:flex;align-items:center;gap:9px;width:100%;text-align:left;
  border:1px solid var(--line,rgba(17,17,20,.14));border-radius:10px;background:#fff;
  padding:10px 12px;font:inherit;font-size:14px;cursor:pointer;overflow:hidden;
  transition:border-color .15s ease,background .15s ease}
.rucom-poll-opt:disabled{cursor:default}
.rucom-poll-opt:not(:disabled):hover{border-color:rgba(17,17,20,.28)}
.rucom-poll-opt.rucom-on{border-color:var(--or-d,var(--ru-accent,#1d5c8f));background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-poll-bar{position:absolute;left:0;top:0;bottom:0;background:var(--ru-accent-filet,rgba(44,111,181,.45));z-index:0;
  transition:width .35s ease}
.rucom-poll-opt.rucom-on .rucom-poll-bar{background:var(--ru-accent-filet,rgba(44,111,181,.45))}
.rucom-poll-box{position:relative;z-index:1;flex:0 0 auto;width:17px;height:17px;border-radius:5px;
  border:1.5px solid rgba(17,17,20,.28);background:#fff}
.rucom-poll-opt.rucom-on .rucom-poll-box{background:var(--or,var(--ru-accent,#1d5c8f));border-color:var(--or-d,var(--ru-accent,#1d5c8f))}
.rucom-poll-lbl{position:relative;z-index:1;flex:1;min-width:0;font-weight:600}
.rucom-poll-pct{position:relative;z-index:1;flex:0 0 auto;font-weight:800;font-size:13px}
.rucom-poll-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;
  font-size:12.5px;color:var(--muted,#6b6b73)}
.rucom-poll-count{font-weight:700}
.rucom-poll-state:before{content:"\00b7";margin-right:8px}
.rucom-poll-acts{margin-left:auto;display:flex;align-items:center;gap:8px}
.rucom-poll-act{display:inline-flex;align-items:center;gap:5px;border:0;background:none;cursor:pointer;
  font:inherit;font-size:12.5px;font-weight:800;color:var(--ru-texte,#0e2438)}
.rucom-poll-act svg{width:15px;height:15px}
.rucom-poll-act:hover{color:var(--or-d,var(--ru-accent,#1d5c8f))}
.rucom-poll-send{padding:6px 14px}
.rucom-poll-note{margin:0 0 10px;font-size:12.5px;color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,rgba(44,111,181,.12));
  border-radius:10px;padding:9px 11px}

/* Modales sondage : modification et statistiques. */
.rucom-polledit,.rucom-pollstats{padding:18px;max-height:86vh;overflow-y:auto}
.rucom-polledit h3,.rucom-pollstats h3{display:flex;align-items:center;gap:9px;margin:0 30px 12px 0;
  font-size:18px;font-weight:900}
.rucom-polledit h3 svg,.rucom-pollstats h3 svg{width:20px;height:20px;color:var(--or-d,var(--ru-accent,#1d5c8f))}
.rucom-ps-q{font-size:15px;font-weight:800;line-height:1.35;margin-bottom:12px}
.rucom-ps-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.rucom-ps-kpi{background:var(--soft,#f4f4f6);border-radius:12px;padding:11px;text-align:center}
.rucom-ps-kpi b{display:block;font-size:20px;font-weight:900;line-height:1.1}
.rucom-ps-kpi span{display:block;margin-top:2px;font-size:10.5px;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted,#6b6b73)}
.rucom-ps-opt{margin-bottom:14px}
.rucom-ps-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:13.5px}
.rucom-ps-line b{font-weight:700}
.rucom-ps-line span{font-weight:800;color:var(--muted,#6b6b73);white-space:nowrap}
.rucom-ps-track{height:9px;border-radius:999px;background:var(--soft,#f4f4f6);overflow:hidden;margin:5px 0 6px}
.rucom-ps-track span{display:block;height:100%;background:var(--or,var(--ru-accent,#1d5c8f));border-radius:999px}
.rucom-ps-voters{display:flex;flex-wrap:wrap;gap:6px}
.rucom-psv{display:inline-flex;align-items:center;gap:5px;background:var(--soft,#f4f4f6);
  border-radius:999px;padding:2px 9px 2px 2px;font-size:11.5px}
.rucom-psv img,.rucom-psv i{width:20px;height:20px;border-radius:50%;object-fit:cover;display:grid;
  place-items:center;background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF);font-style:normal;font-size:10px;font-weight:800}
.rucom-psv b{font-weight:700}
.rucom-ps-none{font-size:11.5px;color:var(--muted,#6b6b73)}
.rucom-ps-tl-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;
  color:var(--muted,#6b6b73);margin:14px 0 6px}
.rucom-ps-tl{display:flex;align-items:flex-end;gap:6px;height:88px;padding-top:4px;overflow-x:auto}
.rucom-ps-bar{flex:0 0 auto;width:26px;height:100%;display:flex;flex-direction:column;justify-content:flex-end;
  align-items:center;gap:4px}
.rucom-ps-bar i{display:block;width:100%;background:var(--or,var(--ru-accent,#1d5c8f));border-radius:5px 5px 0 0}
.rucom-ps-bar small{font-size:9.5px;color:var(--muted,#6b6b73);white-space:nowrap}

/* ------------------------------------------------- Menu lateral repliable
   La fleche au bord du menu le reduit aux icones et le rouvre (le centre du
   fil s'elargit d'autant). L'etat est memorise d'une visite a l'autre. Sur
   telephone le menu est deja un tiroir : la fleche n'y sert a rien, on la
   cache. */
.rucom-rail-toggle{display:none}
.rucom-pub-i{display:none}
.rucom-pub-i svg{width:20px;height:20px}
@media (min-width:1000px){
  /* Point d'ancrage de la fleche de repli, et RIEN D'AUTRE. Cette ligne etait
     posee sur toutes les tailles d'ecran. Sur telephone, le menu est un tiroir
     `position:fixed` : ce `relative`, ecrit plus loin dans la feuille, prenait
     le dessus et rendait le tiroir statique. Il glissait alors AVEC la page au
     lieu de la recouvrir. La fleche n'existe qu'a partir de 1000 pixels : son
     point d'ancrage n'a aucune raison d'exister avant. */
  .rucom-left{position:relative}
  /* La fleche de repli protrude de 13px dans la gouttiere. Le bloc de contenu
     (profil, evenement, groupe, partout) ne doit pas la coller : on le decale
     d'un petit cran vers la droite, seulement ici ou la fleche existe. La carte
     reste centree dans sa colonne. */
  .rucom-center{margin-left:16px}
  .rucom-rail-toggle{position:absolute;top:4px;right:-13px;z-index:6;width:28px;height:28px;
    border-radius:50%;border:1px solid var(--line,rgba(17,17,20,.10));background:#fff;
    color:var(--ru-texte,#0e2438);cursor:pointer;display:grid;place-items:center;
    box-shadow:0 2px 10px rgba(17,17,20,.12);transition:background .15s ease}
  .rucom-rail-toggle:hover{background:var(--soft,#f4f4f6)}
  .rucom-rail-toggle svg{width:15px;height:15px;transform:rotate(90deg);transition:transform .22s ease}
  .rucom-app.rucom-rail-min .rucom-rail-toggle svg{transform:rotate(-90deg)}

  /* Menu reduit : une colonne d'icones. */
  /* Menu reduit : le centre GRANDIT. Refermer le menu doit servir a quelque
     chose ; sinon la place gagnee ne fait qu'agrandir une marge vide. */
  .rucom-app.rucom-rail-min .rucom-shell{grid-template-columns:76px minmax(0,800px) 340px}
  .rucom-app.rucom-rail-min.rucom-view-wide .rucom-shell,
  .rucom-app.rucom-rail-min.rucom-no-right .rucom-shell{grid-template-columns:76px minmax(0,1400px)}
  .rucom-app.rucom-rail-min .rucom-nav{justify-content:center;gap:0;padding:12px 0}
  .rucom-app.rucom-rail-min .rucom-nav>span{display:none}
  /* Le logo est un mot dessine, donc plus large que haut : dans le menu reduit
     on le borne en LARGEUR (sinon il deborde du rail et passe sous la fleche). */
  .rucom-app.rucom-rail-min .rucom-brand{height:auto;width:auto;max-width:46px;max-height:30px;
    object-fit:contain;margin:4px auto 18px;display:block}
  .rucom-app.rucom-rail-min .rucom-promos-h{display:none}
  .rucom-app.rucom-rail-min .rucom-promos{padding-top:12px}
  .rucom-app.rucom-rail-min .rucom-promos .rucom-nav{width:100%}
  .rucom-app.rucom-rail-min .rucom-pub{padding:12px 0}
  .rucom-app.rucom-rail-min .rucom-pub-t{display:none}
  .rucom-app.rucom-rail-min .rucom-pub-i{display:inline-flex}
  .rucom-app.rucom-rail-min .rucom-left-me{justify-content:center;padding:10px 0}
  .rucom-app.rucom-rail-min .rucom-left-me b,
  .rucom-app.rucom-rail-min .rucom-left-me small{display:none}
}

/* ------------------------------------------- Apercu de la publication (oeil)
   Montre la publication telle qu'elle paraitra dans le fil, avant de publier. */
/* APERCU : la carte epouse son contenu. Elle ne defile QUE si le contenu
   depasse vraiment l'ecran, et c'est alors la scene qui defile, pas la carte
   entiere : le titre et les deux boutons restent en place. */
.rucom-eyecard{max-height:88vh;max-width:660px;overflow:hidden;
  display:flex;flex-direction:column;height:auto}
.rucom-eyecard .rucom-eye-stage{flex:0 1 auto;min-height:0;overflow-y:auto}
.rucom-eyecard .rucom-ed-actions{flex:0 0 auto}
/* Dans l'apercu, une carte de lien ne reserve plus la place d'une image de
   1200 sur 630 : c'est ce grand vide blanc qu'on voyait sous la publication
   quand l'image du lien n'etait pas encore chargee. */
.rucom-eye-stage .rucom-lc-img{aspect-ratio:auto;max-height:210px}
.rucom-eye-stage .rucom-lc-img img{max-height:210px;object-fit:cover}
.rucom-eye-stage .rucom-photo img,
.rucom-eye-stage .rucom-media-wrap img{max-height:280px;object-fit:cover}
.rucom-eyecard h3{display:flex;align-items:center;gap:9px;margin:0 30px 6px 0;font-size:18px;font-weight:900}
.rucom-eyecard h3 svg{width:20px;height:20px;color:var(--or-d,var(--ru-accent,#1d5c8f))}
.rucom-eye-note{margin:0 0 12px;font-size:12.5px;color:var(--muted,#6b6b73)}
.rucom-eye-stage{background:var(--soft,#f4f4f6);border-radius:14px;padding:12px;max-width:none;padding-bottom:12px}
.rucom-eye-stage .rucom-post{background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));border-radius:14px;
  overflow:hidden;padding-bottom:10px;margin:0}
/* L'apercu ne se manipule pas : les boutons d'action y sont inertes. */
.rucom-eye-stage .rucom-p-acts,.rucom-eye-stage .rucom-p-likesrow,
.rucom-eye-stage .rucom-poll-opt,.rucom-eye-stage .rucom-poll-acts{pointer-events:none;opacity:.75}

/* --------------------------------------------- Filet de securite des modales
   Audit des classes utilisees par le JS : plusieurs champs de modales n'avaient
   AUCUNE regle propre et retombaient sur l'habillage brut du navigateur (bords
   gris, coins carres, police differente). Cette regle generique habille tout
   champ de formulaire pose dans une modale, meme si sa classe n'a pas de style
   dedie. Les regles existantes (.rucom-ev-f, .rucom-pollform...) restent
   prioritaires : elles sont plus specifiques. */
/* input SANS attribut type : c'est un champ texte, et plusieurs modales en
   utilisent (recherche de membre, invitations). Sans cette ligne, la regle
   ci-dessous les rate et ils gardent l'habillage brut du navigateur. */
.rucom-modal-card input:not([type]),
.rucom-modal-card input[type="text"],
.rucom-modal-card input[type="url"],
.rucom-modal-card input[type="email"],
.rucom-modal-card input[type="search"],
.rucom-modal-card input[type="number"],
.rucom-modal-card input[type="date"],
.rucom-modal-card input[type="time"],
.rucom-modal-card input[type="datetime-local"],
.rucom-modal-card select,
.rucom-modal-card textarea{
  font-family:inherit;font-size:14px;color:var(--ru-texte,#0e2438);background:#fff;
  border:1px solid rgba(17,17,20,.16);border-radius:10px;padding:9px 11px;width:100%}
.rucom-modal-card input:focus,.rucom-modal-card select:focus,.rucom-modal-card textarea:focus{
  outline:none;border-color:var(--ru-texte,#0e2438);box-shadow:0 0 0 3px var(--ru-accent-filet,rgba(44,111,181,.45))}
.rucom-modal-card input[type="checkbox"],.rucom-modal-card input[type="radio"]{
  width:16px;height:16px;accent-color:var(--or-d,var(--ru-accent,#1d5c8f))}
/* Listes de resultats et jetons de selection (partage, invitations, salles). */
.rucom-pick-results,.rucom-share-results,.rucom-venue-results{
  display:flex;flex-direction:column;gap:4px;max-height:230px;overflow:auto;margin-top:6px}
.rucom-pick-picked,.rucom-share-picked,.rucom-privallow-picked{
  display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}

/* ------------------------------------------------------------ Sondages 2.0
   Quatre familles : choix, quiz, notation, classement. */
.rucom-pf-kinds{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.rucom-pf-kind{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line,rgba(17,17,20,.14));
  background:#fff;border-radius:999px;padding:6px 12px;font:inherit;font-size:12.5px;font-weight:700;
  color:var(--muted,#6b6b73);cursor:pointer}
.rucom-pf-kind svg{width:15px;height:15px}
.rucom-pf-kind.rucom-on{background:var(--or,var(--ru-accent,#1d5c8f));border-color:var(--or-d,var(--ru-accent,#1d5c8f));color:var(--ru-sur-accent,#FFFFFF)}
.rucom-pf-help{font-size:11.5px;color:var(--muted,#6b6b73);margin-bottom:8px;line-height:1.4}
.rucom-pf-correct{flex:0 0 auto;width:26px;height:26px;border-radius:50%;border:1px solid var(--line,rgba(17,17,20,.14));
  background:#fff;color:#c9c9cf;cursor:pointer;display:grid;place-items:center}
.rucom-pf-correct svg{width:15px;height:15px}
.rucom-pf-correct.rucom-on{background:#0f6f68;border-color:#0f6f68;color:#fff}
.rucom-pf-opt-img{flex:0 0 auto;width:34px;height:34px;border-radius:8px;background:var(--soft,#f4f4f6);
  background-size:cover;background-position:center;border:1px solid var(--line,rgba(17,17,20,.10))}
.rucom-pf-opt-img.rucom-pf-noimg{opacity:.55}
.rucom-pf-opt-img.rucom-pf-imgload{animation:rucomPulse 1s ease-in-out infinite}
@keyframes rucomPulse{0%,100%{opacity:.4}50%{opacity:.9}}
.rucom-pf-opt-cam{flex:0 0 auto;width:26px;height:26px;border:0;border-radius:50%;background:var(--soft,#f4f4f6);
  color:var(--muted,#6b6b73);cursor:pointer;display:grid;place-items:center}
.rucom-pf-opt-cam svg{width:15px;height:15px}
.rucom-pf-scale{display:none;align-items:center;gap:10px;font-size:13px;margin-top:8px}
.rucom-pf-scale span{color:var(--muted,#6b6b73)}
.rucom-pf-scale select{max-width:90px}

/* Etiquettes de famille et de confidentialite sur un sondage publie. */
.rucom-poll-badge{display:inline-block;vertical-align:middle;margin-left:8px;font-size:10px;font-weight:800;
  text-transform:uppercase;letter-spacing:.03em;color:#6b6b73;background:var(--soft,#f4f4f6);
  border-radius:6px;padding:2px 7px}
.rucom-poll-badge.rucom-poll-kindb{color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,rgba(44,111,181,.12))}
/* Image d'un choix. */
.rucom-poll-img{position:relative;z-index:1;flex:0 0 auto;width:34px;height:34px;border-radius:8px;
  background-size:cover;background-position:center;background-color:var(--soft,#f4f4f6)}
/* Quiz : bonne et mauvaise reponse. */
.rucom-poll-opt.rucom-poll-good{border-color:#0f6f68;background:#f0f9f8}
.rucom-poll-opt.rucom-poll-good .rucom-poll-bar{background:rgba(15,111,104,.20)}
.rucom-poll-opt.rucom-poll-bad{border-color:#b23b3b;background:#fdf2f2}
.rucom-poll-opt.rucom-poll-bad .rucom-poll-bar{background:rgba(178,59,59,.16)}
.rucom-poll-verdict{display:flex;align-items:center;gap:7px;margin-top:9px;font-size:13px;font-weight:800;
  border-radius:10px;padding:8px 11px}
.rucom-poll-verdict svg{width:16px;height:16px}
.rucom-poll-verdict.rucom-ok{color:#0f6f68;background:#f0f9f8}
.rucom-poll-verdict.rucom-ko{color:#b23b3b;background:#fdf2f2}
/* Notation : etoiles et repartition. */
.rucom-poll-stars{display:flex;align-items:center;gap:4px}
.rucom-poll-star{border:0;background:none;padding:2px;cursor:pointer;color:#d8d8de;line-height:0}
.rucom-poll-star svg{width:30px;height:30px}
.rucom-poll-star.rucom-on{color:var(--or,var(--ru-accent,#1d5c8f))}
.rucom-poll-star:not(:disabled):hover{color:var(--or-d,var(--ru-accent,#1d5c8f));transform:scale(1.08)}
.rucom-poll-avg{margin-left:10px;font-size:19px;font-weight:900}
.rucom-poll-dist{margin-top:10px;display:flex;flex-direction:column;gap:5px}
.rucom-poll-drow{display:flex;align-items:center;gap:9px;font-size:12px}
.rucom-poll-dn{width:16px;text-align:right;font-weight:800;color:var(--muted,#6b6b73)}
.rucom-poll-dtrack{flex:1;height:8px;border-radius:999px;background:var(--soft,#f4f4f6);overflow:hidden}
.rucom-poll-dtrack i{display:block;height:100%;background:var(--or,var(--ru-accent,#1d5c8f));border-radius:999px}
.rucom-poll-dv{width:34px;color:var(--muted,#6b6b73);font-weight:700}
/* Classement : lignes ordonnables. */
.rucom-poll-ranks{display:flex;flex-direction:column;gap:7px}
.rucom-poll-rank{position:relative;display:flex;align-items:center;gap:9px;overflow:hidden;
  border:1px solid var(--line,rgba(17,17,20,.14));border-radius:10px;padding:9px 11px;background:#fff;font-size:14px}
.rucom-poll-rn{position:relative;z-index:1;flex:0 0 auto;width:22px;height:22px;border-radius:50%;
  background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF);font-size:11.5px;font-weight:900;display:grid;place-items:center}
.rucom-poll-mv{position:relative;z-index:1;display:flex;flex-direction:column;gap:2px;margin-left:auto}
.rucom-poll-mvb{width:22px;height:16px;border:0;background:var(--soft,#f4f4f6);border-radius:5px;cursor:pointer;
  color:var(--muted,#6b6b73);display:grid;place-items:center;padding:0}
.rucom-poll-mvb svg{width:12px;height:12px}
.rucom-poll-mvb:hover{background:var(--or,var(--ru-accent,#1d5c8f));color:var(--ru-sur-accent,#FFFFFF)}
/* Choix libre propose par un membre. */
.rucom-poll-other{display:flex;gap:7px;margin-top:8px}
.rucom-poll-otherin{flex:1;min-width:0;border:1px dashed var(--line,rgba(17,17,20,.22));border-radius:10px;
  padding:9px 11px;font:inherit;font-size:13.5px;background:#fff}
.rucom-poll-otherbtn{flex:0 0 auto;width:38px;border:0;border-radius:10px;background:var(--or,var(--ru-accent,#1d5c8f));
  color:var(--ru-sur-accent,#FFFFFF);cursor:pointer;display:grid;place-items:center}
.rucom-poll-otherbtn svg{width:18px;height:18px}
/* Statistiques : image et bonne reponse. */
.rucom-ps-img{flex:0 0 auto;width:26px;height:26px;border-radius:6px;background-size:cover;background-position:center;
  background-color:var(--soft,#f4f4f6);display:inline-block;vertical-align:middle;margin-right:7px}
.rucom-ps-line{display:flex;align-items:center;gap:6px}
.rucom-ps-line b{flex:1;min-width:0}
.rucom-ps-good{flex:0 0 auto;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;
  color:#0f6f68;background:#e8f5f4;border-radius:6px;padding:2px 7px}

/* ================================================== Modales : mise au propre
   AUDIT : sur les 24 cartes de modale du réseau, SEPT n'avaient aucune règle de
   remplissage et laissaient le texte coller aux bords, avec le bouton fermer
   par-dessus le titre : « Supprimer la publication », « Partager à des
   membres », la saisie, le repartage, la fusion, la liste des participants et
   le menu de calendrier. On corrige a la SOURCE : toute carte de modale a
   desormais un remplissage par defaut, et seule la publication ouverte (photo
   pleine largeur) le remet a zero. Une modale ajoutee plus tard sera propre
   sans qu'on y pense. */
/* REMBOURRAGE DE TOUTES LES MODALES. Un contenu colle aux bords se lit mal et
   fait bon marche. Meme valeur partout, pour que deux modales ne se ressemblent
   pas a peu pres. Le rembourrage du bas est plus grand : c'est la que se
   trouvent les boutons, et un bouton colle au bord invite a le rater. */
.rucom-modal-card{padding:24px 28px 26px}
/* La version telephone est definie UNE SEULE FOIS, au point de bascule 640,
   plus bas dans ce fichier. En avoir une seconde a 560 faisait gagner l'une
   entre 561 et 640 pixels et l'autre en dessous, pour deux mesures differentes. */
/* MODALE D'UNE PUBLICATION. La carte n'a pas de rembourrage, a dessein : c'est
   ce qui permet a l'image d'aller d'un bord a l'autre. Mais le TEXTE, lui, ne
   doit pas y aller avec : chaque bloc de texte reprend donc le rembourrage
   commun pour son compte. Sans cela, le nom de l'auteur et la publication
   touchaient les bords. */
.rucom-modal-card.rucom-postmodal{padding:0}
.rucom-postmodal>.rucom-p-head,
.rucom-postmodal>.rucom-txtpost,
.rucom-postmodal>.rucom-p-actions,
.rucom-postmodal>.rucom-cmtlist,
.rucom-postmodal>.rucom-cmtbar,
.rucom-postmodal>.rucom-poll{padding-left:24px;padding-right:24px}
.rucom-postmodal>.rucom-p-head{padding-top:22px}
.rucom-postmodal>*:last-child{padding-bottom:20px}
@media (max-width:560px){
  .rucom-postmodal>.rucom-p-head,
  .rucom-postmodal>.rucom-txtpost,
  .rucom-postmodal>.rucom-p-actions,
  .rucom-postmodal>.rucom-cmtlist,
  .rucom-postmodal>.rucom-cmtbar,
  .rucom-postmodal>.rucom-poll{padding-left:16px;padding-right:16px}
}
.rucom-cal-menu{padding:14px}
/* Titre et bouton fermer alignes, sans chevauchement. */
.rucom-modal-card>h3:first-of-type{margin:0 38px 8px 0;font-size:18px;font-weight:900;line-height:1.3}
.rucom-modal-card .rucom-modal-close{top:12px;right:12px}
.rucom-confirm-modal h3{margin:0 0 8px}
.rucom-confirm-body,.rucom-rep-intro{margin:0 0 14px;font-size:13.5px;line-height:1.5;color:var(--muted,#6b6b73)}
/* Les boutons d'une modale restent lisibles et groupes. */
.rucom-modal-card .rucom-ed-actions{margin-top:18px}
.rucom-btn.rucom-danger{background:#b40000;color:#fff}
.rucom-btn.rucom-danger:hover{background:#9a0000}

/* Bouton Publier du menu : il etait trop gros, dans les deux etats. */
.rucom-pub{width:100%;margin:12px 0 2px;padding:10px 14px;font-size:14px}
@media (min-width:1000px){
  .rucom-app.rucom-rail-min .rucom-pub{width:44px;height:44px;padding:0;margin:12px auto 2px;border-radius:12px}
  .rucom-app.rucom-rail-min .rucom-pub-i svg{width:18px;height:18px}
  /* Menu reduit : la colonne reste COLLANTE, jamais fixe.
     Une version precedente la passait en position:fixed. Deux degats, les deux
     graves : elle sortait de la grille, donc le centre heritait de la colonne
     de 76 pixels prevue pour le menu et se retrouvait ecrase a rien pendant que
     la colonne de droite prenait celle du centre ; et, ancree au haut de la
     fenetre, elle passait SOUS les barres d'outils de WordPress, ce qui cachait
     la fleche et enfermait le membre dans l'etat reduit sans moyen d'en sortir.
     `sticky` donne le meme confort de defilement en RESTANT dans la grille. */
  .rucom-app.rucom-rail-min .rucom-left{position:sticky;top:16px;align-self:start;
    width:76px;padding:0;overflow:visible;z-index:20}
  /* CORRECTIF (2026-08-29) : avec la barre WordPress, ce decalage etait de
     60px. Or `sticky` impose AU REPOS une distance minimale au haut de la
     fenetre : la position naturelle du menu (barre 32px + marge de la page)
     etant plus haute que 60px, le menu REPLIE apparaissait pousse vers le bas
     des l'ouverture de la page, alors que le menu ouvert restait en haut.
     44px suffit : au repos le menu reste exactement a la hauteur du menu
     ouvert, et au defilement il s'arrete sous la barre de 32px avec une marge,
     donc la fleche de retour ne passe jamais dessous. */
  body.admin-bar .rucom-app.rucom-rail-min .rucom-left{top:44px}
  /* La fleche doit rester visible et cliquable EN TOUTES CIRCONSTANCES : c'est
     le seul chemin de retour. */
  .rucom-app.rucom-rail-min .rucom-rail-toggle{right:-13px;z-index:25}
}

/* ============================================ Boite de publication enrichie
   Avant : un cadre blanc, une zone de texte, quelques icones. Elle fait
   maintenant ce que font les grands reseaux : on voit QUI publie et POUR QUI,
   on peut mettre des emoji, et on sait ou on en est dans la longueur. */
.rucom-cmpmodal-panel{max-width:620px}
.rucom-cmp-top{display:flex;align-items:center;gap:11px;margin-bottom:12px}
.rucom-cmp-who{min-width:0}
.rucom-cmp-who b{display:block;font-size:15px;font-weight:800;line-height:1.2}
.rucom-cmp-who small{display:block;font-size:12px;color:var(--muted,#6b6b73);margin-top:2px}
.rucom-cmp-top .rucom-cmp-vis{display:inline-flex;align-items:center;gap:5px;margin-top:4px;
  background:var(--soft,#f4f4f6);border-radius:999px;padding:3px 10px 3px 8px;font-size:12px;font-weight:700}
.rucom-cmp-top .rucom-cmp-vis svg{width:14px;height:14px;color:var(--muted,#6b6b73)}
.rucom-cmp-top .rucom-vis-select{border:0;background:none;font:inherit;font-size:12px;font-weight:700;
  color:var(--ru-texte,#0e2438);cursor:pointer;padding:0;max-width:150px}
.rucom-compose-box textarea{min-height:120px;font-size:16px;line-height:1.5}
.rucom-cmp-count{margin-left:auto;margin-right:10px;font-size:11.5px;font-weight:700;color:var(--muted,#6b6b73)}
.rucom-cmp-count.rucom-warn{color:var(--ru-accent,#1d5c8f)}
.rucom-cmp-count.rucom-over{color:#b40000}

/* Panneau d'emoji. */
.rucom-cmp-emoji{border:1px solid var(--line,rgba(17,17,20,.12));border-radius:14px;margin:8px 0 2px;
  background:#fff;overflow:hidden}
.rucom-emo-tabs{display:flex;gap:2px;padding:6px;border-bottom:1px solid var(--line,rgba(17,17,20,.08));
  background:var(--soft,#f4f4f6)}
.rucom-emo-tab{flex:1;border:0;background:none;border-radius:9px;padding:5px 0;font-size:18px;cursor:pointer;
  line-height:1.2;opacity:.6}
.rucom-emo-tab:hover{background:#fff;opacity:1}
.rucom-emo-tab.rucom-on{background:#fff;opacity:1;box-shadow:0 1px 4px rgba(17,17,20,.10)}
.rucom-emo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:2px;padding:8px;
  max-height:190px;overflow-y:auto}
.rucom-emo{border:0;background:none;font-size:21px;line-height:1;padding:6px 0;border-radius:9px;cursor:pointer}
.rucom-emo:hover{background:var(--soft,#f4f4f6);transform:scale(1.15)}

/* ======================================================== Invitations
   Une seule mécanique pour inviter vers un profil, une page, un groupe ou un
   événement, par un membre du Réseau ou par un lien à envoyer dehors. */
.rucom-invmodal{max-width:520px}
.rucom-inv-tabs{display:flex;gap:8px;margin:4px 0 12px}
.rucom-inv-tab{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;
  border:1px solid var(--line,rgba(17,17,20,.14));background:#fff;border-radius:12px;padding:9px 12px;
  font:inherit;font-size:13px;font-weight:700;color:var(--muted,#6b6b73);cursor:pointer}
.rucom-inv-tab svg{width:16px;height:16px}
.rucom-inv-tab.rucom-on{background:var(--or,var(--ru-accent,#1d5c8f));border-color:var(--or-d,var(--ru-accent,#1d5c8f));color:var(--ru-sur-accent,#FFFFFF)}
.rucom-inv-search{width:100%;border:1px solid rgba(17,17,20,.16);border-radius:10px;padding:9px 11px;font:inherit}
.rucom-inv-picked{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.rucom-inv-picked .rucom-psv{cursor:pointer}
.rucom-inv-linktxt{font-size:12.5px;color:var(--muted,#6b6b73);line-height:1.5;margin:0 0 10px}
.rucom-inv-linkbox{display:flex;gap:8px;align-items:center}
.rucom-inv-linkbox input{flex:1;min-width:0;border:1px solid rgba(17,17,20,.16);border-radius:10px;
  padding:9px 11px;font:inherit;font-size:13px;background:var(--soft,#f4f4f6)}
.rucom-inv-stats,.rucom-inv-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
.rucom-inv-kpi{background:var(--soft,#f4f4f6);border-radius:12px;padding:11px;text-align:center}
.rucom-inv-kpi b{display:block;font-size:20px;font-weight:900;line-height:1.1}
.rucom-inv-kpi span{display:block;margin-top:2px;font-size:10.5px;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted,#6b6b73)}
/* Ecran « Mes invitations ». */
.rucom-inv-hero{background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));border-radius:16px;
  padding:16px 18px;margin:0 14px 16px}
.rucom-inv-h{margin:16px 14px 8px;font-size:14px;font-weight:800;display:flex;align-items:center;gap:8px}
.rucom-invrow{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));
  border-radius:14px;padding:12px 14px;margin:0 14px 8px}
.rucom-invrow .rucom-bd{flex:1;min-width:0}
.rucom-invrow .rucom-bd b{display:block;font-size:14.5px}
.rucom-invrow .rucom-bd small{display:block;font-size:12.5px;color:var(--muted,#6b6b73);margin-top:1px}
.rucom-inv-note-r{display:block;margin-top:5px;font-size:12.5px;background:var(--soft,#f4f4f6);
  border-radius:9px;padding:6px 9px;line-height:1.45}
.rucom-invrow-r{flex:0 0 auto;display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.rucom-inv-state{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;
  border-radius:6px;padding:3px 8px;background:var(--soft,#f4f4f6);color:var(--muted,#6b6b73)}
.rucom-inv-state.rucom-st-accepted{background:#e8f5f4;color:#0f6f68}
.rucom-inv-state.rucom-st-declined{background:#f6f6f8;color:#8a8a93}
.rucom-inv-state.rucom-st-sent{background:var(--ru-accent-doux,rgba(44,111,181,.12));color:var(--ru-accent,#1d5c8f)}
.rucom-badge-inv{position:relative}
.rucom-badge-inv[data-count]:not([data-count="0"])::after{content:attr(data-count);position:absolute;
  top:-6px;right:-8px;background:var(--or);color:var(--ru-sur-accent,#FFFFFF);font-size:10px;font-weight:800;min-width:15px;
  height:15px;border-radius:8px;display:grid;place-items:center;padding:0 4px}

/* =======================================================================
   Correctifs d'affichage : modale de creation toujours complete, et
   publications de l'Explorer a taille raisonnable.

   1) La modale de creation grandissait avec son contenu (formulaire de
      sondage, panneau d'emoji, apercu). Passe une certaine hauteur, le bas
      de la modale - donc la barre d'outils et le bouton Publier - sortait
      de l'ecran. Le panneau devient une colonne a hauteur bornee : le corps
      defile tout seul et la barre d'action reste collee en bas, visible en
      tout temps.
   2) Dans l'Explorer, une seule publication remplissait tout l'ecran. On
      borne la largeur du mur, la hauteur des medias et la taille des
      vignettes de la grille pour qu'on voie plusieurs publications d'un
      coup, sans avoir a defiler.
   ======================================================================= */

/* --- 1) Modale de creation : plus jamais coupee en bas --- */
.rucom-cmpmodal{align-items:flex-start;padding:clamp(12px,4vh,40px) 16px}
.rucom-cmpmodal-panel{display:flex;flex-direction:column;
  max-height:calc(100vh - clamp(24px,8vh,80px));overflow:hidden}
.rucom-cmpmodal-h{flex:0 0 auto}
.rucom-cmpmodal .rucom-compose-box{flex:1 1 auto;min-height:0;
  overflow-y:auto;overscroll-behavior:contain;padding:16px 18px 0}
.rucom-cmpmodal .rucom-compose-box textarea{min-height:96px}
/* La barre d'outils + Publier reste accrochee au bas de la zone qui defile. */
.rucom-cmpmodal .rucom-compose-box .rucom-compose-row{position:sticky;bottom:0;z-index:3;
  background:#fff;margin-top:10px;padding:10px 0 14px;border-top:1px solid var(--line,#e4e4e8)}
/* Le panneau d'emoji et le formulaire de sondage ne poussent plus la modale :
   ils defilent avec le reste et gardent leur propre limite. */
.rucom-cmpmodal .rucom-cmp-emoji{max-height:190px;overflow-y:auto}
@media(max-width:640px){
  .rucom-cmpmodal{padding:0;align-items:stretch}
  .rucom-cmpmodal-panel{max-width:none;height:100%;max-height:100%;min-height:0;border-radius:0}
}

/* --- 2) Explorer : des publications a taille humaine --- */
.rucom-x-wall{max-width:620px;margin:0 auto}
.rucom-x-wall .rucom-post{margin-bottom:14px}
.rucom-x-wall .rucom-photo img,
.rucom-x-wall .rucom-media-wrap.rucom-mk-image img{max-height:40vh;object-fit:cover}
.rucom-x-wall .rucom-media-video{max-height:40vh}
.rucom-x-wall .rucom-media-grid .rucom-media-cell{aspect-ratio:16/11}
.rucom-x-wall .rucom-txtpost{max-height:8.6em;overflow:hidden}
.rucom-x-wall .rucom-linkcard .rucom-lc-img{max-height:180px;object-fit:cover}
/* Grille de l'Explorer : des vignettes fixes, pas des affiches. */
.rucom-gallery.rucom-x-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:6px}
.rucom-app.rucom-no-right .rucom-gallery.rucom-x-grid,
.rucom-app.rucom-view-wide .rucom-gallery.rucom-x-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
@media(max-width:700px){
  .rucom-gallery.rucom-x-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:4px}
}

/* =======================================================================
   CONTROLER MON ALGORITHME
   Un bloc unique, utilise a deux endroits : repliable dans la colonne de
   droite, deplie dans les parametres du compte. Meme apparence, memes
   options, aucun ecart entre les deux.
   ======================================================================= */
.rucom-algo-card{padding:0}
.rucom-algo-toggle{width:100%;display:flex;align-items:center;gap:10px;background:none;border:0;
  font:inherit;font-size:14px;font-weight:800;color:var(--ru-texte,#0e2438);cursor:pointer;
  padding:14px 16px;text-align:left;border-radius:16px;transition:background .12s ease}
.rucom-algo-toggle:hover{background:var(--soft)}
.rucom-algo-toggle svg{width:19px;height:19px;flex:0 0 auto;color:var(--muted)}
.rucom-algo-toggle span{flex:1;min-width:0}
.rucom-algo-toggle svg:last-child{transition:transform .16s ease}
.rucom-algo-card.rucom-open .rucom-algo-toggle svg:last-child{transform:rotate(180deg)}
.rucom-algo-card.rucom-open .rucom-algo-toggle{border-bottom:1px solid var(--line);border-radius:16px 16px 0 0}
.rucom-algo-body{padding:14px 16px 16px}
.rucom-set-card .rucom-algo-body{padding:4px 18px 18px}
.rucom-set-sub{padding:0 18px 12px;font-size:13px;color:var(--muted);line-height:1.45}

.rucom-algo-scopes{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.rucom-algo-scope{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:999px;
  padding:5px 11px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;transition:background .12s ease,color .12s ease}
.rucom-algo-scope:hover{background:var(--soft)}
.rucom-algo-scope.rucom-on{background:var(--ru-accent,#1d5c8f);border-color:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}

.rucom-algo-modes{display:flex;flex-direction:column;gap:2px;margin-bottom:6px}
.rucom-algo-mode{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;
  border:0;background:none;font:inherit;padding:9px 10px;border-radius:11px;cursor:pointer;transition:background .12s ease}
.rucom-algo-mode:hover{background:var(--soft)}
.rucom-algo-mode.rucom-on{background:var(--ru-accent-doux,rgba(44,111,181,.12));box-shadow:inset 0 0 0 1px var(--or)}
.rucom-algo-radio{flex:0 0 auto;width:16px;height:16px;margin-top:3px;border-radius:50%;
  border:2px solid #c9c9d1;background:#fff;transition:border-color .12s ease}
.rucom-algo-mode.rucom-on .rucom-algo-radio{border-color:var(--ru-texte,#0e2438);
  background:radial-gradient(circle,var(--ink) 0 42%,#fff 46%)}
.rucom-algo-mbd{min-width:0}
.rucom-algo-mbd b{display:block;font-size:13.5px;font-weight:800;line-height:1.25}
.rucom-algo-mbd small{display:block;font-size:12px;color:var(--muted);line-height:1.35;margin-top:1px}

.rucom-algo-knobs{border-top:1px solid var(--line);margin-top:10px;padding-top:12px}
.rucom-algo-knobs-h{font-size:11.5px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;
  color:var(--muted);margin-bottom:10px}
.rucom-algo-knob{display:flex;align-items:center;gap:10px;margin-bottom:9px}
.rucom-algo-kl{flex:0 0 84px;font-size:12.5px;font-weight:700}
.rucom-algo-knob input[type="range"]{flex:1;min-width:0;accent-color:var(--ink);height:4px;cursor:pointer}
.rucom-algo-kv{flex:0 0 30px;text-align:right;font-size:12px;font-weight:800;color:var(--muted)}
.rucom-algo-locked{opacity:.55}
.rucom-algo-locked .rucom-algo-knob input[type="range"]{cursor:not-allowed}
.rucom-algo-lockmsg{font-size:12px;color:var(--muted);line-height:1.4;margin-top:2px}
.rucom-algo-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;
  border-top:1px solid var(--line);margin-top:14px;padding-top:14px}
.rucom-algo-foot .rucom-btn{flex:0 0 auto}

/* =======================================================================
   RESPIRATION DES MODALES
   Rien ne doit toucher un bord. La barre d'action de la boite de creation
   devient un vrai pied de modale : elle ne defile plus, elle n'est plus
   collee au bas, et le contenu garde ses marges laterales.
   ======================================================================= */
/* Le rembourrage commun est defini UNE SEULE FOIS, plus haut dans ce fichier.
   Il l'etait deux fois avec deux valeurs differentes : la seconde gagnait en
   silence, et la carte n'avait pas la mesure qu'on croyait lui donner. */
.rucom-modal-card>*:last-child{margin-bottom:0}

/* Boite de creation : corps qui defile + pied fixe, chacun avec ses marges. */
.rucom-cmpmodal .rucom-compose-box{display:flex;flex-direction:column;min-height:0;
  padding:0;overflow:hidden}
.rucom-cmpmodal .rucom-cmp-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;
  overscroll-behavior:contain;padding:18px 24px 8px}
.rucom-cmpmodal .rucom-compose-box .rucom-compose-row{position:static;flex-wrap:wrap;row-gap:12px;
  flex:0 0 auto;margin:0;padding:14px 24px 20px;border-top:1px solid var(--line,#e4e4e8);background:#fff}
/* LES SIX OUTILS RESTENT SUR UNE SEULE LIGNE. Ils avaient le droit de passer a
   la ligne, et le compteur plus le bouton Publier leur prenaient assez de place
   pour qu'ils se cassent en deux ou trois rangees. Ils gardent leur taille et
   defilent horizontalement dans le cas extreme, plutot que de s'empiler. */
.rucom-cmpmodal .rucom-compose-row .rucom-left{flex-wrap:nowrap;row-gap:0;
  overflow-x:auto;scrollbar-width:none;gap:10px}
.rucom-cmpmodal .rucom-compose-row .rucom-left::-webkit-scrollbar{display:none}
.rucom-cmpmodal .rucom-compose-row .rucom-left>.rucom-ic{flex:0 0 auto}
/* Le bouton Publier passe a la ligne AVANT les outils si la place manque. */
.rucom-cmpmodal .rucom-compose-row .rucom-cmp-count{margin-left:auto}
.rucom-cmpmodal .rucom-cmp-emoji{max-height:190px;overflow-y:auto}
@media(max-width:640px){
  .rucom-cmpmodal .rucom-cmp-scroll{padding:16px 18px 8px}
  .rucom-cmpmodal .rucom-compose-box .rucom-compose-row{padding:12px 18px 18px}
  .rucom-modal-card{padding:20px 18px 22px}
}

/* =======================================================================
   PAGE D'UN EVENEMENT : diffusion en ligne, mur de discussion, invites.
   Un evenement n'est pas qu'une date : c'est une conversation avant,
   pendant et apres, et une liste de gens qui se voient entre eux.
   ======================================================================= */
.rucom-evp-online .rucom-btn{width:100%;justify-content:center}
.rucom-evp-locked{display:flex;align-items:center;gap:9px;background:var(--soft,#f4f4f6);
  border:1px dashed var(--line,#e4e4e8);border-radius:12px;padding:12px 14px;
  font-size:13px;color:var(--muted,#6b6b73);line-height:1.4}
.rucom-evp-locked svg{width:18px;height:18px;flex:0 0 auto}

.rucom-evp-tabsec{margin-top:6px}
.rucom-evp-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line,#e4e4e8);
  margin-bottom:14px;padding-bottom:8px}
.rucom-evp-tab{display:inline-flex;align-items:center;gap:7px;border:0;background:none;
  font:inherit;font-size:13.5px;font-weight:800;color:var(--muted,#6b6b73);
  padding:7px 13px;border-radius:999px;cursor:pointer;transition:background .12s ease,color .12s ease}
.rucom-evp-tab:hover{background:var(--soft,#f5f5f7)}
.rucom-evp-tab svg{width:16px;height:16px}
.rucom-evp-tab.rucom-on{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}

.rucom-evw-box{display:flex;gap:10px;align-items:flex-end;margin-bottom:14px}
.rucom-evw-box textarea{flex:1;min-width:0;border:1px solid var(--line,#e4e4e8);border-radius:12px;
  padding:10px 12px;font:inherit;font-size:14px;resize:vertical;background:#fff}
.rucom-evw-box textarea:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
.rucom-evw-box .rucom-btn{flex:0 0 auto}
.rucom-evw-need{background:var(--soft,#f5f5f7);border-radius:12px;padding:12px 14px;
  font-size:13px;color:var(--muted,#6b6b73);margin-bottom:14px;line-height:1.45}
.rucom-evw-list{padding-top:0}

.rucom-evg-bloc{margin-bottom:18px}
.rucom-evg-bloc h4{margin:0 0 10px;font-size:12px;font-weight:900;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted,#6b6b73)}
.rucom-evg-bloc h4 i{font-style:normal;background:var(--soft,#f5f5f7);border-radius:999px;
  padding:1px 8px;margin-left:5px;color:var(--ru-texte,#0e2438)}
.rucom-evg-list{display:flex;flex-wrap:wrap;gap:8px}
.rucom-evg-p{display:inline-flex;align-items:center;gap:8px;background:#fff;
  border:1px solid var(--line,#e4e4e8);border-radius:999px;padding:5px 13px 5px 5px;cursor:pointer;
  transition:box-shadow .12s ease}
.rucom-evg-p:hover{box-shadow:0 3px 10px rgba(0,0,0,.08)}
.rucom-evg-p b{font-size:13px;font-weight:700}
.rucom-evg-row{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:7px 0;border-bottom:1px solid var(--line,#e4e4e8)}
.rucom-evg-row:last-child{border-bottom:0}
.rucom-ev-check{display:flex;align-items:center;gap:9px;margin:10px 0 4px;font-size:13.5px;font-weight:700;cursor:pointer}
.rucom-ev-check input{width:17px;height:17px;accent-color:var(--ink,#111114);cursor:pointer}
.rucom-ev-f small{display:block;margin-top:4px;font-size:12px;color:var(--muted,#6b6b73);font-weight:400;line-height:1.4}

/* =======================================================================
   LES TROIS QUESTIONS D'ARRIVEE (ville, style, metier).
   Une fenetre courte, chaleureuse, qu'on peut passer. Ce qu'elle demande
   sert tout de suite : elle place le nouveau membre dans trois groupes
   deja vivants au lieu de le laisser devant un fil vide.
   ======================================================================= */
.rucom-ancmodal{max-width:600px}
.rucom-anc-q{margin-bottom:18px}
.rucom-anc-q h4{margin:0 0 9px;font-size:12px;font-weight:900;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted,#6b6b73)}
.rucom-anc-chips{display:flex;flex-wrap:wrap;gap:6px}
.rucom-anc-chip{border:1px solid var(--line,#e4e4e8);background:#fff;color:var(--ru-texte,#0e2438);
  border-radius:999px;padding:6px 13px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;
  transition:background .12s ease,color .12s ease,box-shadow .12s ease}
.rucom-anc-chip:hover{background:var(--soft,#f5f5f7)}
.rucom-anc-chip.rucom-on{background:var(--ru-accent,#1d5c8f);border-color:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-anc-free{width:100%;margin-top:9px;border:1px solid var(--line,#e4e4e8);border-radius:11px;
  padding:10px 12px;font:inherit;font-size:14px;background:#fff}
.rucom-anc-free:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
.rucom-anc-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;
  border-top:1px solid var(--line,#e4e4e8);margin-top:6px;padding-top:16px}

/* --- Modération des publications d'un groupe --------------------------- */
.rucom-sp-qn{display:inline-flex;align-items:center;justify-content:center;margin-left:6px;
  min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--or,var(--ru-accent,#1d5c8f));
  color:var(--ru-sur-accent,#FFFFFF);font-size:11px;font-weight:900;font-style:normal;line-height:1}
.rucom-sp-queue{padding-top:6px}
.rucom-spq-item{border:1px solid var(--line,#e4e4e8);border-radius:14px;overflow:hidden;
  margin-bottom:14px;background:#fff}
.rucom-spq-item .rucom-post{border:0;border-radius:0;margin:0;box-shadow:none}
.rucom-spq-acts{display:flex;justify-content:flex-end;gap:8px;padding:12px 14px;
  border-top:1px solid var(--line,#e4e4e8);background:var(--soft,#f7f7f9)}

/* =======================================================================
   BOUTON FERMER : present sur TOUTES les modales, rond noir, X or, en haut
   a droite. Descendre au bas d'une modale pour la fermer, c'est un aller
   pour rien a chaque fois.
   ======================================================================= */
.rucom-modal-card{position:relative}
/* PLACEMENT UNIFORME DU X (toutes les modales). Position ABSOLUE dans le coin
   haut-droit de la carte : previsible et identique que la carte soit en bloc ou
   en flex (le `float` etait ignore en flex et renvoyait le X sur le titre). La
   carte est deja position:relative, donc le X se cale sur SON coin, avec une
   marge de respiration (jamais colle au bord). */
/* Le titre garde sa place a cote du X : on lui reserve la largeur du bouton
   plus une marge, pour qu'aucun texte ne passe dessous. */
.rucom-modal-card>h3:first-of-type{padding-right:48px}
/* BOUTON FERMER DES FENETRES (Correctif 26) : UNE seule regle pour toutes
   les fenetres du Reseau. Rond bleu, croix dessinee (icone), centree par la
   grille et non par la police. Rien ne bouge au survol ni au clic : seule la
   couleur du fond change. Les fenetres ne reglent plus que top et right. */
button.rucom-modal-close{position:absolute;top:14px;right:14px;z-index:8;float:none;align-self:auto;
  display:grid;place-items:center;box-sizing:border-box;width:36px;height:36px;margin:0;padding:0;
  border:0;border-radius:50%;background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF);
  font-size:0;line-height:0;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,.3);
  transform:none;transition:background-color .15s ease;-webkit-tap-highlight-color:transparent}
button.rucom-modal-close svg{display:block;width:18px;height:18px;margin:0;pointer-events:none}
button.rucom-modal-close:hover,button.rucom-modal-close:focus,button.rucom-modal-close:active{
  background:var(--ru-accent-fonce,#174a73);color:var(--ru-sur-accent,#FFFFFF);transform:none;border:0;padding:0;box-shadow:0 2px 10px rgba(0,0,0,.3)}
button.rucom-modal-close:focus{outline:0}
button.rucom-modal-close:focus-visible{outline:2px solid var(--ru-accent-filet,rgba(44,111,181,.45));outline-offset:2px}
@media (max-width:999px){button.rucom-modal-close{width:44px;height:44px}}
.rucom-cmpmodal-x{background:var(--ru-accent,#1d5c8f) !important;color:var(--ru-sur-accent,#FFFFFF) !important}
.rucom-cmpmodal-x:hover{background:var(--ru-accent-fonce,#174a73) !important;color:var(--ru-sur-accent,#FFFFFF) !important}
/* Modale d'integration : code visible, apercu, bouton copier. */
.rucom-embed-modal{max-width:520px;padding:22px 24px 24px}
.rucom-embed-modal h3{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:18px}
.rucom-embed-modal h3 svg{width:20px;height:20px}
.rucom-embed-help{margin:0 0 12px;color:var(--muted);font-size:13.5px;line-height:1.45}
.rucom-embed-code{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;
  color:var(--ru-texte,#0e2438);background:#f7f7f8;border:1px solid var(--line);border-radius:10px;padding:10px 12px;resize:vertical;line-height:1.5}
.rucom-embed-preview-l{margin:14px 0 6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.rucom-embed-preview{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fafafa;max-height:300px}
.rucom-embed-preview iframe{display:block;width:100%;max-width:100%;height:290px;border:0}
.rucom-embed-act{display:flex;justify-content:flex-end;margin-top:16px}

/* --- Questions d'arrivee : UNE question par section ---------------------- */
.rucom-anc-steps{display:flex;align-items:center;gap:7px;margin:2px 0 16px}
.rucom-anc-dot{width:26px;height:4px;border-radius:99px;background:var(--line,#e4e4e8);display:block}
.rucom-anc-dot.rucom-on{background:var(--ru-accent,#1d5c8f)}
.rucom-anc-dot.rucom-done{background:var(--or,var(--ru-accent,#1d5c8f))}
.rucom-anc-count{margin-left:auto;font-size:11.5px;font-weight:800;color:var(--muted,#6b6b73)}
.rucom-anc-q h4{margin:0 0 10px;font-size:16px;font-weight:900;text-transform:none;
  letter-spacing:-.01em;color:var(--ru-texte,#0e2438)}
.rucom-anc-find{width:100%;margin-bottom:10px;border:1px solid var(--line,#e4e4e8);border-radius:11px;
  padding:9px 12px;font:inherit;font-size:14px;background:var(--soft,#f7f7f9)}
.rucom-anc-find:focus{outline:0;border-color:var(--ru-texte,#0e2438);background:#fff}
.rucom-anc-scroll{max-height:38vh;overflow-y:auto;overscroll-behavior:contain;padding-right:2px}

/* --- Page INVITATIONS : des sections, pas des listes a nu ---------------- */
.rucom-invpage{padding:2px 0 26px}
.rucom-page-h{padding:4px 2px 14px}
.rucom-page-h h2{margin:0;font-size:22px;font-weight:900;letter-spacing:-.01em}
.rucom-page-h p{margin:5px 0 0;font-size:13.5px;color:var(--muted,#6b6b73);line-height:1.45;max-width:620px}
.rucom-invsec{background:#fff;border:1px solid var(--line,#e4e4e8);border-radius:16px;
  padding:16px 18px 18px;margin-bottom:16px}
.rucom-invsec .rucom-inv-h{margin:0 0 12px;font-size:13px;font-weight:900;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted,#6b6b73)}
.rucom-invlist{display:flex;flex-direction:column;gap:10px}
.rucom-invsec .rucom-empty{padding:16px 4px;text-align:left;font-size:13.5px}
.rucom-inv-hero{margin:0 0 18px;padding:18px}

/* --- Page GROUPES : choix de la vue, et des cartes qui respirent --------- */
.rucom-sp-page{padding:2px 0 26px}
.rucom-sp-headacts{display:flex;align-items:center;gap:10px}
.rucom-sp-list.rucom-spv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.rucom-sp-list.rucom-spv-list{display:flex;flex-direction:column;gap:8px}
.rucom-sp-cdesc,.rucom-sp-ctitle b,.rucom-spr-bd b{overflow-wrap:anywhere}
.rucom-sp-cdesc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rucom-spr{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line,#e4e4e8);
  border-radius:13px;padding:9px 12px;cursor:pointer;transition:box-shadow .12s ease}
.rucom-spr:hover{box-shadow:0 4px 14px rgba(0,0,0,.08)}
.rucom-spr-th{flex:0 0 auto;width:46px;height:46px;border-radius:11px;background-size:cover;
  background-position:center;background-color:var(--soft,#f4f4f6);display:block}
.rucom-spr-th-none{display:grid;place-items:center;background:linear-gradient(135deg,#eef2f6,#e2eaf2 60%,#d3e0ec)}
.rucom-spr-th-none svg{width:20px;height:20px;color:var(--or,var(--ru-accent,#1d5c8f))}
.rucom-spr-bd{flex:1;min-width:0}
.rucom-spr-bd b{display:block;font-size:14.5px;font-weight:800;line-height:1.25}
.rucom-spr-bd small{display:block;font-size:12.5px;color:var(--muted,#6b6b73);margin-top:2px}
.rucom-spr-a{flex:0 0 auto}
/* Le titre laisse la place au bouton fermer, jamais dessous. */
.rucom-modal-card>h3:first-of-type,.rucom-modal-card>.rucom-rep-intro{padding-right:8px}

/* --- Regles du groupe, publications epinglees et en attente -------------- */
.rucom-sp-rules{margin:0 0 14px;border:1px solid var(--line,#e4e4e8);border-radius:13px;
  background:var(--soft,#f7f7f9);overflow:hidden}
.rucom-sp-rules summary{display:flex;align-items:center;gap:9px;cursor:pointer;list-style:none;
  padding:12px 14px;font-size:13.5px;font-weight:800}
.rucom-sp-rules summary::-webkit-details-marker{display:none}
.rucom-sp-rules summary svg{width:17px;height:17px;color:var(--or-d,var(--ru-accent,#1d5c8f))}
.rucom-sp-rulesbd{padding:0 14px 14px;font-size:13.5px;line-height:1.55;color:#3a3a42;
  white-space:pre-line;overflow-wrap:anywhere}
.rucom-p-flag{display:flex;align-items:center;gap:7px;padding:8px 14px;font-size:11.5px;
  font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.rucom-p-flag svg{width:14px;height:14px;flex:0 0 auto}
.rucom-p-pin{background:var(--ru-accent-doux,rgba(44,111,181,.12));color:var(--ru-accent,#1d5c8f)}
.rucom-p-wait{background:var(--soft,#f5f5f7);color:var(--muted,#6b6b73)}
.rucom-post.rucom-pinned{box-shadow:inset 0 0 0 1px var(--or,var(--ru-accent,#1d5c8f))}

/* --- Membres d'un groupe et roles --------------------------------------- */
.rucom-spm-list{display:flex;flex-direction:column;gap:8px}
.rucom-spm-row{display:flex;align-items:center;gap:12px;background:#fff;
  border:1px solid var(--line,#e4e4e8);border-radius:13px;padding:9px 13px}
.rucom-spm-p{display:flex;align-items:center;gap:11px;flex:1;min-width:0;cursor:pointer}
.rucom-spm-bd{min-width:0}
.rucom-spm-bd b{display:block;font-size:14.5px;font-weight:800;line-height:1.25}
.rucom-spm-bd small{display:block;font-size:12.5px;color:var(--muted,#6b6b73);margin-top:1px}
.rucom-spm-a{flex:0 0 auto}
.rucom-spm-role{border:1px solid var(--line,#e4e4e8);border-radius:9px;padding:6px 9px;
  font:inherit;font-size:12.5px;font-weight:700;background:#fff;cursor:pointer}
.rucom-spm-role:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
.rucom-spm-badge{font-size:10.5px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;
  padding:4px 10px;border-radius:999px;background:var(--soft,#f5f5f7);color:var(--muted,#6b6b73)}
.rucom-spm-badge.rucom-r-owner{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-spm-badge.rucom-r-manager{background:var(--ru-accent-doux,rgba(44,111,181,.12));color:var(--ru-accent,#1d5c8f)}
.rucom-spm-badge.rucom-r-moderator{background:#e8f5f4;color:#0f6f68}
.rucom-spm-note{margin:14px 2px 0;font-size:12.5px;color:var(--muted,#6b6b73);line-height:1.5}

/* --- Journal d'un groupe ------------------------------------------------- */
.rucom-splog-intro{margin:0 0 14px;font-size:12.5px;color:var(--muted,#6b6b73);line-height:1.5}
.rucom-splog{display:flex;flex-direction:column;gap:2px}
.rucom-splog-row{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:11px;
  transition:background .12s ease}
.rucom-splog-row:hover{background:var(--soft,#f7f7f9)}
.rucom-splog-a{flex:0 0 auto}
.rucom-splog-bd{flex:1;min-width:0;font-size:13.5px;line-height:1.4;color:#3a3a42}
.rucom-splog-bd b{font-weight:800;color:var(--ru-texte,#0e2438)}
.rucom-splog-note{font-style:normal;background:var(--soft,#f4f4f6);border-radius:999px;
  padding:2px 9px;font-size:11.5px;font-weight:800}
.rucom-splog-t{flex:0 0 auto;font-size:11.5px;color:var(--muted,#6b6b73);white-space:nowrap}

/* --- Volet professionnel du profil (lu dans le Bottin) ------------------- */
.rucom-pro-badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;
  padding:4px 11px;font-size:11.5px;font-weight:800;line-height:1}
.rucom-pro-badge svg{width:13px;height:13px;flex:0 0 auto}
.rucom-pro-ok{background:#e8f5f4;color:#0f6f68}
.rucom-pro-wait{background:var(--soft,#f5f5f7);color:var(--muted,#6b6b73)}
.rucom-pro-atlas{background:var(--ru-accent-doux,rgba(44,111,181,.12));color:var(--ru-accent,#1d5c8f)}
/* Badge PROFESSIONNEL : la distinction dorée, activée par le membre. */
.rucom-pro-mode{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-pro-mode svg{color:var(--ru-sur-accent,#FFFFFF)}
/* Mode pro dans les paramètres : note quand il n'y a pas de fiche. */
.rucom-promode-note{display:flex;gap:11px;align-items:flex-start;padding:6px 2px}
.rucom-promode-note svg{width:20px;height:20px;color:var(--or-d,var(--ru-accent,#1d5c8f));flex:0 0 auto;margin-top:1px}
.rucom-promode-note b{display:block;font-size:14px}
.rucom-promode-note small{display:block;color:var(--muted,#6b6b73);font-size:12.5px;margin:2px 0 6px;line-height:1.5}
.rucom-promode-link{font-size:13px;font-weight:800;color:var(--ru-texte,#0e2438)}

/* --- Questions d'adhesion a un groupe ----------------------------------- */
.rucom-spq-modal{max-width:560px}
.rucom-spq-modal .rucom-ev-f{display:block;margin-bottom:14px}
.rucom-spq-modal textarea{width:100%;border:1px solid var(--line,#e4e4e8);border-radius:11px;
  padding:10px 12px;font:inherit;font-size:14px;resize:vertical;background:#fff}
.rucom-spq-modal textarea:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
.rucom-sp-req-ans{margin-top:8px;display:flex;flex-direction:column;gap:7px}
.rucom-sp-qa{background:var(--soft,#f7f7f9);border-radius:10px;padding:8px 11px}
.rucom-sp-qa b{display:block;font-size:11.5px;font-weight:900;text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted,#6b6b73);margin-bottom:3px}
.rucom-sp-qa span{display:block;font-size:13.5px;line-height:1.45;color:#33333b;overflow-wrap:anywhere}
.rucom-sp-qa i{color:var(--muted,#6b6b73)}
.rucom-spc-q{width:100%;margin-bottom:6px;border:1px solid var(--line,#e4e4e8);border-radius:10px;
  padding:9px 11px;font:inherit;font-size:13.5px}

/* --- Prevenir les participants d'un evenement --------------------------- */
.rucom-evnotice-modal{max-width:540px}
.rucom-evnotice-modal .rucom-ev-f{display:block;margin-bottom:14px}
.rucom-evnotice-modal textarea{width:100%;border:1px solid var(--line,#e4e4e8);border-radius:11px;
  padding:10px 12px;font:inherit;font-size:14px;resize:vertical;background:#fff}
.rucom-evnotice-modal textarea:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
.rucom-evp-notice svg{width:16px;height:16px}

/* --- Selecteur rapide de tri, au-dessus d'une liste --------------------- */
.rucom-qsort{position:relative;display:inline-flex}
.rucom-qsort-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line,#e4e4e8);
  background:#fff;border-radius:999px;padding:6px 12px;font:inherit;font-size:13px;font-weight:700;
  color:var(--ru-texte,#0e2438);cursor:pointer;white-space:nowrap;line-height:1.2}
.rucom-qsort-btn:hover{background:var(--soft,#f7f7f9)}
.rucom-qsort-btn svg{width:15px;height:15px;flex:0 0 auto}
.rucom-qsort-btn span{font-weight:500;color:var(--muted,#6b6b73)}
.rucom-qsort-btn b{font-weight:800;color:var(--ru-texte,#0e2438)}
.rucom-qsort-menu{position:absolute;z-index:60;top:calc(100% + 6px);left:0;min-width:250px;
  background:#fff;border:1px solid var(--line,#e4e4e8);border-radius:14px;padding:6px;
  box-shadow:0 14px 34px rgba(0,0,0,.14)}
.rucom-qsort-opt{display:block;width:100%;text-align:left;border:0;background:none;border-radius:10px;
  padding:8px 10px;font:inherit;cursor:pointer}
.rucom-qsort-opt:hover{background:var(--soft,#f7f7f9)}
.rucom-qsort-opt b{display:block;font-size:13.5px;font-weight:800;color:var(--ru-texte,#0e2438)}
.rucom-qsort-opt small{display:block;font-size:11.5px;color:var(--muted,#6b6b73);line-height:1.35;margin-top:1px}
.rucom-qsort-opt.rucom-on{background:var(--gold,var(--ru-accent,#1d5c8f))}
.rucom-qsort-opt.rucom-on small{color:var(--ru-accent,#1d5c8f)}
.rucom-qsort-more{display:block;width:100%;text-align:left;border:0;border-top:1px solid var(--line,#e4e4e8);
  background:none;margin-top:5px;padding:9px 10px 4px;font:inherit;font-size:12.5px;font-weight:700;
  color:var(--muted,#6b6b73);cursor:pointer}
.rucom-qsort-more:hover{color:var(--ru-texte,#0e2438)}
@media (max-width:640px){
  .rucom-qsort-btn span{max-width:130px;overflow:hidden;text-overflow:ellipsis}
  .rucom-qsort-menu{left:auto;right:0}
}

/* --- Pages professionnelles -------------------------------------------- */
.rucom-pg-page{max-width:900px;margin:0 auto;padding:6px 0 40px}
.rucom-pg-search{display:flex;gap:8px;margin:0 0 14px}
.rucom-pg-q{flex:1;border:1px solid var(--line,#e4e4e8);border-radius:999px;padding:9px 15px;
  font:inherit;font-size:14px;background:#fff}
.rucom-pg-q:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
.rucom-pg-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.rucom-pgv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:12px}
/* Carte de resultat : la MEME partout (liste, recherche avant creation,
   choix d'une entreprise). Une seule carte a maintenir, une seule a corriger. */
.rucom-pgc{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line,#e4e4e8);
  border-radius:16px;padding:12px 14px}
.rucom-pgc-open{display:flex;align-items:center;gap:12px;flex:1;min-width:0;cursor:pointer}
.rucom-pgc-av{width:52px;height:52px;border-radius:14px;object-fit:cover;flex:0 0 auto;background:var(--soft,#f7f7f9)}
.rucom-pgc-noav{display:flex;align-items:center;justify-content:center;color:var(--muted,#6b6b73)}
.rucom-pgc-noav svg{width:24px;height:24px}
.rucom-pgc-bd{min-width:0;flex:1;display:block}
.rucom-pgc-bd b{display:block;font-size:14.5px;font-weight:800;color:var(--ru-texte,#0e2438);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-pgc-bd small{display:block;font-size:12.5px;color:var(--muted,#6b6b73);margin-top:1px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-pgc-tags{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:5px}
.rucom-pgc-badge{font-size:10.5px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;
  border-radius:999px;padding:2px 8px}
.rucom-pgc-claimed{background:var(--soft,#f7f7f9);color:var(--muted,#6b6b73)}
.rucom-pgc-free{background:var(--gold,var(--ru-accent,#1d5c8f));color:var(--ru-accent,#1d5c8f)}
.rucom-pgc-match{font-size:10.5px;font-weight:900;color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,rgba(44,111,181,.12));border-radius:999px;padding:2px 8px}
.rucom-pgc-foll{font-size:11.5px;color:var(--muted,#6b6b73)}
.rucom-pgc-act{flex:0 0 auto}
.rucom-pgv-grid .rucom-pgc{flex-direction:column;align-items:flex-start;gap:10px}
.rucom-pgv-grid .rucom-pgc-open{width:100%}
.rucom-pgv-grid .rucom-pgc-act{width:100%}
.rucom-pgv-grid .rucom-pgc-act .rucom-btn{width:100%;justify-content:center}
/* Sur telephone, la grille tombe a UNE colonne : la carte en colonne avec un
   bouton pleine largeur devenait un gros pave dore. On la traite alors comme
   la vue liste : avatar et texte a gauche, petit bouton « Suivre » a droite. */
@media (max-width:600px){
  .rucom-pgv-grid{grid-template-columns:1fr}
  .rucom-pgv-grid .rucom-pgc{flex-direction:row;align-items:center;gap:12px}
  .rucom-pgv-grid .rucom-pgc-open{width:auto}
  .rucom-pgv-grid .rucom-pgc-act{width:auto}
  .rucom-pgv-grid .rucom-pgc-act .rucom-btn{width:auto}
}
/* La page elle-meme */
.rucom-pgp{max-width:820px;margin:0 auto;padding:6px 0 50px}
.rucom-pgp-head{display:flex;align-items:center;gap:16px;margin:14px 0 6px;flex-wrap:wrap}
.rucom-pgp-av{width:92px;height:92px;border-radius:20px;object-fit:cover;flex:0 0 auto;background:var(--soft,#f7f7f9)}
.rucom-pgp-av.rucom-pgc-noav svg{width:38px;height:38px}
.rucom-pgp-hbd{flex:1;min-width:180px}
.rucom-pgp-hbd h1{margin:0;font-size:26px;font-weight:900;letter-spacing:-.01em;color:var(--ru-texte,#0e2438)}
.rucom-pgp-meta{font-size:14px;color:var(--muted,#6b6b73);margin-top:3px}
.rucom-pgp-counts{font-size:13px;color:var(--muted,#6b6b73);margin-top:5px}
.rucom-pgp-hact{display:flex;gap:8px;flex:0 0 auto}
.rucom-pgp-claim{display:flex;align-items:center;gap:12px;background:var(--ru-accent-doux,rgba(44,111,181,.12));border:1px solid var(--ru-accent,#1d5c8f);
  border-radius:16px;padding:13px 15px;margin:16px 0}
.rucom-pgp-claim svg{width:20px;height:20px;flex:0 0 auto;color:var(--ru-accent,#1d5c8f)}
.rucom-pgp-claim div{flex:1;min-width:0}
.rucom-pgp-claim b{display:block;font-size:14px;font-weight:900;color:var(--ru-accent,#1d5c8f)}
.rucom-pgp-claim span{display:block;font-size:13px;color:var(--ru-accent,#1d5c8f);line-height:1.4;margin-top:2px}
.rucom-pgp-sec{margin-top:22px}
.rucom-pgp-sec h3{margin:0 0 9px;font-size:12px;font-weight:900;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted,#6b6b73)}
.rucom-pgp-links{display:flex;gap:8px;flex-wrap:wrap}
.rucom-pgp-tags{display:flex;gap:7px;flex-wrap:wrap}
.rucom-pgp-tag{background:var(--soft,#f7f7f9);border-radius:999px;padding:5px 12px;font-size:13px;color:#33333b}
.rucom-pgp-role{font-style:normal;font-size:10.5px;font-weight:900;text-transform:uppercase;
  letter-spacing:.04em;color:var(--ru-accent,#1d5c8f);background:var(--gold,var(--ru-accent,#1d5c8f));border-radius:999px;padding:1px 7px;margin-left:5px}
.rucom-pgmanage{max-width:560px}
@media (max-width:640px){
  .rucom-pgp-head{gap:12px}
  .rucom-pgp-av{width:66px;height:66px;border-radius:16px}
  .rucom-pgp-hbd h1{font-size:21px}
  .rucom-pgp-hact{width:100%}
  .rucom-pgp-hact .rucom-btn{flex:1;justify-content:center}
}

/* ORDINATEUR ETROIT (portable de 13 pouces). Trois colonnes ne rentrent pas :
   30 + 250 + 26 + 600 + 26 + 340 + 30 demandent 1302 pixels. En dessous, c'est
   le fil qui payait, reduit a 300 pixels de large, illisible. On retire plutot
   la colonne de droite, qui est un complement, et on rend toute la place au
   fil, qui est le coeur. Le seuil est pose a 1320 pour garder une marge. */
@media (min-width:1000px) and (max-width:1319px){
  .rucom-right{display:none}
  .rucom-shell{grid-template-columns:250px minmax(0,1fr);justify-content:start}
  .rucom-app.rucom-rail-min .rucom-shell{grid-template-columns:76px minmax(0,1fr)}
}

/* --- Le mur d'une page ------------------------------------------------- */
.rucom-pgp-wall{margin-top:26px}
.rucom-pgw-box{background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));border-radius:16px;
  padding:12px 14px;margin-bottom:16px}
.rucom-pgw-t{width:100%;border:0;background:none;font:inherit;font-size:15px;line-height:1.5;
  resize:vertical;min-height:52px}
.rucom-pgw-t:focus{outline:0}
.rucom-pgw-foot{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line,rgba(17,17,20,.08));
  padding-top:10px;margin-top:6px}
.rucom-pgw-foot small{flex:1;font-size:11.5px;color:var(--muted,#6b6b73);line-height:1.35}
.rucom-pgw-list{display:block}
/* Une publication signee par une PAGE : pastille carree, pas ronde. Un rond,
   c'est une personne ; un carre, c'est une entreprise. La difference doit se
   voir sans lire. */
.rucom-av.rucom-pgav{border-radius:11px;width:40px;height:40px;object-fit:cover;
  background:var(--soft,#f4f4f6);display:inline-flex;align-items:center;justify-content:center}
.rucom-av.rucom-pgav svg{width:19px;height:19px;color:var(--muted,#6b6b73)}
.rucom-p-pgav{flex:0 0 auto;cursor:pointer;display:inline-flex}
.rucom-pgtag{display:inline-block;margin-left:6px;vertical-align:2px;font-size:10px;font-weight:900;
  text-transform:uppercase;letter-spacing:.05em;color:var(--ru-accent,#1d5c8f);background:var(--or,var(--ru-accent,#1d5c8f));
  border-radius:999px;padding:1px 7px}

/* --- Etat vide standard d'un onglet ------------------------------------ */
/* Une phrase seule au milieu du fond a l'air d'un oubli. Un etat vide est une
   boite comme les autres : icone, phrase, et un mot qui dit quoi faire. */
.rucom-vide{background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));border-radius:16px;
  padding:44px 26px;text-align:center;margin-bottom:16px}
.rucom-vide-ic{display:grid;place-items:center;width:56px;height:56px;margin:0 auto 14px;
  border-radius:50%;background:var(--soft,#f4f4f6);color:var(--muted,#6b6b73)}
.rucom-vide-ic svg{width:25px;height:25px}
.rucom-vide-t{font-size:16px;font-weight:800;color:var(--ru-texte,#0e2438)}
.rucom-vide-s{margin:6px 0 0;font-size:13.5px;color:var(--muted,#6b6b73);line-height:1.5}
.rucom-vide-s:empty{display:none}

/* --- Messages programmes ----------------------------------------------- */
.rucom-sched-modal{max-width:520px}
.rucom-sched-modal .rucom-ev-f{display:block;margin-bottom:14px}
.rucom-sched-modal input[type="datetime-local"],
.rucom-sched-modal textarea{width:100%;border:1px solid var(--line,#e4e4e8);border-radius:11px;
  padding:10px 12px;font:inherit;font-size:14px;background:#fff}
.rucom-sched-modal textarea{resize:vertical}
.rucom-sched-modal input:focus,.rucom-sched-modal textarea:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
/* La liste des envois en attente vit JUSTE au-dessus de la barre de saisie :
   c'est la qu'on pense a les relire, pas dans un ecran de reglages. */
.rucom-sched-list:empty{display:none}
.rucom-sched-list{border-top:1px solid var(--line,rgba(17,17,20,.10));background:var(--ru-accent-doux,rgba(44,111,181,.12));
  padding:8px 12px;max-height:170px;overflow-y:auto;flex:0 0 auto}
.rucom-sched-h{font-size:10.5px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;
  color:var(--muted,#6b6b73);padding:2px 0 6px}
.rucom-schedrow{display:flex;align-items:center;gap:10px;padding:6px 0}
.rucom-schedrow svg{width:16px;height:16px;flex:0 0 auto;color:var(--ru-accent,#1d5c8f)}
.rucom-schedrow-bd{flex:1;min-width:0}
.rucom-schedrow-bd b{display:block;font-size:12.5px;font-weight:800;color:var(--ru-texte,#0e2438)}
.rucom-schedrow-bd small{display:block;font-size:12px;color:var(--muted,#6b6b73);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-schedrow-no{opacity:.75}
.rucom-schedrow-no svg{color:#b40000}
.rucom-sched-btn.rucom-hidden{display:none}

/* =======================================================================
   PAGE DE PROFIL - proportions approuvees sur maquette.
   Avant : le profil s'etalait sur tout l'ecran, la photo de 88 pixels etait
   perdue sous une couverture de 220, et le bouton Modifier prenait toute la
   largeur pour un seul mot. Desormais : colonne bornee, photo de 150 qui
   chevauche la couverture, identite et chiffres A COTE de la photo, boutons a
   la taille de leur texte, et corps sur deux colonnes.
   ======================================================================= */
.rucom-prof{background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));border-radius:18px;overflow:hidden}
.rucom-prof>.rucom-cover{height:210px;border-radius:0}
/* Bandeau compact historique (210 px sur ordinateur) :
   une image 1500 x 500 reste une source haute resolution, mais l'affichage
   horizontal ne peut pas montrer toute sa hauteur. Cadrage centre, explicite. */
.rucom-prof>.rucom-cover.rucom-cover--photo{height:210px;aspect-ratio:auto;min-height:0;background:#0e2438;overflow:hidden}
.rucom-prof>.rucom-cover.rucom-cover--photo>img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 65%}
.rucom-p-head2{display:flex;align-items:flex-end;gap:20px;flex-wrap:wrap;padding:0 28px 18px}
.rucom-p-head2>.rucom-p-avatar{width:150px;height:150px;border:5px solid #fff;border-radius:50%;
  margin-top:-56px;flex:0 0 auto;font-size:38px;overflow:hidden}
.rucom-p-head2>.rucom-p-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.rucom-p-hbd{flex:1 1 260px;min-width:0;padding-bottom:2px}
.rucom-p-hbd .rucom-p-name{margin:10px 0 2px;font-size:30px;font-weight:900;letter-spacing:-.02em;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rucom-p-hbd .rucom-p-handle{font-size:14.5px;color:var(--muted,#6b6b73)}
.rucom-p-hbd .rucom-p-headline{margin-top:6px;font-size:14.5px;color:#33333b}
.rucom-p-hbd .rucom-stats{display:flex;gap:26px;margin-top:14px;padding:0}
.rucom-p-hbd .rucom-stat{text-align:left}
.rucom-p-hbd .rucom-stat b{display:block;font-size:17px;font-weight:900}
.rucom-p-hbd .rucom-stat small{font-size:12.5px;color:var(--muted,#6b6b73)}
/* Les boutons ne s'etirent plus : un bouton d'un mot ne fait pas 900 pixels. */
.rucom-prof .rucom-p-btns{display:flex;gap:9px;flex:0 0 auto;padding:0 0 4px;flex-wrap:wrap}
.rucom-prof .rucom-p-btns .rucom-btn{flex:0 0 auto;padding:10px 20px}
.rucom-prof .rucom-bio{padding:0 28px;max-width:780px}
.rucom-prof .rucom-p-srcbtns{padding:16px 28px 0}
.rucom-prof .rucom-ptabs{padding:18px 28px 0;margin:0;border-bottom:1px solid var(--line)}
/* Corps en deux colonnes : le durable a gauche, le vivant a droite. */
.rucom-p-body{display:grid;grid-template-columns:300px minmax(0,1fr);gap:22px;
  align-items:start;padding:20px 28px 28px}
.rucom-p-side{display:flex;flex-direction:column;gap:14px;position:sticky;top:16px}
.rucom-p-sbloc{background:var(--soft,#f4f4f6);border-radius:16px;padding:16px 18px}
.rucom-p-sbloc h4{margin:0 0 10px;font-size:11.5px;font-weight:900;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted,#6b6b73)}
.rucom-p-sbd{font-size:13.5px;line-height:1.55;color:#33333b}
.rucom-p-sloc{display:flex;align-items:center;gap:6px;margin-top:8px;font-weight:700}
.rucom-p-sloc svg{width:15px;height:15px;flex:0 0 auto;color:var(--muted,#6b6b73)}
.rucom-p-side .rucom-tops{margin:0}
.rucom-p-side .rucom-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;overflow:visible}
.rucom-p-side .rucom-friend{width:auto;text-align:center;cursor:pointer}
.rucom-p-side .rucom-friend small{display:block;font-size:11.5px;font-weight:700;margin-top:4px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-p-body .rucom-p-posts{min-width:0}
@media (max-width:900px){
  /* Sur telephone la colonne laterale passe DESSOUS : la coller a cote
     donnerait deux colonnes de 150 pixels, illisibles toutes les deux. */
  .rucom-p-body{grid-template-columns:1fr;padding:16px 14px 22px;gap:16px}
  .rucom-p-side{position:static;order:0}
  .rucom-p-main{order:1}
  .rucom-p-head2{padding:0 16px 16px;gap:14px}
  .rucom-p-head2>.rucom-p-avatar{width:96px;height:96px;margin-top:-40px;border-width:4px;font-size:26px}
  .rucom-p-hbd .rucom-p-name{font-size:22px}
  .rucom-prof .rucom-bio,.rucom-prof .rucom-p-srcbtns,.rucom-prof .rucom-ptabs{padding-left:16px;padding-right:16px}
  .rucom-prof .rucom-p-btns{width:100%}
  .rucom-prof .rucom-p-btns .rucom-btn{flex:1 1 auto;justify-content:center}
  .rucom-prof>.rucom-cover{height:150px}
  .rucom-prof>.rucom-cover.rucom-cover--photo>img{object-position:50% 65%}
  .rucom-ed-cover.rucom-ed-cover--photo>img{object-position:50% 65%}
}

/* PROFIL : 1000 pixels, la largeur approuvee sur maquette, dans les DEUX etats
   du menu. Ailleurs, refermer le menu elargit le centre ; ici non, parce que
   1000 pixels est une largeur de LECTURE, pas une place disponible : au-dela,
   l'oeil ne retrouve plus le debut de la ligne suivante.
   Ces regles sont a la fin du fichier a dessein : celles du menu reduit
   arrivent plus loin que la disposition de base, et a poids de selecteur egal
   c'est l'ordre qui tranche. */
@media (min-width:1000px){
  .rucom-app.rucom-view-prof .rucom-shell,
  .rucom-app.rucom-view-prof.rucom-rail-min .rucom-shell{grid-template-columns:250px minmax(0,1000px);justify-content:start}
  .rucom-app.rucom-view-prof.rucom-rail-min .rucom-shell{grid-template-columns:76px minmax(0,1000px)}
  .rucom-app.rucom-view-prof .rucom-right{display:none}
}
.rucom-prof .rucom-p-cadeau-row{padding:12px 28px 0;margin-top:9px}
@media (max-width:900px){ .rucom-prof .rucom-p-cadeau-row{padding-left:16px;padding-right:16px} }

/* --- Confidentialite par section --------------------------------------- */
.rucom-privsec{border-top:1px solid var(--line,rgba(17,17,20,.10));margin-top:14px;padding-top:14px}
.rucom-privsec-h{font-size:13.5px;font-weight:900;color:var(--ru-texte,#0e2438);padding:0 16px}
.rucom-privsec-sub{font-size:12.5px;color:var(--muted,#6b6b73);line-height:1.5;margin:4px 16px 12px}
.rucom-privsec-list{display:flex;flex-direction:column;gap:2px}
.rucom-privsec-row{display:flex;align-items:center;gap:14px;padding:11px 16px;
  border-bottom:1px solid rgba(17,17,20,.06)}
.rucom-privsec-row:last-child{border-bottom:0}
.rucom-privsec-bd{flex:1;min-width:0}
.rucom-privsec-bd b{display:block;font-size:14px;font-weight:800}
.rucom-privsec-bd small{display:block;font-size:12.5px;color:var(--muted,#6b6b73);
  line-height:1.45;margin-top:3px}
.rucom-privsec-sel{flex:0 0 auto;border:1px solid var(--line,#e4e4e8);border-radius:10px;
  padding:8px 12px;font:inherit;font-size:13.5px;font-weight:700;background:#fff;cursor:pointer;
  color:var(--ru-texte,#0e2438);max-width:170px}
.rucom-privsec-sel:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
.rucom-privsec-sel:disabled{opacity:.55;cursor:wait}
@media (max-width:560px){
  .rucom-privsec-row{flex-direction:column;align-items:stretch;gap:8px}
  .rucom-privsec-sel{max-width:none;width:100%}
}
/* --- Langue et region -------------------------------------------------- */
.rucom-regionset{padding:2px 0}
.rucom-region-row{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:12px 16px;border-bottom:1px solid rgba(17,17,20,.07)}
.rucom-region-row:last-of-type{border-bottom:0}
.rucom-region-lbl{display:block;flex:1;min-width:0}
.rucom-region-lbl b{display:block;font-size:14px;font-weight:800}
.rucom-region-lbl small{display:block;font-size:12.5px;color:var(--muted,#6b6b73);
  line-height:1.45;margin-top:3px}
.rucom-region-input{flex:0 0 auto;border:1px solid var(--line,#e4e4e8);border-radius:10px;
  padding:8px 12px;font:inherit;font-size:13.5px;background:#fff;color:var(--ru-texte,#0e2438);max-width:220px}
.rucom-region-input:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
.rucom-region-actions{padding:12px 16px;display:flex;justify-content:flex-end}
@media (max-width:560px){
  .rucom-region-row{flex-direction:column;align-items:stretch;gap:8px}
  .rucom-region-input{max-width:none;width:100%}
}
/* --- Securite et connexion -------------------------------------------- */
.rucom-secuset{padding:2px 0}
.rucom-secu-sess{padding:10px 16px;border-bottom:1px solid rgba(17,17,20,.07)}
.rucom-secu-sess:last-of-type{border-bottom:0}
.rucom-secu-sess b{display:block;font-size:13.5px;font-weight:800;color:var(--ru-texte,#0e2438)}
.rucom-secu-sess small{display:block;font-size:12px;color:var(--muted,#6b6b73);margin-top:2px}
.rucom-secu-facestate{flex:0 0 auto;font-size:12.5px;font-weight:800;color:var(--muted,#6b6b73);white-space:nowrap}
.rucom-secu-facestate.rucom-on{color:var(--ru-texte,#0e2438)}
.rucom-p-lock{display:flex;align-items:flex-start;gap:10px}
.rucom-p-lock svg{width:17px;height:17px;flex:0 0 auto;color:var(--muted,#6b6b73);margin-top:1px}
.rucom-p-lock span{font-size:13px;color:var(--muted,#6b6b73);line-height:1.5}
.rucom-pgm-logh{margin-top:20px;padding-top:16px;border-top:1px solid var(--line,rgba(17,17,20,.10));
  font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:var(--muted,#6b6b73)}
.rucom-pgm-log{max-height:230px;overflow-y:auto}

/* --- Album photo d'un evenement ---------------------------------------- */
.rucom-evalbum{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.rucom-evalbum-c{position:relative;display:block;aspect-ratio:1;border-radius:12px;
  overflow:hidden;background:var(--soft,#f4f4f6);cursor:pointer}
.rucom-evalbum-c img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s ease}
.rucom-evalbum-c:hover img{transform:scale(1.04)}
/* Le nom de l'auteur reste lisible sur n'importe quelle photo : un degrade,
   pas une bande opaque qui masquerait le bas de l'image. */
.rucom-evalbum-by{position:absolute;left:0;right:0;bottom:0;padding:18px 10px 8px;
  font-size:11.5px;font-weight:800;color:#fff;
  background:linear-gradient(to top,rgba(0,0,0,.62),rgba(0,0,0,0));
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:560px){ .rucom-evalbum{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:6px} }

/* --- Statistiques d'un groupe ------------------------------------------ */
.rucom-spstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:4px 0 20px}
.rucom-spstat{background:var(--soft,#f4f4f6);border-radius:16px;padding:16px 18px}
.rucom-spstat b{display:block;font-size:27px;font-weight:900;line-height:1.05;letter-spacing:-.02em}
.rucom-spstat span{display:block;font-size:13px;font-weight:700;margin-top:5px}
.rucom-spstat small{display:block;font-size:11.5px;color:var(--muted,#6b6b73);margin-top:2px}
.rucom-spstat-sec h4{margin:0 0 10px;font-size:11.5px;font-weight:900;text-transform:uppercase;
  letter-spacing:.05em;color:var(--muted,#6b6b73)}
.rucom-spstat-sec .rucom-spm-a b{font-size:15px;font-weight:900}
/* Composer d'un groupe : le moment de parution, sur sa propre ligne. */
.rucom-sp-when{display:flex;align-items:center;gap:9px;margin:8px 0 2px;flex-wrap:wrap}
.rucom-sp-when span{font-size:12.5px;font-weight:700;color:var(--muted,#6b6b73)}
.rucom-sp-whenin{border:1px solid var(--line,#e4e4e8);border-radius:10px;padding:7px 11px;
  font:inherit;font-size:13px;background:#fff}
.rucom-sp-whenin:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
.rucom-p-flag.rucom-p-sched{background:#eef4ff;color:#274b8a}
.rucom-p-flag.rucom-p-sched svg{color:#274b8a}
/* Au bout des suggestions : le chemin vers la recherche de membres. */
.rucom-see-all-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
  margin-top:12px;padding:13px 16px;border:1px solid var(--line,rgba(17,17,20,.10));
  border-radius:14px;background:#fff;font:inherit;font-size:14px;font-weight:800;
  color:var(--ru-texte,#0e2438);cursor:pointer}
.rucom-see-all-btn:hover{background:var(--soft,#f4f4f6)}
.rucom-see-all-btn svg{width:17px;height:17px;flex:0 0 auto}

/* ==================================================================
   FUSION DE PAGES
   ==================================================================
   Deux blocs : la liste des pages semblables dans la modale de gestion,
   et le bandeau qui previent qu'on est arrive par une ancienne adresse.
   Place a la FIN de la feuille : a poids de selecteur egal, c'est
   l'ordre qui tranche, et ces regles doivent l'emporter.
   ================================================================== */

/* Une page semblable, proposee a la fusion. */
.rucom-pgmg-row{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:11px 0;border-bottom:1px solid var(--line,rgba(17,17,20,.08))}
.rucom-pgmg-row:last-child{border-bottom:0}
.rucom-pgmg-row .rucom-spm-p{min-width:0}
.rucom-pgmg-row .rucom-spm-bd{min-width:0}
.rucom-pgmg-row .rucom-spm-bd b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-pgmg-row .rucom-spm-a{flex:0 0 auto;display:flex;align-items:center;gap:9px}

.rucom-pgmg-av{width:36px;height:36px;border-radius:10px;object-fit:cover;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;background:var(--soft,#f4f4f6)}
.rucom-pgmg-av svg{width:18px;height:18px;color:var(--muted,#6b6b73)}

/* Meme ville : c'est le signal qui distingue un vrai doublon d'un
   homonyme legitime. Il merite d'etre vu, pas devine. */
.rucom-pgmg-flag{font-size:11px;font-weight:800;letter-spacing:.02em;
  padding:4px 8px;border-radius:999px;background:var(--ru-accent-doux,rgba(44,111,181,.12));color:var(--ru-accent,#1d5c8f);white-space:nowrap}

.rucom-pgmg-no{font-size:12px;color:var(--muted,#6b6b73);white-space:nowrap}

/* Bandeau : cette page en a absorbe une autre, et tu arrives par
   l'ancienne adresse. */
.rucom-pgp-merged{display:flex;align-items:flex-start;gap:12px;
  margin:0 0 16px;padding:13px 15px;border-radius:14px;
  background:#eef4ff;border:1px solid #cfdcf5}
.rucom-pgp-merged svg{width:19px;height:19px;flex:0 0 auto;color:#274b8a;margin-top:1px}
.rucom-pgp-merged div{min-width:0}
.rucom-pgp-merged b{display:block;font-size:13.5px;font-weight:800;color:#1f3a63}
.rucom-pgp-merged span{display:block;margin-top:3px;font-size:12.5px;line-height:1.5;color:#3a5580}

@media(max-width:640px){
  .rucom-pgmg-row{flex-wrap:wrap}
  .rucom-pgmg-row .rucom-spm-a{width:100%;justify-content:flex-end}
}

/* ==================================================================
   AVERTISSEMENT ET ATTESTATION DANS UNE CONFIRMATION
   ==================================================================
   Certains gestes engagent la responsabilite de celui qui les fait.
   L'avertissement n'est pas une note de bas de page : il se voit
   avant le bouton, et le bouton reste inerte tant que la case n'est
   pas cochee.
   ================================================================== */
.rucom-confirm-warn{display:flex;align-items:flex-start;gap:11px;
  margin:14px 0 0;padding:12px 14px;border-radius:12px;
  background:#fdf2f2;border:1px solid #e9bcbc}
.rucom-confirm-warn svg{width:18px;height:18px;flex:0 0 auto;color:#a12b2b;margin-top:1px}
.rucom-confirm-warn div{min-width:0;font-size:13px;line-height:1.55;color:#7d2020;font-weight:600}

.rucom-confirm-attest{display:flex;align-items:flex-start;gap:10px;
  margin:13px 0 0;padding:11px 13px;border-radius:12px;
  background:var(--soft,#f4f4f6);border:1px solid var(--line,rgba(17,17,20,.10));cursor:pointer}
.rucom-confirm-attest input{margin:2px 0 0;flex:0 0 auto;width:17px;height:17px;cursor:pointer}
.rucom-confirm-attest span{min-width:0;font-size:12.5px;line-height:1.55;color:var(--ru-texte,#0e2438)}

/* Un bouton inerte doit AVOIR L'AIR inerte, sinon le membre clique et
   croit que le logiciel ne repond pas. */
.rucom-confirm-modal .rucom-btn[disabled]{opacity:.45;cursor:not-allowed}

/* Sur un ecran court, la carte defilait en entier et les boutons tombaient
   sous la ligne de flottaison : le membre lisait l'avertissement sans pouvoir
   repondre. Premiere tentative : un pied colle par-dessus. Elle recouvrait la
   case a cocher, donc le bouton restait inerte et ce qui le debloquait passait
   dessous. C'etait pire.

   Solution : le CONTENU defile, le PIED occupe sa propre place. Rien ne se
   pose sur rien. */
.rucom-confirm-modal{display:flex;flex-direction:column;overflow:hidden}
.rucom-confirm-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin}
.rucom-confirm-modal .rucom-ed-actions{
  flex:0 0 auto;margin-top:0;padding-top:16px;
  border-top:1px solid var(--line,rgba(17,17,20,.08))
}

/* ==================================================================
   ONGLETS D'UN GROUPE : PHOTOS ET FICHIERS
   ==================================================================
   Le contenu existe deja dans le mur. Ces deux vues le rassemblent
   pour qu'on cesse de faire defiler six mois de publications pour
   retrouver une photo de mars ou un document de travail.
   ================================================================== */

/* Grille de photos. auto-fill plutot qu'un nombre fixe de colonnes :
   la grille se remplit d'elle-meme, du telephone au grand ecran, sans
   qu'on ait a decider a l'avance combien d'images par rangee. */
.rucom-spalb{display:grid;gap:6px;margin-top:4px;
  grid-template-columns:repeat(auto-fill,minmax(108px,1fr))}
.rucom-spalb-i{position:relative;padding:0;border:0;background:var(--soft,#f4f4f6);
  border-radius:10px;overflow:hidden;cursor:pointer;aspect-ratio:1/1}
.rucom-spalb-i img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .18s ease}
.rucom-spalb-i:hover img{transform:scale(1.04)}
.rucom-spalb-i:focus-visible{outline:2px solid var(--ink,#111114);outline-offset:2px}

/* Liste de fichiers. Nom, poids, auteur : de quoi decider si on
   telecharge, AVANT de telecharger. */
.rucom-spfiles{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.rucom-spfile{display:flex;align-items:center;gap:12px;
  padding:11px 13px;border:1px solid var(--line,rgba(17,17,20,.10));
  border-radius:12px;background:#fff}
.rucom-spfile-ic{flex:0 0 auto;width:36px;height:36px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  background:var(--soft,#f4f4f6)}
.rucom-spfile-ic svg{width:17px;height:17px;color:var(--muted,#6b6b73)}
/* flex-basis a ZERO, pas « auto ». Avec « auto », la base est la largeur du
   contenu : un nom de fichier long depassait la place disponible et le bloc
   partait a la ligne AVANT de se retrecir, ce qui laissait l'icone seule sur
   sa rangee. Selon la longueur du nom, deux lignes voisines n'avaient donc pas
   la meme forme. Avec zero, le bloc partage le groupe restant et se retrecit,
   comme le prevoit deja l'ellipse sur le nom. */
.rucom-spfile-bd{flex:1 1 0;min-width:0}
.rucom-spfile-bd b{display:block;font-size:13.5px;font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-spfile-bd small{display:block;margin-top:2px;font-size:12px;
  color:var(--muted,#6b6b73);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-spfile .rucom-btn{flex:0 0 auto}

/* Bascule a venir / passes dans l'onglet Evenements du groupe. */
.rucom-spev-tabs{margin-bottom:12px}

@media(max-width:640px){
  .rucom-spalb{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:5px}
  .rucom-spfile{flex-wrap:wrap}
  .rucom-spfile .rucom-btn{width:100%;text-align:center}
}

/* ==================================================================
   EVENEMENTS RECURRENTS et INVITATION PAR COURRIEL
   ================================================================== */

/* Bloc de recurrence dans le formulaire d'evenement. Les champs
   n'apparaissent QUE si la case est cochee : montrer une frequence a
   quelqu'un qui cree un evenement unique ajoute une question a laquelle
   il n'a pas a repondre. */
.rucom-evrec{margin:4px 0 2px;padding:13px 15px;border-radius:12px;
  background:var(--soft,#f4f4f6);border:1px solid var(--line,rgba(17,17,20,.08))}
.rucom-evrec-on{display:flex;align-items:center;gap:10px;cursor:pointer}
.rucom-evrec-on input{width:17px;height:17px;flex:0 0 auto;cursor:pointer}
.rucom-evrec-on span{font-size:13.5px;font-weight:700;color:var(--ru-texte,#0e2438)}
.rucom-evrec-fields{display:none;gap:12px;margin-top:12px}
.rucom-evrec-on input:checked ~ span{color:var(--ru-texte,#0e2438)}
/* Deux chemins pour la meme bascule, et c'est voulu : la classe posee par
   le JavaScript est celle qui compte, « :has() » n'est qu'un renfort pour
   les navigateurs qui le connaissent. Dependre du seul « :has() » aurait
   laisse le bloc vide sur un navigateur un peu ancien, sans que rien ne
   signale la panne. */
.rucom-evrec.rucom-evrec-open .rucom-evrec-fields{display:flex;flex-wrap:wrap}
.rucom-evrec.rucom-evrec-open .rucom-evrec-note{display:block}
.rucom-evrec:has(.rucom-ev-rec-chk:checked) .rucom-evrec-fields{display:flex;flex-wrap:wrap}
.rucom-evrec:has(.rucom-ev-rec-chk:checked) .rucom-evrec-note{display:block}
.rucom-evrec-fields .rucom-ev-f{flex:1 1 160px;min-width:0;margin:0}
.rucom-evrec-note{display:none;margin:10px 0 0;font-size:12.5px;line-height:1.55;
  color:var(--muted,#6b6b73)}

/* Invitation par courriel, sous le lien a copier. */
.rucom-inv-mail{margin-top:16px;padding-top:16px;
  border-top:1px solid var(--line,rgba(17,17,20,.10))}
.rucom-inv-mailrow{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:8px}
.rucom-inv-email{flex:1 1 220px;min-width:0;padding:11px 13px;font:inherit;font-size:14px;
  border:1px solid var(--line,rgba(17,17,20,.12));border-radius:10px;background:#fff}
.rucom-inv-mailnote{width:100%;padding:10px 13px;font:inherit;font-size:13px;
  border:1px solid var(--line,rgba(17,17,20,.12));border-radius:10px;background:#fff}
.rucom-inv-email:focus,.rucom-inv-mailnote:focus{outline:0;border-color:var(--ru-texte,#0e2438)}
.rucom-inv-mailrow .rucom-btn{flex:0 0 auto}

/* La reponse du serveur, telle quelle : lui seul sait si l'adresse est
   valide, si la personne est deja membre, ou si le plafond est atteint. */
.rucom-inv-mailmsg{display:none;margin-top:10px;padding:10px 13px;border-radius:10px;
  font-size:13px;line-height:1.5}
.rucom-inv-mailmsg.rucom-on{display:block}
.rucom-inv-mailmsg.rucom-ok{background:#e9f7ee;border:1px solid #b4dfc4;color:#1d6b39}
.rucom-inv-mailmsg.rucom-no{background:#fdf2f2;border:1px solid #e9bcbc;color:#7d2020}

@media(max-width:640px){
  /* En COLONNE, « flex:1 1 160px » ne veut plus dire « au moins 160 px de
     large » mais « au moins 160 px de HAUT » : chaque champ se retrouvait
     etire sur 160 px et deux grands vides s'ouvraient entre eux. En colonne,
     un champ prend la hauteur de son contenu, point. */
  .rucom-evrec-fields{flex-direction:column}
  .rucom-evrec-fields .rucom-ev-f{flex:0 0 auto}
  .rucom-inv-mailrow .rucom-btn{width:100%;text-align:center}
}

/* ==================================================================
   AUTOUR DU GROUPE
   ==================================================================
   Trois listes de même forme : une fiche du Bottin, un événement et
   un appel d'offres se lisent pareil, donc s'affichent pareil. Trois
   présentations différentes auraient demandé au membre d'apprendre
   trois fois la même chose.
   ================================================================== */
.rucom-spar-sec{margin:0 0 22px}
.rucom-spar-sec h4{margin:0 0 4px;font-size:11.5px;font-weight:900;
  text-transform:uppercase;letter-spacing:.05em;color:var(--muted,#6b6b73)}
.rucom-spar-sub{margin:0 0 10px;font-size:12.5px;line-height:1.5;color:var(--muted,#6b6b73)}
.rucom-spar-list{display:flex;flex-direction:column;gap:8px}

.rucom-spar-row{display:flex;align-items:center;gap:12px;width:100%;
  padding:11px 13px;text-align:left;text-decoration:none;cursor:pointer;
  border:1px solid var(--line,rgba(17,17,20,.10));border-radius:12px;
  background:#fff;font:inherit;color:var(--ru-texte,#0e2438)}
.rucom-spar-row:hover{background:var(--soft,#f4f4f6)}
.rucom-spar-av{flex:0 0 auto;width:38px;height:38px;border-radius:10px;
  object-fit:cover;display:flex;align-items:center;justify-content:center;
  background:var(--soft,#f4f4f6)}
.rucom-spar-av svg{width:17px;height:17px;color:var(--muted,#6b6b73)}
/* flex-basis a ZERO : avec « auto », un titre long ferait passer le bloc
   a la ligne AVANT de se retrecir, et l'icone resterait seule sur sa
   rangee. Meme piege que dans la liste des fichiers. */
.rucom-spar-bd{flex:1 1 0;min-width:0}
.rucom-spar-bd b{display:block;font-size:13.5px;font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-spar-bd small{display:block;margin-top:2px;font-size:12px;
  color:var(--muted,#6b6b73);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* APERCU D'UN GROUPE qu'on n'a pas encore rejoint. Le bouton d'adhesion est
   au centre, en gros : c'est la seule action qui a du sens sur cette page.
   Marges laterales en pourcentage pour que le texte ne colle jamais au bord
   sur un telephone. */
.rucom-spgate{display:flex;flex-direction:column;align-items:center;text-align:center;
  gap:10px;padding:44px 6% 46px;background:var(--soft,#f4f4f6);border-radius:16px}
.rucom-spgate>svg{width:26px;height:26px;color:var(--muted,#6b6b73)}
.rucom-spgate-t{font-size:17px;font-weight:800;color:var(--ru-texte,#0e2438)}
.rucom-spgate-s{font-size:13.5px;line-height:1.55;color:var(--muted,#6b6b73);max-width:420px}
.rucom-spgate-n{font-size:12.5px;font-weight:700;color:var(--muted,#6b6b73);
  background:#fff;border-radius:999px;padding:4px 12px}
.rucom-spgate-a{margin-top:2px}
.rucom-spgate-a .rucom-btn{padding:10px 22px;font-size:14.5px}
.rucom-spgate .rucom-sp-inviteonly{font-size:13px;font-weight:700;color:var(--muted,#6b6b73)}

/* ROLE PLUS LONG, RANGEE INCHANGEE. « Administrateur du groupe » prend 190
   pixels : sur un telephone, l'etiquette volait la place du NOM, qui est la
   seule chose qu'on cherche vraiment dans une liste de membres. Le nom passe
   donc sur une ligne, coupe proprement, et l'etiquette descend sous lui.
   Meme remede que la liste des gestionnaires de page, juste au-dessus. */
.rucom-spm-bd b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-spm-bd small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:560px){
  .rucom-spm-row{flex-wrap:wrap}
  .rucom-spm-p{flex:1 1 100%}
  .rucom-spm-a{width:100%;display:flex;justify-content:flex-end}
  .rucom-spm-role{max-width:100%}
}

/* PARTAGER AVEC LA SCENE. La case vit dans la boite de composition, sous
   l'apercu : c'est la derniere chose qu'on lit avant de publier, donc le bon
   endroit pour dire ce qui va la et ce qui n'y va pas. Le contre-exemple est
   en gris : il se lit, il n'accuse pas. */
.rucom-cshare{display:flex;align-items:flex-start;gap:10px;margin:12px 0 2px;
  padding:12px 13px;border:1px solid var(--line,rgba(17,17,20,.10));
  border-radius:12px;background:var(--soft,#f4f4f6);cursor:pointer}
.rucom-cshare-x{flex:0 0 auto;width:17px;height:17px;margin:2px 0 0;cursor:pointer;accent-color:#111}
.rucom-cshare-bd{flex:1 1 0;min-width:0}
.rucom-cshare-bd b{display:block;font-size:13.5px;font-weight:800;color:var(--ru-texte,#0e2438)}
.rucom-cshare-bd small{display:block;margin-top:4px;font-size:12px;line-height:1.5;
  color:#3a3a40}
.rucom-cshare-bd small.rucom-cshare-no{color:var(--muted,#6b6b73)}
.rucom-cshare-bd small.rucom-cshare-pub{margin-top:6px;font-weight:700;color:var(--ru-accent,#1d5c8f)}
.rucom-sp-vitrine{color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,rgba(44,111,181,.12));
  border-radius:999px;padding:2px 9px;font-size:11.5px;font-weight:800;
  text-transform:uppercase;letter-spacing:.03em}

/* ANNONCES EN DIRECT, coin bas gauche.
   En bas a gauche et pas a droite : la colonne de droite du Reseau porte deja
   les suggestions et la presence, et le quai de messagerie s'ouvre de ce
   cote-la. Une annonce qui recouvre le bouton sur lequel elle demande de
   cliquer ne sert a rien.
   z-index sous les modales : une annonce n'interrompt jamais une saisie. */
.rucom-live{position:fixed;left:16px;bottom:16px;z-index:9400;
  display:flex;flex-direction:column;gap:8px;pointer-events:none;max-width:340px}
.rucom-live-card{pointer-events:auto;display:flex;align-items:flex-start;gap:10px;
  background:var(--ink,#0e2438);color:#fff;border-radius:14px;padding:11px 12px;
  box-shadow:0 10px 30px rgba(0,0,0,.28);cursor:pointer;
  opacity:0;transform:translateY(10px);transition:opacity .22s ease,transform .22s ease}
.rucom-live-card.rucom-show{opacity:1;transform:translateY(0)}
.rucom-live-card:hover{background:var(--ru-texte-2,#14314b)}
.rucom-live-av{flex:0 0 auto;width:36px;height:36px;border-radius:50%;object-fit:cover;
  background:rgba(255,255,255,.14);display:flex;align-items:center;justify-content:center}
.rucom-live-ic svg{width:17px;height:17px;color:var(--or,var(--ru-accent,#1d5c8f))}
/* flex-basis a ZERO : sinon un nom long pousse la carte au lieu de se couper. */
.rucom-live-bd{flex:1 1 0;min-width:0;padding-top:1px}
.rucom-live-bd b{display:block;font-size:13px;font-weight:800;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-live-bd small{display:block;margin-top:2px;font-size:12px;line-height:1.45;
  color:rgba(255,255,255,.78);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rucom-live-x{flex:0 0 auto;background:none;border:none;color:rgba(255,255,255,.55);
  font-size:19px;line-height:1;cursor:pointer;padding:0 2px}
.rucom-live-x:hover{color:#fff}
/* Sur telephone, le quai de messagerie occupe le bas : l'annonce monte
   au-dessus de lui plutot que de se poser dessus. */
@media (max-width:700px){
  .rucom-live{left:10px;right:10px;bottom:74px;max-width:none}
}
/* Une ligne de reglage avec son interrupteur a droite. Meme rembourrage que
   les autres rangees de la page, pour que la carte reste d'une seule piece. */
.rucom-set-line{display:flex;align-items:center;gap:14px;padding:14px 16px;cursor:pointer}
.rucom-set-line>span{flex:1 1 0;min-width:0}
.rucom-set-line b{display:block;font-size:14px;font-weight:700}
.rucom-set-line small{display:block;margin-top:3px;font-size:12.5px;line-height:1.5;
  color:var(--muted,#6b6b73)}
.rucom-set-line input[type=checkbox]{flex:0 0 auto;width:18px;height:18px;cursor:pointer;accent-color:#111}

/* MODALE « CREER UN GROUPE » : corps defilant, pied a sa place.
   Le pied etait « collant » a l'interieur d'une carte a rembourrage : il se
   posait par-dessus le contenu et on lisait la fin du formulaire SOUS le
   bouton. Un pied occupe sa propre place ; il ne flotte pas sur le texte.
   Le rembourrage descend sur les deux parties, pour que le bord du bouton
   reste aligne avec les champs. */
.rucom-spc-modal{display:flex;flex-direction:column;padding:0;overflow:hidden}
.rucom-spc-scroll{flex:1 1 auto;min-height:0;overflow:auto;padding:24px 24px 4px}
.rucom-spc-foot{flex:0 0 auto;display:flex;justify-content:flex-end;
  padding:14px 24px 18px;border-top:1px solid var(--line,rgba(17,17,20,.10));background:#fff}
.rucom-spc-modal>.rucom-modal-close{position:absolute;top:12px;right:14px;float:none}

/* ============================ AIR SOUS LES TITRES ==========================
   Les titres de page etaient poses SUR leur contenu : deux pixels sous
   « Explorer », quatre sous « Groupes ». A l'oeil, le titre et la premiere
   rangee formaient un seul bloc, et on ne savait plus ou finissait l'un et ou
   commencait l'autre.
   Un titre a besoin d'air en dessous pour se lire comme un titre. La meme
   mesure partout, pour que les pages du Reseau se ressemblent : 22 pixels sous
   le bloc de titre, et le sous-titre garde son espacement serre sous le titre
   puisqu'il en fait partie.
   Ces regles sont a la FIN de la feuille : a poids de selecteur egal, c'est
   l'ordre qui tranche, et plusieurs de ces classes sont deja definies plus haut
   avec des valeurs differentes selon la largeur d'ecran. */
.rucom-x-head{padding:20px 16px 28px}
.rucom-sp-head{margin:16px 0 28px}
.rucom-sp-head+.rucom-sp-sub{margin-top:-20px}
.rucom-sp-sub{margin:2px 0 28px}
.rucom-ev-head{padding:20px 2px 28px}
.rucom-page-h{padding:16px 2px 28px}
.rucom-lb-head{padding:16px 4px 28px}
.rucom-page-h p{margin-top:6px}
/* Sur telephone, un peu moins : l'ecran est court et chaque pixel compte,
   mais le titre garde de l'air. */
@media (max-width:700px){
  .rucom-x-head{padding:16px 16px 20px}
  .rucom-sp-head{margin:12px 0 20px}
  .rucom-sp-head+.rucom-sp-sub{margin-top:-14px}
  .rucom-sp-sub{margin:2px 0 20px}
  .rucom-ev-head{padding:16px 2px 20px}
  .rucom-page-h{padding:12px 2px 20px}
  .rucom-lb-head{padding:12px 4px 20px}
}

/* ================== REGLAGES : UNE SEULE MARGE POUR TOUTE LA CARTE ========
   Les blocs de messagerie et de confidentialite avaient 6 pixels de marge
   (2 sur le conteneur + 4 sur la rangee) quand le titre de la meme carte en
   avait 16. Le texte touchait donc le bord, juste sous un titre qui, lui,
   respirait - et l'oeil voit tout de suite le decalage sans savoir le nommer.
   Une seule mesure pour toute la carte : 16 pixels. Le trait de separation
   entre deux rangees garde sa pleine largeur, comme dans le reste du Reseau. */
.rucom-msgset,
.rucom-privset{padding:2px 0}
.rucom-msgset-row{padding:12px 16px}
.rucom-away-wrap{padding:2px 16px 12px}
.rucom-blocked-list{padding:2px 0}
.rucom-set-card .rucom-algo-body{padding:4px 16px 16px}
.rucom-set-sub{padding:0 16px 12px}
@media (max-width:700px){
  .rucom-msgset-row{padding:12px 14px}
  .rucom-away-wrap{padding:2px 14px 12px}
  .rucom-blocked-row{padding:10px 14px}
  .rucom-set-card .rucom-algo-body{padding:4px 14px 14px}
  .rucom-set-sub{padding:0 14px 12px}
  .rucom-set-line{padding:14px}
  .rucom-set-row{padding:14px}
  .rucom-set-h{padding:14px}
  /* Confidentialite : memes marges laterales que les rangees de messagerie. */
  .rucom-privsec-h{padding:0 14px}
  .rucom-privsec-sub{margin-left:14px;margin-right:14px}
  .rucom-privsec-row{padding:11px 14px}
  .rucom-provis .rucom-msgset-row{padding:10px 14px}
}
/* Explication sous un reglage : elle appartient au libelle, pas a la rangee,
   sinon elle pousserait l'interrupteur vers le bas. */
.rucom-msgset-row>span{flex:1 1 0;min-width:0}
.rucom-msgset-row>span small{display:block;margin-top:3px;font-size:12.5px;
  line-height:1.5;color:var(--muted,#6b6b73)}

/* ============ PIED DE MODALE : PLUS DE BANDE QUI FLOTTE ==================
   Le pied etait « collant » a l'interieur d'une carte qui garde un rembourrage
   en bas. Un element collant se pose a bottom:0 de la BOITE DE CONTENU : il
   restait donc un vide sous lui, et le contenu continuait de defiler dans ce
   vide, visible sous la bande. C'est le meme defaut que la carte de
   confirmation et que la modale de groupe, au meme endroit du raisonnement.
   Le rembourrage bas passe DANS le pied, et le pied s'etend d'un bord a
   l'autre par des marges negatives : plus de vide dessous, plus rien qui se
   voie derriere. */
.rucom-ev-modal{padding-bottom:0}
.rucom-ev-modal>.rucom-ev-nav,
.rucom-ev-modal>.rucom-ed-actions{
  position:sticky;bottom:0;z-index:2;background:#fff;
  margin:14px -26px 0;padding:14px 26px 20px;
  border-top:1px solid var(--line,rgba(17,17,20,.10));
  box-shadow:0 -8px 16px -12px rgba(0,0,0,.35)}
@media (max-width:640px){
  .rucom-ev-modal>.rucom-ev-nav,
  .rucom-ev-modal>.rucom-ed-actions{margin:12px -16px 0;padding:12px 16px 16px}
}

/* ARTISTE HORS RESEAU dans la programmation. La pastille est grise et porte sa
   mention : on doit voir d'un coup d'oeil qui a un compte et qui n'en a pas.
   Un nom libre ne doit jamais avoir l'air d'un profil sur lequel on peut
   cliquer, sinon on promet une page qui n'existe pas. */
.rucom-pick-libre-av{width:22px;height:22px;border-radius:50%;display:inline-flex;
  align-items:center;justify-content:center;background:var(--soft,#f4f4f6);flex:0 0 auto}
.rucom-pick-libre-av svg{width:12px;height:12px;color:var(--muted,#6b6b73)}
.rucom-pick-libre .rucom-pick-libre-av{width:30px;height:30px}
.rucom-pick-libre .rucom-pick-libre-av svg{width:15px;height:15px}
.rucom-coorg-chip.rucom-chip-libre{background:var(--soft,#f4f4f6);border-style:dashed}
.rucom-coorg-chip.rucom-chip-libre i{font-style:normal;font-size:10.5px;font-weight:800;
  text-transform:uppercase;letter-spacing:.04em;color:var(--muted,#6b6b73);margin-left:2px}
/* Sur l'affiche : le nom libre a la meme place qu'un artiste membre, mais pas
   de curseur de lien - il ne mene nulle part, et le dire par le pointeur evite
   de le decouvrir par un clic sans effet. */
.rucom-evp-artist-libre{cursor:default}
.rucom-evp-artist-av{width:56px;height:56px;border-radius:50%;display:flex;
  align-items:center;justify-content:center;background:var(--soft,#f4f4f6)}
.rucom-evp-artist-av svg{width:24px;height:24px;color:var(--muted,#6b6b73)}

/* Les DEUX derniers en-tetes de page qui manquaient a l'appel : celui des
   notifications et celui d'un mot-cle. Meme mesure que les autres pages du
   Reseau, sinon « pareil partout » ne veut rien dire. */
.rucom-n-head2{padding:20px 16px 28px}
.rucom-n-head{padding:20px 16px 22px;border-bottom:1px solid var(--line,rgba(17,17,20,.10))}
@media (max-width:700px){
  .rucom-n-head2{padding:16px 14px 20px}
  .rucom-n-head{padding:16px 14px 16px}
}

/* ------------------------------------------------------------------
   LIENS A DECOUVRIR : image personnalisee a la place de l'icone.
   L'image occupe exactement la place du trait dore (24 x 24) pour que
   la colonne des libelles reste alignee, qu'il y ait une icone ou un
   logo. object-fit: contain : un logo large ne se fait pas recadrer.
   ------------------------------------------------------------------ */
.rucom-nav .rucom-promo-img{width:24px;height:24px;flex:0 0 auto;object-fit:contain;border-radius:5px;display:block}
.rucom-promos .rucom-nav .rucom-promo-img{width:24px;height:24px}

/* ------------------------------------------------------------------
   ATTENTE D'UNE LISTE. Les mesures viennent de la vraie rangee
   (.rucom-req-row) : meme hauteur d'avatar, meme espacement, meme
   bouton a droite. Une forme d'attente qui n'a pas la taille du
   contenu ne sert a rien : l'ecran saute quand le vrai arrive, et le
   saut se remarque plus que l'attente.
   ------------------------------------------------------------------ */
.rucom-sk-row{display:flex;align-items:center;gap:12px;padding:12px 4px}
.rucom-sk-av2{width:52px;height:52px;border-radius:50%;flex:0 0 auto}
.rucom-sk-btn{width:86px;height:32px;border-radius:9px;flex:0 0 auto}

/* ------------------------------------------------------------------
   BOITE D'ERREUR NOMMEE. Elle prend la meme boite blanche que les
   etats vides du Reseau : une erreur n'est pas une page cassee, c'est
   un etat comme un autre, et elle doit se lire comme le reste.
   ------------------------------------------------------------------ */
.rucom-errbox{background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));border-radius:16px;
  padding:38px 24px;text-align:center;max-width:520px;margin:24px auto}
.rucom-errbox svg{width:34px;height:34px;color:var(--muted,#6b6b73);margin-bottom:10px}
.rucom-errbox-t{font-size:17px;font-weight:800;margin-bottom:6px}
.rucom-errbox-s{font-size:13.5px;color:var(--muted,#6b6b73);margin:0 auto 10px;max-width:400px;line-height:1.5}
.rucom-errbox-d{font-size:12.5px;color:#a33;background:var(--soft,#f4f4f6);border-radius:9px;
  padding:8px 12px;margin:0 auto 8px;max-width:420px;word-break:break-word}
.rucom-errbox-c{font-size:11.5px;color:#9a9aa2;margin:0 0 14px;letter-spacing:.03em}

/* ==============================================================
   RU CARRIERES - la vitrine dans le Reseau (onglet Carrieres).
   3 portes (sections), cartes d'offres, etats vides honnetes.
   ============================================================== */
.rucom-car .rucom-page-h h2{font-size:24px;margin:0;letter-spacing:-.02em}
.rucom-car .rucom-page-h p{color:var(--muted);font-size:13.5px;margin:5px 0 18px}
.rucom-car-doors{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 16px}
.rucom-car-door{border:1px solid var(--line);border-radius:16px;padding:14px 15px;background:#fff;cursor:pointer;text-align:left;font-family:inherit;width:100%;transition:border-color .15s,background .15s}
.rucom-car-door:hover{background:var(--soft)}
.rucom-car-door.rucom-on{border-color:var(--or-d);background:var(--ru-accent-doux,rgba(44,111,181,.12));box-shadow:inset 0 0 0 1px var(--or)}
.rucom-car-dh{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.rucom-car-di{width:32px;height:32px;border-radius:9px;background:var(--soft);display:grid;place-items:center;flex:0 0 auto}
.rucom-car-door.rucom-on .rucom-car-di{background:var(--or)}
.rucom-car-di svg{width:17px;height:17px}
.rucom-car-door b{font-size:14.5px}
.rucom-car-door small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.rucom-car-cnt{display:block;font-size:11.5px;font-weight:800;color:var(--or-d);margin-top:7px}
.rucom-car-cnt.zero{color:var(--muted);font-weight:700}
.rucom-car-foryou{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;color:var(--muted);background:var(--soft);border-radius:12px;padding:10px 13px;margin-bottom:14px}
.rucom-car-foryou svg{width:14px;height:14px;color:var(--or-d);margin-top:2px;flex:0 0 auto}
.rucom-car-foryou b{color:var(--ru-texte,#0e2438)}
.rucom-car-sech{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#9a9aa2;font-weight:800;margin:2px 0 10px}
.rucom-car-off{border:1px solid var(--line);border-radius:16px;background:#fff;padding:16px 18px;margin-bottom:12px}
.rucom-car-oftop{display:flex;gap:12px;align-items:flex-start}
.rucom-car-ava{width:44px;height:44px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;color:#fff;font-weight:800;font-size:14px}
.rucom-car-ofmain{flex:1;min-width:0}
.rucom-car-tag{display:inline-block;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:#fff;padding:3px 9px;border-radius:999px;margin-bottom:6px}
.rucom-car-tt{font-size:16px;font-weight:800;margin:0 0 2px}
.rucom-car-meta{font-size:12.5px;color:var(--muted)}
.rucom-car-meta b{color:var(--ru-texte,#0e2438)}
.rucom-car-chips{display:flex;gap:7px;flex-wrap:wrap;margin:9px 0 0}
.rucom-car-chip{font-size:11px;font-weight:700;background:var(--soft);border-radius:999px;padding:4px 10px}
.rucom-car-desc{font-size:13.5px;color:#33333a;margin:10px 0 0}
.rucom-car-facts{display:flex;gap:14px;flex-wrap:wrap;margin:11px 0 0}
.rucom-car-fact{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);font-weight:600}
.rucom-car-fact svg{width:13px;height:13px;color:var(--or-d);flex:0 0 auto}
.rucom-car-lock{margin:11px 0 0;font-size:11.5px;color:#9a9aa2;display:flex;gap:6px;align-items:center}
.rucom-car-lock svg{width:13px;height:13px;flex:0 0 auto}
.rucom-car-acts{display:flex;gap:8px;margin:13px 0 0}
.rucom-car-vide{background:#fff;border:1px solid var(--line);border-radius:16px;padding:44px 26px;text-align:center;margin-bottom:16px}
.rucom-car-vide-ic{display:grid;place-items:center;width:56px;height:56px;margin:0 auto 14px;border-radius:50%;background:var(--soft);color:var(--muted)}
.rucom-car-vide-ic svg{width:25px;height:25px}
.rucom-car-vide-t{font-size:16px;font-weight:800}
.rucom-car-vide-s{margin:6px auto 0;font-size:13.5px;color:var(--muted);line-height:1.5;max-width:46ch}
.rucom-car-vide-acts{margin-top:16px;display:flex;gap:8px;justify-content:center}
@media(max-width:820px){.rucom-car-doors{grid-template-columns:1fr}}

/* ---- Sanctions : bandeau membre, badges console, panneau ------------- */
.rucom-sanction-banner{display:flex;gap:12px;align-items:flex-start;margin:10px 14px 0;padding:12px 14px;background:var(--ru-accent-doux,rgba(44,111,181,.12));border:1px solid var(--ru-accent,#1d5c8f);border-radius:14px;color:var(--ru-accent,#1d5c8f)}
.rucom-sanction-banner svg{width:20px;height:20px;flex:0 0 auto;margin-top:1px}
.rucom-sanction-banner b{display:block;font-size:14px}
.rucom-sanction-banner small{display:block;font-size:12.5px;color:var(--ru-accent,#1d5c8f);margin-top:2px}
.rucom-sb-reason{display:block;font-size:12.5px;color:var(--ru-accent,#1d5c8f);margin-top:2px}
.rucom-sanction-banner.rucom-sb-ban{background:#fdecec;border-color:#f2b8b8;color:#7d0a0a}

/* ---- Bandeau de consentement courriel (RU CRM) ---------------------- */
.rucom-consent{margin:12px 14px 0;padding:15px 16px;background:#fff;border:1px solid var(--line);border-left:4px solid var(--or);border-radius:16px}
.rucom-consent-top{display:flex;gap:12px;align-items:flex-start}
.rucom-consent-ic{width:40px;height:40px;flex:0 0 auto;border-radius:12px;background:var(--ru-accent-doux,rgba(44,111,181,.12));color:var(--ru-accent,#1d5c8f);display:grid;place-items:center}
.rucom-consent-ic svg{width:21px;height:21px}
.rucom-consent-ic.rucom-consent-ok{background:#eafaf0;color:#188a49}
.rucom-consent-bd{flex:1;min-width:0}
.rucom-consent-bd h3{margin:1px 0 4px;font-size:15px}
.rucom-consent-bd p{margin:0;font-size:13.5px;color:#4a4a52;line-height:1.5}
.rucom-consent-x{margin-left:auto;background:none;border:0;color:#b6b6bd;font-size:20px;line-height:1;cursor:pointer;padding:0 2px}
.rucom-consent-acts{display:flex;gap:10px;margin-top:13px;flex-wrap:wrap}
.rucom-consent-fine{margin-top:10px;font-size:11.5px;color:#9a9aa2;line-height:1.45}
.rucom-consent-done{border-left-color:#2fae5f;background:#f4fcf7}

/* ---- Portee du profil a l'ecran (provenance + uniques + serie 30j) --- */
.rucom-reach{margin:16px 0 4px;padding:16px;border:1px solid var(--line);border-radius:14px;background:#fff}
.rucom-reach-title{font-size:14px;font-weight:800;margin-bottom:12px}
.rucom-reach-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:14px 0 8px}
.rucom-reach-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media(max-width:520px){.rucom-reach-tiles{grid-template-columns:1fr}}
.rucom-pvrow{display:flex;align-items:center;gap:10px;margin:6px 0;font-size:13px}
.rucom-pvl{flex:0 0 130px;color:#3a3a44}
.rucom-pvbar{flex:1;height:9px;background:var(--soft);border-radius:999px;overflow:hidden}
.rucom-pvfill{display:block;height:100%;background:var(--or);border-radius:999px}
.rucom-pvn{flex:0 0 auto;color:var(--muted);font-size:12px;min-width:78px;text-align:right}
.rucom-rbars{display:flex;align-items:flex-end;gap:2px;height:70px;padding:4px 0}
.rucom-rbar{flex:1;min-width:2px;background:var(--or-d);border-radius:2px 2px 0 0;opacity:.85}

/* ---- Bloc annonce dans la boite de publication ---------------------- */
.rucom-cmp-announce{margin:10px 0 0;padding:11px 12px;background:var(--soft);border:1px solid var(--line);border-radius:12px}
.rucom-cmp-annh{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--ru-accent,#1d5c8f);margin-bottom:6px}
.rucom-cmp-annh svg{width:16px;height:16px}
.rucom-ann-opt{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:13.5px;color:var(--ru-texte,#0e2438);cursor:pointer}
.rucom-ann-opt input{width:16px;height:16px}
.rucom-sanction-banner.rucom-sb-ban small,.rucom-sanction-banner.rucom-sb-ban .rucom-sb-reason{color:#9a1414}
.rucom-sb-tag{display:inline-block;font-size:10.5px;font-weight:800;background:#fdecec;color:#b00000;border-radius:99px;padding:1px 8px;margin-left:6px;vertical-align:middle}
.rucom-sb-tag.rucom-sb-tagban{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF)}

.rucom-sanction-modal{max-width:560px;width:calc(100% - 28px);max-height:88vh;overflow-y:auto;padding:22px}
/* La croix reste visible meme quand on fait defiler le contenu de la modale. */
.rucom-sanction-modal>.rucom-modal-close{position:sticky;top:0;float:right;margin:-6px -6px -34px 8px;z-index:6}
.rucom-sanction-modal>h3{margin:0 0 4px;padding-right:44px;font-size:18px}
.rucom-sc-member{margin:0 0 8px}
.rucom-sc-member b{font-size:15px}.rucom-sc-member small{color:var(--muted);margin-left:6px}
.rucom-sc-reco{background:var(--ru-accent-doux,rgba(44,111,181,.12));border:1px solid var(--ru-accent,#1d5c8f);border-radius:10px;padding:9px 12px;font-size:12.5px;color:var(--ru-accent,#1d5c8f);margin:6px 0 4px}
.rucom-sc-sec{border-top:1px solid var(--line);padding:14px 0 4px;margin-top:8px}
.rucom-sc-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#8a8a92;font-weight:800;margin-bottom:8px}
.rucom-sc-pals{display:flex;flex-direction:column;gap:7px}
.rucom-sc-pal{text-align:left;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff;cursor:pointer;transition:.12s}
.rucom-sc-pal:hover{background:var(--soft)}
.rucom-sc-pal.rucom-on{border-color:var(--ru-texte,#0e2438);background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-sc-pal b{display:block;font-size:14px}
.rucom-sc-pal small{display:block;color:var(--muted);font-size:12px;margin-top:2px;line-height:1.35}
.rucom-sc-freeze{display:flex;gap:10px;align-items:flex-start;background:var(--ru-accent-doux,rgba(44,111,181,.12));border:1px solid var(--ru-accent-filet,rgba(44,111,181,.45));color:var(--ru-texte,#0e2438);border-radius:12px;padding:11px 13px;margin-bottom:10px;cursor:pointer}
.rucom-sc-freeze input{width:18px;height:18px;margin-top:2px}
.rucom-sc-freeze b{color:var(--ru-texte,#0e2438);font-size:14px}
.rucom-sc-freeze small{display:block;color:var(--ru-accent,#1d5c8f);font-size:11.5px;margin-top:3px;line-height:1.35}
.rucom-sc-grp{margin-bottom:6px}
.rucom-sc-grp h4{margin:8px 0 4px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:#8a8a92}
.rucom-sc-chk{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:14px;cursor:pointer}
.rucom-sc-chk input{width:16px;height:16px}
.rucom-sc-chk.rucom-sc-danger span{color:#b00000;font-weight:700}
.rucom-sc-row{display:flex;gap:10px;flex-wrap:wrap}
.rucom-sc-dur{border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:14px;font-family:inherit;min-width:160px}
.rucom-sc-reason,.rucom-sc-reasonp{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:14px;font-family:inherit;margin-top:8px;resize:vertical}
.rucom-sc-preview{background:var(--ru-surface,#F6F6F4);border:1px solid var(--line);color:var(--ru-texte,#0e2438);border-radius:12px;padding:11px 13px;font-size:12.5px;line-height:1.5;margin-top:12px}
.rucom-sc-preview b{color:var(--or)}
.rucom-sc-hist{margin-top:14px}
.rucom-sc-h{border-left:3px solid var(--line);padding:2px 0 2px 10px;margin-bottom:9px}
.rucom-sc-h.rucom-sc-hon{border-left-color:var(--or)}
.rucom-sc-h b{display:block;font-size:13px}
.rucom-sc-h small{color:var(--muted);font-size:12px}
.rucom-sc-hempty{color:var(--muted);font-size:13px}
.rucom-sc-acts{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}

/* ---- Publicite : carte commanditee (rail de droite) ----------------- */
.rucom-ads-card{padding:0;overflow:hidden}
.rucom-ads-h{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:800;padding:10px 14px 4px}
.rucom-ad{display:block;position:relative;text-decoration:none;color:var(--ru-texte,#0e2438);border-top:1px solid var(--line)}
.rucom-ad:first-of-type{border-top:0}
.rucom-ad:hover{background:var(--soft)}
/* Etiquette « Commandite » : petite pastille EN LIGNE, jamais posee sur la
   photo (elle ne cache plus ni l'image ni le texte de la pub). */
.rucom-ad-tag{display:inline-block;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:var(--rrg-etiquette-fond,var(--ru-accent,#1d5c8f));color:var(--rrg-etiquette-texte,#FFFFFF);border-radius:999px;padding:2px 7px}
/* Carte (rail de droite, encarts, grille, profil, fiche) : cadre CARRE 1:1.
   Une photo carree (800x800 conseille) s'affiche en entier, sans etre coupee. */
.rucom-ad-img{display:block;width:100%;aspect-ratio:1/1;height:auto;object-fit:cover}
.rucom-ad-bd{padding:10px 14px 12px}
.rucom-ad-bd b{display:block;font-size:14px;line-height:1.3}
.rucom-ad-bd small{display:block;color:var(--muted);font-size:12.5px;margin-top:3px;line-height:1.4}

/* ---- Espacement des cases de pub : de l'air autour de chaque encart --- */
.rucom-adzone{margin:16px 0}
.rucom-adzone:empty{margin:0}
.rucom-adzone[data-fmt="story"]{margin:0}
.rucom-adzone[data-fmt="link"]{margin:8px 0}
/* ---- Rotation : plusieurs commandites qui alternent sur une meme case -- */
.rucom-ad-rot{position:relative}
.rucom-ad-slide{animation:rucomAdFade .5s ease}
@keyframes rucomAdFade{from{opacity:.35}to{opacity:1}}

/* ---- Parametres facon navbar (menu a gauche, contenu a droite) ------- */
.rucom-sset{display:grid;grid-template-columns:262px 1fr;gap:18px;align-items:start}
@media(max-width:760px){.rucom-sset{grid-template-columns:1fr;gap:12px}}
.rucom-sset-side{background:#fff;border:1px solid var(--line);border-radius:16px;padding:10px;position:sticky;top:12px}
@media(max-width:760px){.rucom-sset-side{position:static}}
.rucom-sset-navlist{display:flex;flex-direction:column;gap:2px}
.rucom-sset-nav{display:flex;align-items:center;gap:11px;width:100%;text-align:left;border:0;background:none;padding:10px 11px;border-radius:11px;cursor:pointer;font-size:14px;color:var(--ru-texte,#0e2438);font-weight:600}
.rucom-sset-nav:hover{background:var(--soft)}
.rucom-sset-nav.rucom-on{background:var(--ru-accent-doux,rgba(44,111,181,.12))}
.rucom-sset-ic{width:30px;height:30px;flex:0 0 auto;border-radius:9px;background:var(--soft);display:flex;align-items:center;justify-content:center}
.rucom-sset-ic svg{width:16px;height:16px}
.rucom-sset-nav.rucom-on .rucom-sset-ic{background:var(--or)}
.rucom-sset-lbl{flex:1 1 auto;min-width:0}
.rucom-sset-panel{min-width:0}
.rucom-sset-head{margin:0 2px 14px}
.rucom-sset-head h3{font-size:20px;margin:0 0 2px}
.rucom-sset-head p{color:var(--muted);font-size:13.5px;margin:0;line-height:1.5}
@media(max-width:760px){
  .rucom-sset-navlist{flex-direction:row;flex-wrap:wrap;gap:6px}
  .rucom-sset-nav{width:auto;padding:8px 12px}
  .rucom-sset-nav .rucom-sset-ic{display:none}
}

/* ---- Formats de pub multiples (zones auto-hydratees) ---------------- */
.rucom-adzone:empty{display:none}
/* Banniere (fil, evenements, groupes, classement, carrieres, explorer, Bottin) */
.rucom-adbn-wrap{margin:0 0 14px}
.rucom-adbn{position:relative;display:block;border:1px solid var(--line);border-radius:16px;overflow:hidden;text-decoration:none;color:var(--ru-texte,#0e2438);background:#fff}
.rucom-adbn:hover{background:var(--soft)}
/* Banniere : cadre 4:1 (1200x300 conseille). Etiquette au-dessus de l'image. */
/* Q57 (revue d'intégration) : pastille « Commandité » aux couleurs réglées dans RU Régie (or sur noir par défaut). */
.rucom-adbn-lbl{display:inline-block;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--rrg-etiquette-texte,#FFFFFF);background:var(--rrg-etiquette-fond,var(--ru-accent,#1d5c8f));border-radius:999px;padding:4px 8px;margin:9px 14px 4px}
.rucom-adbn-img{display:block;width:100%;aspect-ratio:4/1;height:auto;object-fit:cover}
.rucom-adbn-bd{padding:12px 16px}
.rucom-adbn-bd b{display:block;font-size:15px;line-height:1.3}
.rucom-adbn-bd small{display:block;color:var(--muted);font-size:13px;margin-top:3px}
/* Publication commanditee (native) dans un fil */
.rucom-adnat{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#fff;margin-bottom:14px}
.rucom-adnat-in{display:block;text-decoration:none;color:var(--ru-texte,#0e2438)}
.rucom-adnat-in:hover{background:var(--soft)}
.rucom-adnat-h{display:flex;align-items:center;gap:8px;padding:12px 14px 6px}
.rucom-adnat-h b{font-size:14.5px}
.rucom-adnat-tx{margin:0;padding:0 14px 10px;font-size:14px;color:#333;line-height:1.45}
/* Native : cadre 1200x628 (l'etiquette est dans l'entete, au-dessus de l'image). */
.rucom-adnat-img{display:block;width:100%;aspect-ratio:1200/628;height:auto;object-fit:cover}
.rucom-adnat-cta{padding:11px 14px;font-weight:800;color:var(--or-d);font-size:13.5px;border-top:1px solid var(--line)}
/* Lien commandite (rail de gauche) */
.rucom-adlink{display:flex;align-items:center;gap:10px;text-decoration:none}
.rucom-adlink-ico{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center}
.rucom-adlink-ic{width:22px;height:22px;border-radius:6px;object-fit:cover}
.rucom-adlink-tag{margin-left:auto;font-style:normal;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#a2a2ab}
/* Story commanditee */
.rucom-stories .rucom-adzone{display:contents}
.rucom-adstory-ring{background-size:cover;background-position:center;position:relative}
.rucom-adstory-ring::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:inset 0 0 0 3px var(--or)}
.rucom-adstory{position:relative}
.rucom-adstory-tag{position:absolute;top:-2px;right:6px;background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#FFFFFF);font-size:8px;font-weight:800;border-radius:99px;padding:1px 5px}

/* ---- Console moderation : journal ----------------------------------- */
.rucom-mod-journal{display:flex;flex-direction:column;gap:2px}
.rucom-mod-jrow{display:grid;grid-template-columns:1.6fr 1fr 1fr auto;gap:10px;align-items:center;padding:9px 10px;border-bottom:1px solid var(--line);font-size:13px}
.rucom-mod-jrow:hover{background:var(--soft)}
.rucom-mod-jact{font-weight:700}
.rucom-mod-jtar{color:var(--muted);font-size:12.5px}
.rucom-mod-jby{color:#3a3a44;font-size:12.5px}
.rucom-mod-jwhen{color:var(--muted);font-size:12px;white-space:nowrap}
@media(max-width:640px){.rucom-mod-jrow{grid-template-columns:1fr 1fr;row-gap:2px}.rucom-mod-jwhen{grid-column:1 / -1}}

.rucom-ad-nolink{cursor:default}
.rucom-ad-nolink:hover{background:inherit}

/* === Colonne de droite de l'onglet Explorer (blocs sur mesure) === */
.rucom-xr-list{display:flex;flex-direction:column;gap:2px}
.rucom-xr-row{display:flex;gap:10px;align-items:center;padding:8px 6px;border-radius:12px;text-decoration:none;color:inherit;cursor:pointer;transition:background .15s ease}
.rucom-xr-row:hover{background:rgba(0,0,0,.045)}
.rucom-xr-thumb{width:44px;height:44px;border-radius:12px;overflow:hidden;flex-shrink:0;background:#eef1f5;display:flex;align-items:center;justify-content:center;font-size:19px}
.rucom-xr-thumb img{width:100%;height:100%;object-fit:cover}
.rucom-xr-bd{min-width:0;line-height:1.3}
.rucom-xr-bd b{display:block;font-size:13.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-xr-bd small{display:block;color:#71767b;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-xr-empty{padding:12px 6px;color:#71767b;font-size:13px}

/* ══════════════════════════════════════════════════════════════════
   ETATS DE CHARGEMENT (2026-08-28)
   ------------------------------------------------------------------
   Avant : « Chargement... » en texte nu, sans forme ni couleur, sur
   une page vide. Le membre ne savait pas si ca travaillait ou si
   c'etait casse.
   Maintenant : un anneau or qui tourne (chargeur generique), et des
   SQUELETTES qui dessinent d'avance la forme du contenu attendu.
   Un squelette occupe deja la place : rien ne saute a l'arrivee des
   vraies donnees, et l'attente parait plus courte qu'elle ne l'est.
   ══════════════════════════════════════════════════════════════════ */

@keyframes ruShimmer{0%{background-position:-420px 0}100%{background-position:420px 0}}
@keyframes ruSpin{to{transform:rotate(360deg)}}
@keyframes ruBreath{0%,100%{opacity:.5}50%{opacity:1}}

/* ── Chargeur generique ──────────────────────────────────────────
   Cette seule regle rehabille TOUS les « Chargement... » deja en
   place dans le reseau : aucun autre fichier n'a eu besoin d'etre
   touche. L'anneau est ajoute en ::before, le texte reste le texte. */
.rucom-loading{
  display:flex !important;flex-direction:column;align-items:center;justify-content:center;
  gap:13px;padding:44px 20px;text-align:center;
  color:var(--muted,#6b6b73);font-size:13.5px;letter-spacing:.01em;
  animation:ruBreath 1.7s ease-in-out infinite;
}
.rucom-loading::before{
  content:"";width:32px;height:32px;border-radius:50%;flex:0 0 auto;
  border:3px solid var(--line,rgba(17,17,20,.10));
  border-top-color:var(--or,var(--ru-accent,#1d5c8f));
  animation:ruSpin .75s linear infinite;
}
/* Dans une colonne laterale etroite, on garde la meme idee en plus petit. */
.rucom-xr-list .rucom-loading,.rucom-suggest .rucom-loading,
.rucom-reflist .rucom-loading,.rucom-pres-list .rucom-loading,
.rucom-dock-list .rucom-loading,.rucom-dock-body .rucom-loading{padding:22px 12px;gap:10px}
.rucom-xr-list .rucom-loading::before,.rucom-suggest .rucom-loading::before,
.rucom-reflist .rucom-loading::before,.rucom-pres-list .rucom-loading::before,
.rucom-dock-list .rucom-loading::before,.rucom-dock-body .rucom-loading::before{
  width:22px;height:22px;border-width:2.5px;
}

/* ── Brique de base des squelettes ─────────────────────────────── */
.ru-sk{
  background:linear-gradient(90deg,#e8e8ea 25%,#f5f5f7 37%,#e8e8ea 63%);
  background-size:800px 100%;animation:ruShimmer 1.15s infinite linear;
  border-radius:10px;display:block;
}
.ru-sk-line{height:11px;margin:7px 0}
.ru-sk-av{width:44px;height:44px;border-radius:50%;flex:0 0 auto}

/* ── Publication du fil ────────────────────────────────────────── */
.ru-sk-post{border:1px solid var(--line,rgba(17,17,20,.08));border-radius:12px;padding:14px;margin-bottom:12px}
.ru-sk-post-h{display:flex;align-items:center;gap:11px;margin-bottom:13px}
.ru-sk-media{width:100%;height:150px;border-radius:10px;margin-top:12px}
.ru-sk-acts{display:flex;gap:10px;margin-top:13px}
.ru-sk-acts .ru-sk{height:26px;width:74px;border-radius:100px}

/* ── Liste : notifications, relations, invitations ─────────────── */
.ru-sk-row{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--line,rgba(17,17,20,.08))}
.ru-sk-row:last-child{border-bottom:none}
.ru-sk-row-body{flex:1;min-width:0}

/* ── Grille : groupes, entreprises, evenements ─────────────────── */
.ru-sk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.ru-sk-tile{border:1px solid var(--line,rgba(17,17,20,.08));border-radius:12px;padding:12px}
.ru-sk-tile .ru-sk-cover{width:100%;height:74px;border-radius:8px;margin-bottom:10px}

/* ── Profil ────────────────────────────────────────────────────── */
.ru-sk-cover-lg{width:100%;height:104px;border-radius:10px}
.ru-sk-pf-av{width:78px;height:78px;border-radius:50%;border:4px solid #fff;margin:-42px 0 0 14px}

/* ── Accessibilite : on coupe le mouvement si la personne le demande ── */
@media (prefers-reduced-motion:reduce){
  .ru-sk,.rucom-loading,.rucom-loading::before{animation:none}
  .ru-sk{background:#e8e8ea}
}

/* ── SELECTEUR DE TRI DE L'ANNUAIRE (2026-08-28) ──────────────────
   Le membre voit dans quel ordre la liste est presentee, et en change.
   Avant, la navigation triait par date et la recherche par alphabet
   sans le dire : les memes personnes semblaient disparaitre. */
.rucom-x-sort{display:flex;align-items:center;gap:6px;margin:10px 0 2px;flex-wrap:wrap}
.rucom-x-sort-l{font-size:12px;color:var(--muted,#6b6b73);margin-right:2px}
.rucom-x-sortb{
  font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;
  padding:5px 13px;border-radius:100px;
  border:1px solid var(--line,rgba(17,17,20,.08));
  background:transparent;color:var(--muted,#6b6b73);
  transition:background .15s,color .15s,border-color .15s;
}
.rucom-x-sortb:hover{border-color:var(--ru-texte,#0e2438);color:var(--ru-texte,#0e2438)}
.rucom-x-sortb.rucom-on{
  background:var(--or,var(--ru-accent,#1d5c8f));border-color:var(--or,var(--ru-accent,#1d5c8f));color:var(--ru-sur-accent,#FFFFFF);
}
.rucom-x-sortb:focus-visible{outline:2px solid var(--or-d,var(--ru-accent,#1d5c8f));outline-offset:2px}

/* ══════════════════════════════════════════════════════════════════
   ALIGNEMENT DES VUES SANS COLONNE DE DROITE (2026-08-29)
   ------------------------------------------------------------------
   Evenements, Groupes, Entreprises, Collaborations, Messages, profil,
   Reglages : ces vues n'ont pas de colonne de droite, mais la regle de
   base de la grille (justify-content:space-between) poussait leur
   contenu loin du menu - un couloir vide de ~300 px au milieu de
   l'ecran. Deja corrige pour certaines largeurs d'ecran ; on etend la
   MEME regle a toutes : le contenu commence tout de suite apres le
   menu, et une troisieme piste elastique (1fr) absorbe le reste.
   Place en FIN de feuille expres : c'est le dernier mot de la cascade.
   ══════════════════════════════════════════════════════════════════ */
@media (min-width:1000px){
  .rucom-app.rucom-view-wide .rucom-shell,
  .rucom-app.rucom-no-right .rucom-shell{
    grid-template-columns:250px minmax(0,1200px) 1fr !important;
    justify-content:start !important;
  }
  .rucom-app.rucom-rail-min.rucom-view-wide .rucom-shell,
  .rucom-app.rucom-rail-min.rucom-no-right .rucom-shell{
    grid-template-columns:76px minmax(0,1300px) 1fr !important;
  }
}

/* ── VILLES VALIDEES : menu de suggestions sous le champ ville ─────── */
.rucom-villes-anchor{position:relative}
.rucom-villes-dd{position:absolute;top:100%;left:0;right:0;z-index:60;margin-top:4px;
  background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));border-radius:10px;
  box-shadow:0 8px 26px rgba(17,17,20,.14);overflow:hidden;max-height:240px;overflow-y:auto}
.rucom-villes-opt{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;
  padding:9px 12px;border:0;background:none;cursor:pointer;text-align:left;font:inherit}
.rucom-villes-opt:hover{background:var(--soft,#f4f4f6)}
.rucom-villes-opt b{font-size:13.5px;color:var(--ru-texte,#0e2438)}
.rucom-villes-opt small{font-size:11px;color:var(--muted,#6b6b73)}

/* ══════════════════════════════════════════════════════════════════
   BOUTONS DE FERMETURE DES MODALES (2026-08-29)
   ------------------------------------------------------------------
   Le ✕ etait pose en texte dans un rond : selon la police, il tombait
   legerement hors centre (visible dans « Ajouter au calendrier »).
   Regle unique pour TOUTES les modales : le rond est une grille, le
   glyphe est centre geometriquement, taille et graisse unifiees.
   Posee en fin de feuille : elle a le dernier mot sur les 38 modales.
   ══════════════════════════════════════════════════════════════════ */
.rucom-story-close{
  display:grid !important;place-items:center !important;
  padding:0 !important;line-height:1 !important;
  font-size:17px !important;font-weight:600;
  text-align:center !important;box-sizing:border-box;
}

/* ══════════════════════════════════════════════════════════════════
   AIDE CONTEXTUELLE « ? » + VISITE GUIDEE (2026-08-29)
   ══════════════════════════════════════════════════════════════════ */
.rucom-help-dot{display:inline-grid;place-items:center;width:17px;height:17px;margin-left:7px;
  border-radius:50%;background:var(--soft,#f4f4f6);border:1px solid var(--line,rgba(17,17,20,.14));
  color:var(--muted,#6b6b73);font-size:11px;font-weight:700;line-height:1;cursor:pointer;
  flex:0 0 auto;transition:background .14s,color .14s,border-color .14s}
.rucom-help-dot:hover{background:var(--ru-accent-fonce,#174a73);color:var(--ru-sur-accent,#FFFFFF);border-color:var(--ru-accent,#1d5c8f)}
.rucom-help-dot:focus-visible{outline:2px solid var(--or-d,var(--ru-accent,#1d5c8f));outline-offset:1px}

.rucom-hp{position:fixed;z-index:9600;box-sizing:border-box;max-width:calc(100vw - 20px);background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));
  border-radius:13px;padding:14px 16px 12px;box-shadow:0 14px 44px rgba(17,17,20,.22);
  animation:rucomFade .16s ease}
.rucom-hp-x{position:absolute;top:8px;right:8px;width:24px;height:24px;border-radius:50%;
  display:grid;place-items:center;padding:0;line-height:1;font-size:12px;border:0;cursor:pointer;
  background:var(--soft,#f4f4f6);color:var(--muted,#6b6b73)}
.rucom-hp-x:hover{background:var(--ru-accent-fonce,#174a73);color:var(--ru-sur-accent,#FFFFFF)}
.rucom-hp-t{font-size:14px;font-weight:800;color:var(--ru-texte,#0e2438);margin:0 22px 5px 0}
.rucom-hp-b{font-size:13px;line-height:1.55;color:var(--muted,#6b6b73)}
.rucom-hp-nav{display:flex;align-items:center;gap:8px;margin-top:11px}
.rucom-hp-n{font-size:11px;color:var(--muted,#6b6b73);font-variant-numeric:tabular-nums;margin:0 2px}

/* Halo de la visite : la zone eclairee reste nette, tout le reste s'assombrit. */
.rucom-tour-glow{position:fixed;z-index:9500;border-radius:14px;pointer-events:none;
  border:3px solid var(--or,var(--ru-accent,#1d5c8f));
  box-shadow:0 0 0 4px var(--ru-accent-filet,rgba(44,111,181,.45)),0 0 22px 4px var(--ru-accent-filet,rgba(44,111,181,.45)),0 0 0 9999px rgba(12,12,14,.58);
  transition:left .28s ease,top .28s ease,width .28s ease,height .28s ease}
.rucom-tour-bub{position:fixed;z-index:9601;box-sizing:border-box;max-width:calc(100vw - 20px);background:#fff;border:1px solid var(--line,rgba(17,17,20,.10));
  border-radius:13px;padding:14px 16px 12px;box-shadow:0 14px 44px rgba(17,17,20,.30);
  transition:left .28s ease,top .28s ease;animation:rucomFade .18s ease}
.rucom-tour-bub .rucom-tour-skip{margin-left:auto}

.rucom-tour-welcome{position:fixed;inset:0;z-index:9700;background:rgba(12,12,14,.55);
  display:flex;align-items:center;justify-content:center;padding:16px;backdrop-filter:blur(3px)}
.rucom-tour-wcard{background:#fff;border-radius:16px;padding:22px 22px 16px;max-width:400px;width:100%;
  box-shadow:0 22px 70px rgba(0,0,0,.3);animation:rucomFade .2s ease}

.rucom-tour-replay{margin-top:2px}
.rucom-tour-replay span{font-size:12.5px;color:var(--muted,#6b6b73)}
.rucom-tour-replay:hover span{color:var(--ru-texte,#0e2438)}

@media (prefers-reduced-motion:reduce){
  .rucom-tour-glow,.rucom-tour-bub{transition:none}
}

/* Pastille « ? » : taille VERROUILLEE. Posee dans un bouton en flex (l'en-tete
   du panneau algorithme), elle heritait d'un etirement : on fige tout. */
.rucom-help-dot{flex:0 0 17px !important;min-width:17px;max-width:17px;min-height:17px;max-height:17px}

/* ------------------------------------------------------------------ */
/* MA FICHE PUBLIQUE (2026-08-29) : bloc de choix dans les parametres  */
/* (quels champs de la fiche s'affichent dans A propos) + rappel au    */
/* proprietaire dans l'onglet A propos lui-meme.                       */
.rucom-provis .rucom-msgset-row{padding:10px 16px}
.rucom-about-provis{margin-top:8px}
.rucom-about-provis .rucom-about-edit{cursor:pointer}
/* Lien reel dans le menu des parametres (Aide et support -> portail RU Support) */
a.rucom-sset-nav{color:inherit;text-decoration:none}
a.rucom-sset-nav svg:last-child{margin-left:auto;width:15px;height:15px;opacity:.65}

/* -------------------------------------------------------------------- */
/* Bloc SEPARE : Classement des MC (tournoi), alimente par RU Tournoi.   */
/* Distinct du classement des membres ; separateur visuel au-dessus.     */
.rucom-lb-mc{margin:26px 4px 4px;padding-top:22px;border-top:2px dashed var(--line)}
.rucom-lb-mc-head{display:flex;align-items:center;gap:12px;padding:0 0 14px}
.rucom-lb-mc-badge{width:40px;height:40px;flex:0 0 auto;border-radius:12px;background:var(--ru-accent,#1d5c8f);display:grid;place-items:center}
.rucom-lb-mc-badge svg{width:22px;height:22px;color:var(--ru-sur-accent,#FFFFFF)}
.rucom-lb-mc-head h3{margin:0;font-size:17px;font-weight:900;letter-spacing:-.01em}
.rucom-lb-mc-head p{margin:2px 0 0;font-size:12px;color:var(--muted)}
.rucom-lb-mc-table .rucom-lb-thead,
.rucom-lb-mc-table .rucom-lb-row{grid-template-columns:52px 1fr 96px 92px}

/* --- QR du lien de parrainage (Mes invitations) : discret, filets fins. --- */
.rucom-inv-linkrow{display:flex;gap:8px;align-items:stretch}
.rucom-inv-linkrow .rucom-inv-linkbox{flex:1;min-width:0}
.rucom-inv-qr{width:86px;min-height:64px;border:1px solid rgba(17,17,20,.12);border-radius:10px;display:flex;align-items:center;justify-content:center;padding:6px;background:#fff;flex:0 0 auto}
.rucom-inv-qr svg{width:100%;height:auto;display:block}
@media (max-width:560px){.rucom-inv-linkrow{flex-wrap:wrap}.rucom-inv-qr{width:110px}}

/* =======================================================================
   MOBILE (2026-09-22) : le Réseau se comporte comme une application sur
   téléphone, selon les normes de Facebook, Instagram et LinkedIn.
   Voir aussi mobileUX() dans ru-community.js (classes rucom-lock, rucom-kb,
   rucom-bar-hide). Ce bloc est ADDITIF : il ne touche pas l'affichage PC
   (>= 1000 px), sauf la cible tactile des appareils sans souris.
   ======================================================================= */

/* --- A. Barre du bas : 5 cibles de 48 px, onglet actif visible ---------- */
.rucom-tabbar .rucom-tb{flex:1 1 0;height:48px;min-width:44px;max-width:96px;display:flex;align-items:center;
  justify-content:center;background:none;border:0;padding:0;margin:0;color:var(--ru-texte,#0e2438);cursor:pointer;position:relative;
  touch-action:manipulation}
.rucom-tabbar .rucom-tb svg{width:26px;height:26px;flex:0 0 auto}
.rucom-tabbar .rucom-tb.rucom-mid{background:none;border-radius:0;isolation:isolate}
.rucom-tabbar .rucom-tb.rucom-mid::before{content:"";position:absolute;left:50%;top:50%;width:44px;height:34px;
  margin:-17px 0 0 -22px;border-radius:12px;background:var(--or);z-index:-1}
.rucom-tabbar .rucom-tb.rucom-mid svg{width:24px;height:24px;color:var(--ru-sur-accent,#fff)}
.rucom-tabbar .rucom-tb.rucom-active{color:var(--ru-texte,#0e2438)}
.rucom-tabbar .rucom-tb.rucom-active svg{stroke-width:2.5}
.rucom-tabbar .rucom-tb.rucom-active::after{content:"";position:absolute;left:50%;bottom:2px;width:22px;height:3px;
  margin-left:-11px;border-radius:3px;background:var(--or)}
.rucom-tabbar .rucom-tb-me .rucom-av{width:28px;height:28px;font-size:11px}
.rucom-tabbar .rucom-tb-me.rucom-active .rucom-av{box-shadow:0 0 0 2px #fff,0 0 0 4px #111114}
.rucom-tabbar .rucom-tb:focus-visible{outline:2px solid #111114;outline-offset:-4px;border-radius:12px}
/* Clavier ouvert : la barre du bas se retire (elle ne monte plus sur le clavier). */
html.rucom-kb .rucom-tabbar{display:none}

@media (max-width:999px){
  /* --- B. Le bas du contenu n'est plus jamais cache sous la barre du bas.
     Barre = 48 px + 8 px de marge + zone de geste de l'iPhone. */
  .rucom-app{padding-bottom:calc(72px + env(safe-area-inset-bottom))}
  html.rucom-kb .rucom-app{padding-bottom:16px}

  /* --- C. Barre du haut : collee, se retire en descendant, revient en remontant. */
  .rucom-appbar{transition:transform .22s ease;will-change:transform;padding-top:calc(8px + env(safe-area-inset-top));
    padding-bottom:8px;min-height:52px}
  .rucom-appbar.rucom-bar-hide{transform:translateY(-100%)}
  .rucom-appbar .rucom-actions{gap:4px}
  .rucom-appbar .rucom-ic{width:44px;height:44px;min-width:44px;min-height:44px;padding:10px;border-radius:50%}
  .rucom-appbar .rucom-ic:active{background:var(--soft)}
  .rucom-appbar .rucom-badge-dot[data-count]:not([data-count="0"])::after{top:4px;right:2px}
  .rucom-appbar .rucom-burger{margin-left:-10px}

  /* --- D. Verrou du fond : modale, composeur, story ou menu ouvert = la page
     derriere ne bouge plus (plus de double defilement). */
  html.rucom-lock,html.rucom-lock body{overflow:hidden !important}
  /* En mode coque, le defileur est .rucom-app : on le fige aussi sous une modale. */
  html.rucom-shell-mode.rucom-lock body.rucom-fs .rucom-app{overflow:hidden !important}
  .rucom-modal,.rucom-cmpmodal,.rucom-story-view,.rucom-ephov,.rucom-left{overscroll-behavior:contain}
  .rucom-modal-card,.rucom-cmpmodal-panel,.rucom-conv-items,.rucom-chat-pane .rucom-thread,
  .rucom-fpanel,.rucom-ed-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}

  /* --- E. Menu lateral (tiroir) : l'ombre ne deborde plus a gauche quand il
     est ferme (bande grise sur le bord de l'ecran). */
  .rucom-left{box-shadow:none;visibility:hidden;transition:transform .25s ease,visibility 0s linear .25s;
    padding-top:calc(16px + env(safe-area-inset-top));padding-bottom:calc(16px + env(safe-area-inset-bottom))}
  .rucom-app.rucom-drawer-open .rucom-left{box-shadow:2px 0 26px rgba(0,0,0,.28);visibility:visible;
    transition:transform .25s ease,visibility 0s}

  /* --- F. Messagerie : plein ecran d'application, champ de saisie toujours
     visible au-dessus de la barre du bas (hauteur de l'ecran VISIBLE). */
  .rucom-msgr{height:calc(100vh - 150px);height:calc(100dvh - 150px - env(safe-area-inset-bottom));min-height:360px;
    border-radius:0;border-left:0;border-right:0}
  html.rucom-kb .rucom-msgr{height:calc(100dvh - 70px)}
  .rucom-chatbar{padding-bottom:calc(8px + env(safe-area-inset-bottom))}

  /* --- G. Longs mots et liens : jamais de debordement horizontal. */
  .rucom-txtpost,.rucom-p-cap,.rucom-bub,.rucom-cmt,.rucom-notif,.rucom-p-name,.rucom-about-v{overflow-wrap:anywhere}
  .rucom-app iframe,.rucom-app video,.rucom-app table{max-width:100%}

  /* --- H. Editeur de profil : hauteur de l'ecran visible. */
  .rucom-editor{max-height:calc(100vh - 40px);max-height:calc(100dvh - 24px)}
  body.admin-bar .rucom-editor{max-height:calc(100dvh - 70px)}
}

/* Barre d'administration WordPress : sous 600 px elle n'est plus fixe (elle
   defile avec la page). La barre du haut du Reseau se colle donc a 0. */
@media screen and (max-width:600px){
  body.admin-bar .rucom-appbar{top:0}
}

@media (max-width:600px){
  /* --- I. Modales en « feuille du bas » (Facebook, Instagram) : collees au
     bas, pleine largeur, coins arrondis en haut, defilement interne, boutons
     toujours atteignables au-dessus de la zone de geste. */
  .rucom-modal{align-items:flex-end;padding:0;padding-top:env(safe-area-inset-top)}
  /* Barre d'administration (46 px, au-dessus de tout) : la fenetre commence
     sous elle, sinon la barre cache le haut de la fenetre et sa croix. */
  body.admin-bar .rucom-modal{padding-top:46px}
  body.admin-bar .rucom-modal-card.rucom-postmodal,body.admin-bar .rucom-modal-card.rucom-editor{max-height:calc(100dvh - 46px);height:calc(100dvh - 46px)}
  .rucom-modal-card{max-width:100%;width:100%;border-radius:18px 18px 0 0;margin:0;
    max-height:92vh;max-height:calc(100dvh - 24px);overflow:auto;
    padding-bottom:calc(22px + env(safe-area-inset-bottom));animation:rucomSheetUp .22s ease}
  .rucom-modal-card.rucom-postmodal{padding-bottom:env(safe-area-inset-bottom)}
  /* Publication ouverte et editeur de profil : plein ecran, comme une page. */
  .rucom-modal-card.rucom-postmodal,.rucom-modal-card.rucom-editor{border-radius:0;max-height:100dvh;height:100dvh;margin:0}
  .rucom-modal-card .rucom-cmtbar{position:sticky;bottom:0;background:#fff;z-index:2}

  /* Menus contextuels (Partager, Signaler, compte...) : feuille d'actions au bas. */
  .rucom-pmenu{position:fixed !important;left:0 !important;right:0 !important;top:auto !important;bottom:0 !important;
    width:100% !important;max-width:none !important;min-width:0;border-radius:18px 18px 0 0;
    padding:8px 8px calc(10px + env(safe-area-inset-bottom));z-index:1600;
    box-shadow:0 0 0 100vmax rgba(0,0,0,.35);animation:rucomSheetUp .2s ease}
  .rucom-pmenu-item{min-height:48px;font-size:15px}

  /* Composeur : plein ecran (Instagram, Facebook). */
  .rucom-cmpmodal{padding:0 !important;align-items:stretch}
  .rucom-cmpmodal-panel{max-width:none;width:100%;height:100vh;height:100dvh;max-height:none;min-height:0;border-radius:0;
    padding-bottom:env(safe-area-inset-bottom)}
}
@keyframes rucomSheetUp{from{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}

/* --- J. Champs de saisie a 16 px sur ecran tactile : sous 16 px, l'iPhone
   ZOOME la page au toucher d'un champ et la mise en page se decale. */
@media (max-width:999px) and (pointer:coarse){
  .rucom-app input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),
  .rucom-app textarea,.rucom-app select,
  .rucom-modal input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),
  .rucom-modal textarea,.rucom-modal select,
  .rucom-cmpmodal input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),
  .rucom-cmpmodal textarea,.rucom-cmpmodal select,
  .rucom-rte-area,[contenteditable="true"]{font-size:16px !important}
}

/* --- K. Ecrans tactiles (pas de survol) : ce qui n'apparaissait qu'au survol
   de la souris est visible au doigt. Plus de reflet bleu au toucher. */
@media (hover:none){
  .rucom-msg-rwrap,.rucom-msg-menu,.rucom-notif-x{opacity:1}
  .rucom-app,.rucom-modal,.rucom-cmpmodal,.rucom-pmenu{-webkit-tap-highlight-color:transparent}
  .rucom-app button,.rucom-app a,.rucom-app [data-act],.rucom-modal button,.rucom-pmenu button{touch-action:manipulation}
}

/* --- L. Integrations externes : chacun controle son bouton flottant.
   RU Traducteur et RU Cookies gerent leur position et leur glisser-deposer.
   RU Community ne fixe PAS left/right/top/bottom sur leurs elements, afin de
   respecter la position choisie et enregistree par l'utilisateur.
   Avec clavier ou modale RU ouverts, le masquage existant reste inchange. */
@media (max-width:999px){
  html.rucom-kb body.rucom-fs #ru-revoke-btn,html.rucom-kb body.rucom-fs .rutr-sw-float,
  html.rucom-lock body.rucom-fs #ru-revoke-btn,html.rucom-lock body.rucom-fs .rutr-sw-float{display:none !important}

  /* Marge laterale des ecrans (Moderation, Entreprises, Collaborations,
     Notifications, Classement, Parametres...). navigate() pose rucom-view-pad
     sur TOUTES les vues sauf le fil, la messagerie et les ecrans de detail
     (couverture pleine largeur). Le contenu ne colle plus jamais aux bords. */
  html.rucom-shell-mode .rucom-app.rucom-view-pad .rucom-content{padding-left:16px;padding-right:16px;box-sizing:border-box}
  /* Les en-tetes portaient deja leur propre retrait lateral : on l'annule sous
     la coque paddee pour ne pas doubler la marge. */
  html.rucom-shell-mode .rucom-app.rucom-view-pad .rucom-page-h,
  html.rucom-shell-mode .rucom-app.rucom-view-pad .rucom-lb-head,
  html.rucom-shell-mode .rucom-app.rucom-view-pad .rucom-ev-head,
  html.rucom-shell-mode .rucom-app.rucom-view-pad .rucom-sp-sub{padding-left:0;padding-right:0}
}

/* --- M. Cibles tactiles d'au moins 40 px (pastilles, petits boutons,
   onglets d'Explorer et du classement, bascules de vue) et texte d'appel du
   composeur sur une seule ligne. */
@media (max-width:999px){
  .rucom-app .rucom-btn{min-height:40px}
  .rucom-app .rucom-btn.rucom-sm{min-height:36px}
  .rucom-xtab,.rucom-lb-chip,.rucom-chip,.rucom-grp-chip,.rucom-seg,.rucom-segb{min-height:40px}
  .rucom-x-view,.rucom-fview{min-width:40px;min-height:40px}
  .rucom-composer .rucom-q{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;
    line-height:20px}
}

@media (prefers-reduced-motion:reduce){
  .rucom-appbar,.rucom-left{transition:none}
  .rucom-modal-card,.rucom-pmenu{animation:none}
}

/* =======================================================================
   COQUE D'APPLICATION MOBILE (2026-09-23) : la vraie correction de la barre
   du bas qui monte et descend.

   PROBLEME DE FOND : sur telephone, c'est la PAGE qui defile. En defilant, le
   navigateur montre et cache sa barre d'adresse ; la hauteur visible change ;
   une barre `position:fixed;bottom:0` suit ce mouvement et semble monter puis
   descendre. Aucun reglage CSS ne bat cela tant que la page entiere defile.

   SOLUTION (Facebook, Instagram, LinkedIn) : la page ne defile plus. .rucom-app
   devient un cadre fige plein ecran ; seul son interieur defile. La barre
   d'adresse cesse alors d'apparaitre et de disparaitre, donc la barre du bas
   est enfin immobile. Le JS (rucomScroller / classe rucom-shell-mode) rebranche
   le fil a l'infini, la barre du haut et la memoire de position sur ce defileur.
   Actif sous 1000 px seulement ; sur ordinateur la fenetre defile comme avant.
   ======================================================================= */
@media (max-width:999px){
  /* CORRECTION A LA SOURCE (2026-09-23, 2e passe).
     Espace blanc sous la barre du bas (Firefox et Samsung, telephones neufs).
     DEUX causes mesurees sur la vraie page, cumulees :
     1) Un bloc « Espaceur » de 10px laisse par l'editeur WordPress juste avant
        le raccourci poussait toute la coque vers le bas : elle commencait a 10
        et finissait 10 plus bas que l'ecran. Elle ne pouvait donc PAS coller.
     2) `height:100dvh` : Firefox Android ne recalcule pas `dvh` de facon fiable
        quand la barre d'adresse se replie. La coque restait a la petite hauteur
        pendant que la zone visible grandissait, et le fond blanc du body
        apparaissait dessous : la bande blanche.
     Correction : la coque est ancree aux DEUX bords de l'ecran visible par
     `position:fixed` + `inset:0`, SANS hauteur explicite et SANS unite d'ecran.
     C'est la paire top/bottom qui donne la hauteur, et le navigateur la
     reajuste lui-meme au mouvement de la barre d'adresse. Etant hors flux,
     aucun bloc de la page ne peut plus la decaler. C'est la methode standard
     des applications web mobiles. */
  html.rucom-shell-mode,
  html.rucom-shell-mode body.rucom-fs{height:100%;min-height:0;overflow:hidden;overscroll-behavior:none}
  html.rucom-shell-mode body.rucom-fs .rucom-fs-main{min-height:0;height:100%}
  /* Blocs vides laisses par l'editeur WordPress autour du raccourci (Espaceur,
     paragraphe vide) : ils decalaient la coque de 10px vers le bas. Neutralises
     en mode coque seulement ; la page normale n'est pas touchee. */
  html.rucom-shell-mode body.rucom-fs .rucom-fs-main>.wp-block-spacer,
  html.rucom-shell-mode body.rucom-fs .rucom-fs-main>p:empty{display:none}
  html.rucom-shell-mode body.rucom-fs .rucom-app{
    /* Ancrage aux DEUX bords : top:0 ET bottom:0 (via inset). AUCUNE hauteur
       explicite, AUCUNE unite d'ecran. Une hauteur explicite annulerait
       bottom:0 : c'etait l'erreur de la version precedente. */
    position:fixed;
    inset:0;
    height:auto;
    min-height:0;margin:0;max-width:none;box-sizing:border-box;
    display:flex;flex-direction:column;overflow:hidden;padding:0;overscroll-behavior:none}
  html.rucom-shell-mode body.rucom-fs .rucom-app>.rucom-shell{flex:1 1 auto;min-height:0;display:block}
  /* La colonne centrale est le VRAI defileur (voir rucomScroller dans le JS). */
  html.rucom-shell-mode .rucom-center{height:100%;overflow-y:auto;overflow-x:hidden;overflow-x:clip;
    -webkit-overflow-scrolling:touch;overscroll-behavior:contain}
  /* La barre du haut colle en haut du contenu qui defile (et non de la fenetre). */
  html.rucom-shell-mode .rucom-appbar{position:sticky;top:0}
  /* La barre du bas est le dernier element de la colonne : collee au vrai bas. */
  html.rucom-shell-mode .rucom-tabbar{position:static;flex:0 0 auto;left:auto;right:auto;bottom:auto;
    width:100%;max-width:none;margin:0;transform:none;z-index:auto}
  /* Barre d'administration WordPress : on ne rogne la coque QUE si la barre est
     REELLEMENT affichee (classe rucom-adminbar-on posee par le JS, et hauteur
     mesuree --rucom-ab). Une barre masquee (extension « hide admin bar ») ne
     rogne plus rien : plus de bande blanche en bas, plus de chevauchement.
     Les visiteurs du public n'ont pas de barre d'admin : coque pleine hauteur. */
  html.rucom-shell-mode.rucom-adminbar-on body.rucom-fs .rucom-app{top:var(--rucom-ab, 0px)}
}

/* =======================================================================
   CLASSEMENT LISIBLE SUR TELEPHONE (2026-09-23).
   Probleme : la table des MC gardait 4 colonnes fixes sur mobile, le nom du
   MC se faisait ecraser jusqu'a une seule lettre. On donne toute la place au
   nom : photo ronde retiree, bilan en pastille sous le nom, Elo+ a droite.
   Meme principe (photo retiree) pour le classement des membres.
   ======================================================================= */
.rucom-lb-mc-table .rucom-lb-who{display:flex;flex-direction:column;min-width:0}
/* Pastille bilan : cachee sur grand ecran (la colonne BILAN suffit), montree
   seulement sur telephone la ou la colonne est retiree. */
.rucom-lb-bilan{display:none}
.rucom-lb-mc-table .rucom-lb-bilan{margin-top:6px;align-self:flex-start;font-size:11px;font-weight:800;
  letter-spacing:.02em;color:#3a3a40;background:var(--soft);border:1px solid var(--line);
  border-radius:999px;padding:2px 9px;white-space:nowrap}

/* Carte d'acces au classement des MC (Option B) : une destination, pas un
   second tableau deverse sous le premier. */
.rucom-lb-mccard{display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  margin-top:16px;background:#fff;border:1px solid var(--line,#e4e4e8);border-radius:14px;
  padding:12px 14px;cursor:pointer;font-family:inherit;color:var(--ru-texte,#0e2438)}
.rucom-lb-mccard:hover{background:var(--soft,#f7f7f9)}
.rucom-lb-mccard-ic{width:42px;height:42px;flex:0 0 auto;border-radius:13px;background:var(--ru-accent-doux,rgba(44,111,181,.12));
  display:flex;align-items:center;justify-content:center}
.rucom-lb-mccard-ic svg{width:21px;height:21px;color:var(--or,var(--ru-accent,#1d5c8f))}
.rucom-lb-mccard-bd{flex:1;min-width:0;display:block}
.rucom-lb-mccard-bd b{display:block;font-size:14.5px;font-weight:800}
.rucom-lb-mccard-bd small{display:block;font-size:12px;color:var(--muted,#6b6b73);margin-top:2px}
.rucom-lb-mccard-bd em{display:block;font-style:normal;font-size:11.5px;color:#9a9a93;margin-top:4px;
  font-variant-numeric:tabular-nums}
.rucom-lb-mccard-go{width:18px;height:18px;flex:0 0 auto;color:#b4b4ad}
/* Retour depuis le classement des MC vers celui du Reseau. */
.rucom-lb-back{display:inline-flex;align-items:center;gap:6px;margin:2px 0 14px;padding:6px 10px 6px 6px;
  border:0;background:transparent;cursor:pointer;font-family:inherit;font-size:14px;font-weight:700;
  color:var(--ru-texte,#0e2438)}
.rucom-lb-back svg{width:20px;height:20px}
.rucom-lb-back:hover{color:var(--muted,#6b6b73)}

@media (max-width:600px){
  /* --- Classement des MC (tournoi) --- */
  .rucom-lb-mc-table .rucom-lb-thead,
  .rucom-lb-mc-table .rucom-lb-row{grid-template-columns:34px minmax(0,1fr) auto;gap:10px;padding:12px 14px}
  .rucom-lb-mc-table .rucom-lb-c-member .rucom-av{display:none}
  .rucom-lb-mc-table .rucom-lb-c-member{gap:0}
  .rucom-lb-mc-table .rucom-lb-who b{white-space:normal;overflow:visible;text-overflow:clip;
    overflow-wrap:anywhere;word-break:break-word;line-height:1.2;font-size:15px}
  .rucom-lb-mc-table .rucom-lb-who small{white-space:normal;line-height:1.3}
  .rucom-lb-mc-table .rucom-lb-row .rucom-lb-c-num[data-k="record"]{display:none}
  .rucom-lb-mc-table .rucom-lb-thead .rucom-lb-c-num{display:none}
  .rucom-lb-mc-table .rucom-lb-bilan{display:inline-block}
  .rucom-lb-mc-table .rucom-lb-c-pts{align-items:flex-end}
  .rucom-lb-mc-table .rucom-lb-c-pts b{font-size:18px}

  /* --- Classement des membres : photo retiree, nom au large --- */
  .rucom-lb-table:not(.rucom-lb-mc-table) .rucom-lb-c-member .rucom-av{display:none}
  .rucom-lb-table:not(.rucom-lb-mc-table) .rucom-lb-c-member{gap:0}
  /* Le nom du membre ne se coupe plus en plein milieu ("Kenneth Kennet...") :
     il passe sur deux lignes comme celui des MC. */
  .rucom-lb-table:not(.rucom-lb-mc-table) .rucom-lb-who b{font-size:14.5px;
    white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;
    word-break:break-word;line-height:1.2}
  .rucom-lb-table:not(.rucom-lb-mc-table) .rucom-lb-who small{white-space:normal;line-height:1.3}
}

/* ── NAVIGATION MOBILE RU (livraison 4, 2026-10-03) ──────────────────────
   Fleche Retour de RU Design, posee DANS la barre du haut (rucom-appbar),
   hors des ecrans principaux. Telephone et tablette seulement ; ordinateur :
   rien ne change. Sur une vue interieure, elle prend la place du menu et du
   logo (le menu reste sur les ecrans principaux et la barre du bas reste la).
   Eteinte par defaut : sans elle, aucune de ces regles ne s'applique. */
.rucom-appbar .rucom-back{display:none}
@media (max-width:999px){
  .rucom-appbar .rucom-back:not([hidden]){display:inline-flex;align-items:center;box-sizing:border-box;
    height:44px;min-width:44px;max-width:150px;margin:-10px 0 -10px -8px;padding:0 8px 0 2px;flex:0 0 auto;
    color:var(--ru-accent,#1d5c8f);text-decoration:none;font-size:16px;line-height:1;border-radius:12px;
    -webkit-tap-highlight-color:transparent;touch-action:manipulation}
  .rucom-appbar .rucom-back:active{background:var(--ru-accent-doux,rgba(29,92,143,.12))}
  .rucom-appbar .rucom-back:focus-visible{outline:2px solid var(--ru-accent,#1d5c8f);outline-offset:2px}
  .rucom-appbar .rucom-back svg{width:22px;height:22px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2.2;
    stroke-linecap:round;stroke-linejoin:round}
  .rucom-appbar .rucom-back-nom{min-width:0;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .rucom-appbar.rucom-back-on .rucom-burger,
  .rucom-appbar.rucom-back-on .rucom-brand{display:none}
  .rucom-appbar.rucom-back-on .rucom-actions{margin-left:auto}
}
@media (max-width:359px){
  .rucom-appbar .rucom-back-nom{display:none}
  .rucom-appbar .rucom-back:not([hidden]){width:44px;padding:0;justify-content:center}
}
/* Moins d'animations demande par l'appareil : aucun glissement ni fondu. */
@media (prefers-reduced-motion:reduce){
  .rucom-app *,.rucom-app *::before,.rucom-app *::after{animation-duration:.01ms !important;
    animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* FAQ (livraison 7) : Paramètres > Aide et support. Cibles de 44 px, texte de 16 px. */
.rucom-faqset{padding:4px 0}
.rucom-faq-item{border-bottom:1px solid rgba(14,36,56,.08)}
.rucom-faq-item:last-of-type{border-bottom:0}
.rucom-faq-item>summary{min-height:44px;display:flex;align-items:center;padding:10px 16px;font-size:16px;font-weight:600;color:var(--ru-texte,#0e2438);cursor:pointer;list-style:none}
.rucom-faq-item>summary::-webkit-details-marker{display:none}
.rucom-faq-item>summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid var(--ru-accent,#1d5c8f);border-bottom:2px solid var(--ru-accent,#1d5c8f);transform:rotate(45deg);flex:0 0 auto}
.rucom-faq-item[open]>summary::after{transform:rotate(-135deg)}
.rucom-faq-r{padding:0 16px 14px;font-size:15px;line-height:1.55;color:var(--ru-texte,#0e2438)}
.rucom-faq-portail{display:flex;align-items:center;gap:8px;min-height:44px;padding:10px 16px;font-size:15px;font-weight:600;color:var(--ru-accent,#1d5c8f);text-decoration:none;border-top:1px solid rgba(14,36,56,.08)}
.rucom-faq-portail svg{width:16px;height:16px}
/* Notifications par courriel (livraison 7) : un interrupteur par type, libelle au-dessus, aide dessous, cible de 44 px, une colonne au telephone. */
.rucom-mailset-sub{padding:12px 16px 4px;font-size:13.5px;line-height:1.5;color:var(--ru-discret,#6b7280)}
.rucom-mailset-list{padding:4px 0 6px}
.rucom-mailset-row{display:flex;align-items:center;gap:14px;padding:12px 16px;border-top:1px solid rgba(14,36,56,.08)}
.rucom-mailset-row:first-child{border-top:0}
.rucom-mailset-txt{flex:1 1 0;min-width:0}
.rucom-mailset-txt b{display:block;font-size:15px;font-weight:700;color:var(--ru-texte,#0e2438);line-height:1.35}
.rucom-mailset-txt small{display:block;margin-top:3px;font-size:13px;line-height:1.5;color:var(--ru-discret,#6b7280)}
.rucom-mailset-sw{flex:0 0 auto;display:flex;align-items:center;justify-content:center;min-width:56px;min-height:44px;padding:0;border:0;background:none;cursor:pointer;border-radius:12px}
.rucom-mailset-sw:focus-visible{outline:2px solid var(--ru-accent,#1d5c8f);outline-offset:2px}
.rucom-mailset-sw:disabled{cursor:progress}
.rucom-mailset-sw .rucom-switch{display:block;pointer-events:none;min-height:0;height:26px}
.rucom-mailset-sw .rucom-switch.rucom-on{background:var(--ru-accent,#1d5c8f)}
@media (max-width:600px){.rucom-mailset-row{padding:12px 14px}.rucom-mailset-sub{padding:12px 14px 4px}.rucom-mailset-txt b{font-size:16px}}

/* Bloc qui n'a pas pu se charger (livraison 9) : message et « Réessayer »
   au lieu d'un « Chargement... » sans fin. */
.rucom-charge-err{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:12px 14px;font-size:13px;line-height:1.45;color:var(--muted,#6b6b73)}
@media (max-width:999px){.rucom-charge-err .rucom-btn{min-height:44px}}

/* Apercu reel (vignette, titre et description) dans Modifier la publication.
   La modale reutilise le meme HTML que le fil, seulement a taille contenue. */
.rucom-posted-preview{margin:14px 0 4px;min-width:0}
.rucom-posted-preview-label{margin-bottom:7px;font-size:12px;font-weight:700;color:var(--muted,#6b6b73)}
.rucom-posted-preview .rucom-media-wrap,.rucom-posted-preview .rucom-media-grid{width:100%;max-width:100%;overflow:hidden;border-radius:12px}
.rucom-posted-preview .rucom-media-wrap.rucom-mk-link{aspect-ratio:auto !important;height:auto}
.rucom-posted-preview .rucom-linkcard{width:100%;margin:0}
.rucom-posted-preview .rucom-media-wrap>img{display:block;width:100%;max-height:270px;object-fit:contain}
/* L'editeur garde un X dans la zone fixe de son en-tete. */
.rucom-modal-card.rucom-posted>.rucom-modal-close{position:absolute;top:14px;right:14px;flex:none;margin:0;transform:none}


/* RU Community : edition premium avec apercu en direct du VRAI postCard().
   Ne touche pas aux autres modales ni aux composants du fil. */
.rucom-postedit-overlay{background:rgba(7,20,36,.68);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.rucom-modal-card.rucom-postedit-premium{display:flex;flex-direction:column;padding:0;width:min(1080px,calc(100vw - 32px));max-width:1080px;height:min(820px,calc(100dvh - 40px));max-height:calc(100dvh - 40px);overflow:hidden;border-radius:18px;background:#fff;box-shadow:0 28px 90px rgba(6,21,38,.34);color:var(--ru-texte,#0e2438)}
.rucom-postedit-premium *{box-sizing:border-box}
.rucom-postedit-premium .rucom-postedit-head{position:relative;display:flex;align-items:center;flex:0 0 auto;min-height:102px;padding:21px 28px;background:#fff;border-bottom:1px solid var(--line,#e6e9ee)}
.rucom-postedit-premium .rucom-postedit-headtxt{display:flex;align-items:center;gap:16px;min-width:0;padding-right:58px}
.rucom-postedit-premium .rucom-postedit-headic{width:50px;height:50px;flex:0 0 50px;display:grid;place-items:center;border-radius:14px;color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,#eaf2fa)}
.rucom-postedit-premium .rucom-postedit-headic svg{width:23px;height:23px}
.rucom-postedit-premium .rucom-postedit-head h3{font-size:clamp(20px,2vw,25px);line-height:1.2;margin:0;font-weight:850;letter-spacing:-.03em;color:var(--ru-texte,#0e2438)}
.rucom-postedit-premium .rucom-postedit-head p{font-size:13px;line-height:1.5;color:var(--muted,#64748b);margin:5px 0 0}
.rucom-modal-card.rucom-postedit-premium button.rucom-modal-close{top:27px;right:25px;z-index:4}
.rucom-postedit-premium .rucom-postedit-main{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);flex:1;min-height:0;overflow:hidden}
.rucom-postedit-premium .rucom-postedit-fields{min-width:0;min-height:0;padding:28px 28px 30px;overflow-y:auto;scrollbar-gutter:stable}
.rucom-postedit-premium .rucom-postedit-fieldtop h4{display:flex;align-items:center;gap:10px;margin:0 0 9px;color:var(--ru-texte,#0e2438);font-size:15px;font-weight:830}
.rucom-postedit-premium .rucom-postedit-fieldtop h4 svg{width:19px;height:19px;color:var(--ru-accent,#1d5c8f)}
.rucom-postedit-premium .rucom-postedit-fieldtop p{font-size:13px;line-height:1.55;margin:0 0 16px;color:var(--muted,#657488)}
.rucom-postedit-premium .rucom-postedit-srlabel{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.rucom-postedit-premium .rucom-posted-tx{display:block;width:100%;max-width:100%;min-height:215px;padding:16px;font-size:15px;line-height:1.65;color:var(--ru-texte,#0e2438);border:1px solid #d4dce7;border-radius:12px;background:#fff;resize:vertical;transition:border-color .16s,box-shadow .16s;font-family:inherit}
.rucom-postedit-premium .rucom-posted-tx:focus-visible,.rucom-postedit-premium .rucom-vis-select:focus-visible{outline:none;border-color:var(--ru-accent,#1d5c8f);box-shadow:0 0 0 3px var(--ru-accent-doux,rgba(29,92,143,.16))}
.rucom-postedit-premium .rucom-postedit-count{text-align:right;margin:8px 1px 21px;color:var(--muted,#687587);font-size:12px;font-variant-numeric:tabular-nums}
.rucom-postedit-premium .rucom-postedit-visgroup{padding-top:21px;border-top:1px solid var(--line,#e5e7eb)}
.rucom-postedit-premium .rucom-posted-vis{display:flex;align-items:stretch;flex-direction:column;gap:12px;margin:0}
.rucom-postedit-premium .rucom-posted-vis label{display:flex;align-items:center;gap:9px;color:var(--ru-texte,#0e2438);font-size:14px;font-weight:800}
.rucom-postedit-premium .rucom-posted-vis label svg{width:19px;height:19px;color:var(--ru-accent,#1d5c8f)}
.rucom-postedit-premium .rucom-vis-select{width:100%;max-width:100%;min-height:47px;padding:9px 13px;background:#fff;border:1px solid #d7dee8;border-radius:11px;font:inherit;font-size:14px;color:var(--ru-texte,#0e2438)}
.rucom-postedit-premium .rucom-postedit-vishint{font-size:12px;line-height:1.55;color:var(--muted,#657488);margin:9px 0 0}
.rucom-postedit-premium .rucom-postedit-vishint strong{font-weight:700;color:var(--ru-texte,#0e2438)}
.rucom-postedit-premium .rucom-postedit-mediahelp{display:flex;align-items:flex-start;gap:9px;margin:17px 0 0;padding:11px 13px;border-radius:10px;background:#f6f8fb;color:var(--muted,#657488);font-size:12px;line-height:1.5}
.rucom-postedit-premium .rucom-postedit-mediahelp svg{width:17px;height:17px;flex:0 0 17px;color:var(--ru-accent,#1d5c8f)}
.rucom-postedit-premium .rucom-postedit-infonote{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:10px;background:var(--ru-accent-doux,#eaf2fa);color:var(--ru-accent,#1d5c8f);font-size:12px;line-height:1.6;margin-top:22px}
.rucom-postedit-premium .rucom-postedit-infonote svg{width:17px;height:17px;flex:0 0 17px;margin-top:1px}
.rucom-postedit-premium .rucom-postedit-preview{min-width:0;min-height:0;overflow-y:auto;scrollbar-gutter:stable;padding:27px 25px 30px;background:#f6f8fb;border-left:1px solid var(--line,#e5e7eb)}
.rucom-postedit-premium .rucom-postedit-previewhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.rucom-postedit-premium .rucom-postedit-previewtitle{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:830;white-space:nowrap;color:var(--ru-texte,#0e2438)}
.rucom-postedit-premium .rucom-postedit-previewtitle svg{width:21px;height:21px;color:var(--ru-accent,#1d5c8f)}
.rucom-postedit-premium .rucom-postedit-livebadge{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;padding:7px 10px;border-radius:999px;background:#e7f6eb;color:#1e7542;font-size:11px;font-weight:700;line-height:1.2}
.rucom-postedit-premium .rucom-postedit-livedot{display:block;flex:0 0 7px;width:7px;height:7px;border-radius:50%;background:#1d9952}
.rucom-postedit-premium .rucom-postedit-previewsub{margin:0 0 17px;color:var(--muted,#687587);font-size:12px;line-height:1.55}
.rucom-postedit-premium .rucom-postedit-preview-canvas{border:1px solid #e0e5ed;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 4px 15px rgba(13,35,58,.07)}
.rucom-postedit-premium .rucom-postedit-preview-canvas .rucom-post{border:0!important;border-radius:0!important;background:#fff!important;margin:0!important;animation:none!important;box-shadow:none!important;pointer-events:none}
.rucom-postedit-premium .rucom-postedit-preview-canvas .rucom-txtpost{padding:9px 15px 12px}
.rucom-postedit-premium .rucom-postedit-preview-canvas .rucom-media-wrap,.rucom-postedit-premium .rucom-postedit-preview-canvas .rucom-linkcard{max-width:100%;width:100%;margin:0}
.rucom-postedit-premium .rucom-postedit-preview-canvas img{max-width:100%}
.rucom-postedit-premium .rucom-postedit-preview-canvas .rucom-p-cap[hidden],.rucom-postedit-premium .rucom-postedit-preview-canvas .rucom-txtpost[hidden]{display:none!important}
.rucom-postedit-premium .rucom-postedit-previewnote{margin:13px 2px 0;color:var(--muted,#687587);font-size:11px;line-height:1.5}
.rucom-postedit-premium .rucom-postedit-foot{position:relative;z-index:2;flex:0 0 auto;display:flex;align-items:center;gap:12px;margin:0;padding:16px 24px;border-top:1px solid var(--line,#e6e9ee);background:#fff}
.rucom-postedit-premium .rucom-postedit-status{margin-right:auto;font-size:12px;line-height:1.5;color:var(--muted,#677487)}
.rucom-postedit-premium[data-dirty="1"] .rucom-postedit-status{color:var(--ru-accent,#1d5c8f);font-weight:700}
.rucom-postedit-premium .rucom-postedit-foot .rucom-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:129px;min-height:46px;padding:10px 18px;border-radius:10px;font-weight:770;font-size:13px}
.rucom-postedit-premium .rucom-postedit-foot .rucom-btn svg{width:17px;height:17px}
.rucom-postedit-premium .rucom-postedit-foot [data-act="pm-post-save-edit"]{background:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#fff);border-color:var(--ru-accent,#1d5c8f)}
.rucom-postedit-premium .rucom-postedit-foot [data-act="pm-post-save-edit"]:disabled{opacity:.48;cursor:not-allowed}
.rucom-postedit-premium .rucom-postedit-foot [data-act="pm-post-save-edit"][aria-busy="true"]{opacity:.65;cursor:wait}
.rucom-postedit-premium .rucom-postedit-tabs{display:none}
@media(max-width:840px){
 .rucom-modal-card.rucom-postedit-premium{width:min(980px,calc(100vw - 24px))}
 .rucom-postedit-premium .rucom-postedit-fields{padding:24px 19px}
 .rucom-postedit-premium .rucom-postedit-preview{padding:24px 18px}
 .rucom-postedit-premium .rucom-postedit-livebadge{font-size:10px;padding:6px 9px}
}
@media(max-width:720px){
 .rucom-postedit-overlay{align-items:flex-end!important;padding:0!important}
 .rucom-modal-card.rucom-postedit-premium{width:100%;height:calc(100dvh - env(safe-area-inset-top));max-height:100dvh;margin:0;border-radius:17px 17px 0 0}
 .rucom-postedit-premium .rucom-postedit-head{min-height:76px;padding:13px 17px}
 .rucom-postedit-premium .rucom-postedit-headtxt{gap:11px;padding-right:48px}
 .rucom-postedit-premium .rucom-postedit-headic{width:39px;height:39px;flex-basis:39px;border-radius:11px}
 .rucom-postedit-premium .rucom-postedit-headic svg{width:19px;height:19px}
 .rucom-postedit-premium .rucom-postedit-head h3{font-size:19px}
 .rucom-postedit-premium .rucom-postedit-head p{display:none}
 .rucom-modal-card.rucom-postedit-premium button.rucom-modal-close{top:17px;right:17px}
 .rucom-postedit-premium .rucom-postedit-tabs{display:flex;gap:8px;flex:0 0 auto;padding:9px 14px;background:#fff;border-bottom:1px solid var(--line,#e5e7eb)}
 .rucom-postedit-premium .rucom-postedit-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 12px;border:0;border-radius:9px;background:#f4f6f9;color:var(--muted,#657488);font-size:13px;font-weight:800;cursor:pointer}
 .rucom-postedit-premium .rucom-postedit-tab svg{width:16px;height:16px}
 .rucom-postedit-premium .rucom-postedit-tab.rucom-on{background:var(--ru-accent-doux,#eaf2fa);color:var(--ru-accent,#1d5c8f)}
 .rucom-postedit-premium .rucom-postedit-main{display:block;overflow-y:auto}
 .rucom-postedit-premium .rucom-postedit-main[data-tab="edit"] .rucom-postedit-preview,.rucom-postedit-premium .rucom-postedit-main[data-tab="preview"] .rucom-postedit-fields{display:none}
 .rucom-postedit-premium .rucom-postedit-fields,.rucom-postedit-premium .rucom-postedit-preview{padding:19px 17px;overflow:visible;border-left:0}
 .rucom-postedit-premium .rucom-posted-tx{min-height:170px}
 .rucom-postedit-premium .rucom-postedit-foot{padding:12px 13px calc(12px + env(safe-area-inset-bottom))}
 .rucom-postedit-premium .rucom-postedit-status{display:none}
 .rucom-postedit-premium .rucom-postedit-foot .rucom-btn{flex:1 1 0;min-width:0;min-height:44px}
}
@media(prefers-reduced-motion:reduce){button.rucom-modal-close,.rucom-postedit-premium .rucom-posted-tx{transition:none}}

/* Publications: partage externe avec destinations explicites. */
.rucom-pmenu .rucom-socialshare{display:flex;align-items:center;gap:10px;text-decoration:none}
.rucom-socialmark{flex:0 0 23px;width:23px;height:23px;display:inline-grid;place-items:center;border-radius:6px;font-size:13px;font-weight:850;line-height:1;color:#fff}
.rucom-socialmark-fb{background:#1877f2}
.rucom-socialmark-x{background:#151515}
.rucom-socialmark-wa{background:#148b55}
/* Modale premium: 44% edition, 56% apercu et en-tete sur deux colonnes. */
.rucom-postedit-premium .rucom-postedit-main{grid-template-columns:minmax(0,44fr) minmax(0,56fr)}
.rucom-postedit-premium .rucom-postedit-head{display:grid;grid-template-columns:minmax(0,44fr) minmax(0,56fr);gap:0;padding:16px 0 16px 24px;min-height:92px}
.rucom-postedit-premium .rucom-postedit-headtxt{padding-right:16px;gap:12px}
.rucom-postedit-premium .rucom-postedit-headic{width:44px;height:44px;flex-basis:44px}
.rucom-postedit-premium .rucom-postedit-head h3{font-size:clamp(18px,1.8vw,23px)}
.rucom-postedit-premium .rucom-postedit-headright{min-width:0;padding:3px 77px 0 20px;border-left:1px solid var(--line,#e5e7eb)}
.rucom-postedit-premium .rucom-postedit-headright .rucom-postedit-previewhead{margin:0;gap:7px;min-width:0;flex-wrap:wrap;justify-content:flex-start}
.rucom-postedit-premium .rucom-postedit-headright .rucom-postedit-previewtitle{font-size:13px;gap:6px}
.rucom-postedit-premium .rucom-postedit-headright .rucom-postedit-previewtitle svg{width:17px;height:17px}
.rucom-postedit-premium .rucom-postedit-headright .rucom-postedit-livebadge{padding:4px 7px;font-size:10px}
.rucom-postedit-premium .rucom-postedit-headright .rucom-postedit-previewsub{font-size:11px;line-height:1.35;margin:5px 0 0;max-width:100%;color:var(--muted,#687587)}
.rucom-postedit-premium .rucom-postedit-preview>.rucom-postedit-previewhead,
.rucom-postedit-premium .rucom-postedit-preview>.rucom-postedit-previewsub{display:none}
.rucom-postedit-premium .rucom-postedit-fields{padding:23px 21px 25px}
.rucom-postedit-premium .rucom-postedit-preview{padding:21px 20px 24px}
.rucom-modal-card.rucom-postedit-premium button.rucom-modal-close{top:25px;right:22px}
@media(max-width:840px){
 .rucom-postedit-premium .rucom-postedit-head{padding-left:17px}
 .rucom-postedit-premium .rucom-postedit-headright{padding-left:13px;padding-right:62px}
 .rucom-postedit-premium .rucom-postedit-headtxt{gap:8px}
 .rucom-postedit-premium .rucom-postedit-head h3{font-size:18px}
}
@media(max-width:720px){
 .rucom-postedit-premium .rucom-postedit-head{display:flex;min-height:76px;padding:13px 17px}
 .rucom-postedit-premium .rucom-postedit-headright{display:none}
 .rucom-postedit-premium .rucom-postedit-preview>.rucom-postedit-previewhead{display:flex;flex-wrap:wrap}
 .rucom-postedit-premium .rucom-postedit-preview>.rucom-postedit-previewsub{display:block;font-size:11px;line-height:1.4;margin:2px 0 12px}
 .rucom-postedit-premium .rucom-postedit-fields,.rucom-postedit-premium .rucom-postedit-preview{padding:19px 17px}
 .rucom-modal-card.rucom-postedit-premium button.rucom-modal-close{top:17px;right:17px}
}

.rucom-pmenu{max-height:calc(100dvh - 16px);overflow-y:auto;overscroll-behavior:contain}

.rucom-pmenu-item .rucom-socialmark{flex:0 0 23px;width:23px;text-align:center;white-space:nowrap}

/* Integration HTML avancee - dialogue avec options et apercu dans le meme ecran. */
.rucom-embed-advanced-wrap{padding:12px;align-items:center;justify-content:center}
.rucom-embed-advanced-wrap .rucom-embed-advanced{width:min(1100px,calc(100vw - 28px));max-width:1100px;max-height:calc(100dvh - 28px);height:min(850px,calc(100dvh - 28px));padding:0;display:flex;flex-direction:column;overflow:hidden;border-radius:20px;background:var(--card,#fff);position:relative}
.rucom-ea-header{display:flex;align-items:center;justify-content:space-between;padding:22px 26px;border-bottom:1px solid var(--line);flex-shrink:0;gap:18px}
.rucom-ea-heading{display:flex;align-items:center;gap:14px;min-width:0;padding-right:52px}
.rucom-ea-headicon{width:44px;height:44px;display:grid;place-items:center;flex-shrink:0;border-radius:13px;color:var(--ru-accent,#1d5c8f);background:#eaf2fb}
.rucom-ea-headicon svg{width:23px;height:23px}
.rucom-ea-header h3{font-size:20px;font-weight:850;margin:0 0 4px;letter-spacing:-.025em}
.rucom-ea-header p{color:var(--muted);font-size:12.5px;margin:0;line-height:1.5}
.rucom-embed-advanced .rucom-modal-close{right:20px;top:19px;position:absolute;flex-shrink:0}
.rucom-ea-main{display:grid;grid-template-columns:43% 57%;min-height:0;flex:1}
.rucom-ea-config{overflow-y:auto;min-height:0;padding:18px 24px 22px;border-right:1px solid var(--line)}
.rucom-ea-config section{padding:12px 0 18px;border-bottom:1px solid var(--line)}
.rucom-ea-config section:first-child{padding-top:3px}
.rucom-ea-config section:last-child{border:0}
.rucom-ea-config h4{margin:0 0 7px;font-size:14px;font-weight:800}
.rucom-ea-config section>p{color:var(--muted);font-size:12px;margin:0 0 12px}
.rucom-ea-radio{display:grid;gap:7px}
.rucom-ea-radio label,.rucom-ea-check{display:flex;align-items:center;gap:10px;cursor:pointer;color:var(--ru-texte,#0e2438);font-size:13px;padding:7px 10px;border-radius:10px}
.rucom-ea-radio label:has(input:checked){background:#edf4fc;color:var(--ru-accent,#1d5c8f);font-weight:700}
.rucom-ea-config input[type=checkbox],.rucom-ea-config input[type=radio]{width:17px;height:17px;accent-color:var(--ru-accent,#1d5c8f);cursor:pointer;flex-shrink:0}
.rucom-ea-subfield{display:grid;gap:6px;font-weight:700;font-size:12px;margin-top:14px}
.rucom-ea-subfield[hidden]{display:none}
.rucom-ea-subfield select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card,#fff);color:var(--ru-texte,#0e2438);font-size:13px}
.rucom-ea-checks{display:grid;grid-template-columns:1fr 1fr;gap:4px 5px}
.rucom-ea-check{padding:9px 5px;align-items:flex-start;line-height:1.35}
.rucom-ea-preview-col{background:#f7f9fc;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:18px 22px}
.rucom-ea-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:0 0 13px}
.rucom-ea-preview-head h4{font-size:15px;margin:0 0 6px;display:flex;align-items:center;gap:9px;font-weight:800}
.rucom-ea-preview-head h4 svg{width:18px;height:18px;color:var(--ru-accent,#1d5c8f)}
.rucom-ea-preview-head small{color:#6b7b8d;font-size:12px;line-height:1.4;display:block}
.rucom-ea-status{white-space:nowrap;padding:6px 9px;background:#e6f6ec;color:#11743d;border-radius:30px;font-size:10.5px;font-weight:750}
.rucom-ea-status i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#11a653;margin-right:5px}
.rucom-ea-frame-box{flex:1;min-height:150px;overflow:hidden;background:#fff;border:1px solid #e2e8f0;border-radius:13px;box-shadow:0 4px 18px rgba(14,36,56,.05)}
.rucom-ea-iframe{border:0;width:100%;height:100%;display:block}
.rucom-ea-help{color:#65768a;font-size:11px;line-height:1.5;padding-top:9px}
.rucom-ea-footer{flex-shrink:0;display:flex;align-items:flex-end;gap:16px;border-top:1px solid var(--line);padding:15px 24px;background:var(--card,#fff)}
.rucom-ea-code-wrap{flex:1;min-width:0}
.rucom-ea-code-wrap label{display:block;font-size:11px;font-weight:800;margin-bottom:5px}
.rucom-ea-code-wrap .rucom-embed-code{resize:none;font-size:11px;line-height:1.4;height:57px;padding:8px}
.rucom-ea-copy{min-height:44px;white-space:nowrap}
@media(max-width:750px){
 .rucom-embed-advanced-wrap .rucom-embed-advanced{width:calc(100vw - 16px);max-height:calc(100dvh - 16px);height:calc(100dvh - 16px);border-radius:14px}
 .rucom-ea-header{padding:16px}.rucom-ea-header h3{font-size:17px}.rucom-ea-header p{font-size:11px}
 .rucom-ea-heading{padding-right:38px;gap:10px}.rucom-ea-headicon{width:36px;height:36px}
 .rucom-embed-advanced .rucom-modal-close{right:10px;top:14px}
 .rucom-ea-main{grid-template-columns:1fr;overflow-y:auto;display:block}
 .rucom-ea-config{overflow:visible;border-right:0;border-bottom:1px solid var(--line);padding:15px}
 .rucom-ea-preview-col{height:480px;overflow:hidden;padding:15px}
 .rucom-ea-footer{padding:10px 13px;gap:8px}.rucom-ea-copy{padding:9px 11px}
 .rucom-ea-copy span{font-size:12px}.rucom-ea-checks{grid-template-columns:1fr 1fr}
}

/* Parametres - harmonisation de la maquette validee. Ne change pas l'habillage global RU. */
.rucom-sset-title{padding-bottom:18px}
.rucom-sset{grid-template-columns:minmax(200px,245px) minmax(0,1fr);gap:16px}
.rucom-sset-side{border-radius:16px;top:16px;padding:8px}
.rucom-sset-navlist{gap:3px}
.rucom-sset-nav{min-height:48px;gap:11px;padding:9px 12px;font-weight:650;transition:background .15s}
.rucom-sset-nav .rucom-sset-ic{width:34px;height:34px;border-radius:10px;color:var(--ru-texte,#0e2438);background:transparent}
.rucom-sset-nav .rucom-sset-ic svg{width:20px;height:20px;stroke-width:1.8}
.rucom-sset-nav.rucom-on{background:var(--ru-accent-doux,rgba(29,92,143,.10));color:var(--ru-accent,#1d5c8f)}
.rucom-sset-nav.rucom-on .rucom-sset-ic{color:var(--ru-accent,#1d5c8f);background:transparent}
.rucom-sset-arr{margin-left:auto;flex:0 0 auto;display:flex;align-items:center;opacity:.45}
.rucom-sset-arr svg{width:15px;height:15px;transform:rotate(-90deg)}
.rucom-sset-head{padding:2px 3px 8px}
.rucom-sset-panel>.rucom-set-card{margin:0 0 14px}
.rucom-sset-panel .rucom-set-card{border:1px solid var(--line,rgba(14,36,56,.12));border-radius:16px;box-shadow:none}
.rucom-sset-account-card{padding:2px 16px}
.rucom-sset-detail{min-height:73px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line,rgba(14,36,56,.10));padding:13px 2px}
.rucom-sset-detail:last-child{border-bottom:0}
.rucom-sset-detail-icon{width:42px;height:42px;border-radius:50%;background:var(--soft,#f4f6f9);color:var(--ru-texte,#0e2438);flex:0 0 42px;display:flex;align-items:center;justify-content:center}
.rucom-sset-detail-icon svg{width:21px;height:21px;stroke-width:1.8}
.rucom-sset-detail-text{flex:1 1 190px;min-width:0}
.rucom-sset-detail-text b{display:block;font-weight:750;font-size:14px;color:var(--ru-texte,#0e2438)}
.rucom-sset-detail-text small{display:block;font-size:12px;color:var(--muted,#64748b);line-height:1.5;margin-top:4px}
.rucom-sset-detail-value{font-size:13px;color:var(--ru-texte,#0e2438);max-width:32%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}
.rucom-sset-mini{border:1px solid var(--line,rgba(14,36,56,.1));border-radius:9px;background:var(--soft,#f4f6f9);min-height:36px;min-width:80px;padding:7px 11px;cursor:pointer;font-weight:700;font-size:12px;color:var(--ru-accent,#1d5c8f)}
.rucom-sset-mini:hover{background:var(--ru-accent-doux,rgba(29,92,143,.1))}
.rucom-sset-email-panel{margin:14px 0;border:1px solid var(--ru-accent-doux,rgba(29,92,143,.16));border-radius:14px;padding:18px;background:var(--ru-accent-doux,rgba(29,92,143,.05))}
.rucom-sset-email-panel[hidden]{display:none}
.rucom-sset-email-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.rucom-sset-email-head .rucom-sset-detail-icon{background:var(--ru-accent,#1d5c8f);color:white;border-radius:12px}
.rucom-sset-email-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rucom-sset-email-form label{min-width:0;display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:750;color:var(--ru-texte,#0e2438)}
.rucom-sset-email-form input{box-sizing:border-box;min-height:43px;width:100%;border:1px solid var(--line,rgba(14,36,56,.16));border-radius:10px;padding:10px 12px;background:#fff;color:var(--ru-texte,#0e2438);font-size:14px}
.rucom-sset-email-form input:focus{outline:2px solid var(--ru-accent,#1d5c8f);outline-offset:1px}
.rucom-sset-email-password{margin-top:13px;max-width:390px}
.rucom-sset-email-bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-top:16px}
.rucom-sset-email-bottom p{display:flex;gap:7px;align-items:flex-start;font-size:12px;line-height:1.5;color:var(--ru-discret,#64748b);margin:0;max-width:510px}
.rucom-sset-email-bottom p svg{width:17px;height:17px;flex:0 0 17px;color:var(--ru-accent,#1d5c8f)}
.rucom-sset-email-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.rucom-sset-email-actions .rucom-btn{min-height:38px;white-space:nowrap}
.rucom-sset-email-msg{font-size:13px;line-height:1.5;margin-top:10px;color:var(--ru-accent,#1d5c8f)}
.rucom-sset-pending{display:flex;align-items:center;gap:9px;padding:12px 8px;color:var(--ru-accent,#1d5c8f);font-size:13px;overflow-wrap:anywhere}
.rucom-sset-pending svg{width:18px;height:18px;flex:0 0 18px}
.rucom-sset-quick{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}
.rucom-sset-quick .rucom-set-card{margin:0}
.rucom-sset-section-title{display:flex;align-items:center;gap:9px;padding:17px 16px 9px;color:var(--ru-texte,#0e2438)}
.rucom-sset-section-title h4{margin:0;font-size:15px;line-height:1.4}
.rucom-sset-section-title>svg{width:21px;height:21px;color:var(--ru-accent,#1d5c8f)}
.rucom-sset-panel .rucom-set-row{min-width:0;width:100%;box-sizing:border-box;gap:12px;border:none;background:none;text-align:left;color:var(--ru-texte,#0e2438);text-decoration:none;font-family:inherit}
.rucom-sset-panel .rucom-set-row + .rucom-set-row{border-top:1px solid var(--line,rgba(14,36,56,.08))}
.rucom-sset-panel .rucom-set-row>svg{width:20px;height:20px;min-width:20px}
.rucom-sset-panel .rucom-set-row div{flex:1;min-width:0}
.rucom-sset-panel .rucom-set-row b{font-size:13.5px;line-height:1.4}
.rucom-sset-panel .rucom-set-row small{font-size:12px;line-height:1.45;margin-top:3px}
.rucom-sset-pro-card{margin:14px 0!important}
.rucom-sset-error{padding:20px;color:var(--ru-texte,#0e2438)}
@media(max-width:1020px){.rucom-sset{grid-template-columns:210px minmax(0,1fr)}.rucom-sset-quick{grid-template-columns:1fr}.rucom-sset-email-bottom{flex-direction:column;align-items:stretch}.rucom-sset-email-actions{justify-content:flex-end}}
@media(max-width:760px){.rucom-sset{grid-template-columns:minmax(0,1fr)}.rucom-sset-side{position:static;overflow:hidden}.rucom-sset-navlist{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:4px;padding-bottom:3px;scrollbar-width:thin}.rucom-sset-nav{width:auto;flex:0 0 auto;padding:8px 10px;min-height:44px}.rucom-sset-nav .rucom-sset-ic{display:flex;width:24px;height:24px}.rucom-sset-nav .rucom-sset-ic svg{width:17px;height:17px}.rucom-sset-arr{display:none}.rucom-sset-email-fields{grid-template-columns:1fr}.rucom-sset-email-bottom{align-items:stretch}}
@media(max-width:520px){.rucom-sset-account-card{padding:2px 12px}.rucom-sset-detail{flex-wrap:wrap;gap:8px}.rucom-sset-detail-value{max-width:calc(100% - 98px);margin-left:50px;flex:1}.rucom-sset-detail-email{max-width:calc(100% - 145px)}.rucom-sset-detail-text{flex-basis:calc(100% - 56px)}.rucom-sset-mini{margin-left:auto}.rucom-sset-email-panel{padding:12px}.rucom-sset-email-actions{justify-content:stretch}.rucom-sset-email-actions button{flex:1}.rucom-sset-quick{grid-template-columns:1fr}}

/* Suppression d'une publication : etat reel pendant la requete (aucun succes anticipe). */
.rucom-post-deleting,.rucom-gcell.rucom-post-deleting{position:relative;pointer-events:none}
.rucom-post-deleting::after{content:"";position:absolute;inset:0;background:rgba(255,255,255,.70);z-index:30;border-radius:inherit}
.rucom-post-delete-state{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:31;background:var(--card,#fff);border:1px solid var(--line,#ddd);border-radius:999px;padding:10px 17px;color:var(--ink,#123);font-size:13px;font-weight:700;white-space:nowrap;box-shadow:0 5px 20px rgba(0,0,0,.08)}

@media (prefers-color-scheme:dark){.rucom-post-deleting::after{background:rgba(10,16,27,.60)}}

/* RU Community - profil : un point d'acces aux liens, panneau RU Link lateral.
   Garde la palette RU Design et ne redefinit aucun composant du fil. */
.rucom-prof .rucom-p-links-entry{padding:12px 28px 20px}
.rucom-prof .rucom-p-claim-entry{padding:8px 28px 0}
.rucom-p-links-trigger{appearance:none;border:1px solid var(--ru-accent-doux,#d8e9f8);background:var(--ru-accent-doux,#eaf3fc);color:var(--ru-accent-fonce,#174a73);display:inline-flex;align-items:center;gap:10px;min-height:42px;border-radius:12px;padding:8px 14px;font:inherit;font-size:13.5px;font-weight:750;cursor:pointer;transition:border-color .16s,background .16s;max-width:100%}
.rucom-p-links-trigger svg{width:18px;height:18px;flex:none}
.rucom-p-links-trigger svg:last-child{width:14px;height:14px;transform:rotate(-90deg)}
.rucom-p-links-trigger:hover,.rucom-p-links-trigger[aria-expanded=true]{border-color:var(--ru-accent,#1d5c8f);background:#dcecfb}
.rucom-p-links-trigger:focus-visible,.rucom-links-close:focus-visible,.rucom-links-filter:focus-visible,.rucom-links-item:focus-visible,.rucom-links-footer a:focus-visible{outline:3px solid var(--ru-accent,#1d5c8f);outline-offset:3px}
.rucom-profile-links-layer{position:fixed;inset:0;z-index:4000;background:rgba(14,36,56,.45);display:flex;justify-content:flex-end;align-items:stretch;color:var(--ru-texte,#0e2438)}
.rucom-profile-links-drawer{box-sizing:border-box;width:min(480px,100vw);height:100%;display:flex;flex-direction:column;background:#fff;box-shadow:-18px 0 48px rgba(14,36,56,.2);overflow:hidden;position:relative;animation:rucomLinksSlide .18s ease-out}
@keyframes rucomLinksSlide{from{transform:translateX(32px);opacity:.6}to{transform:translateX(0);opacity:1}}
.rucom-links-head{padding:14px 58px 10px 17px;border-bottom:1px solid rgba(14,36,56,.08);flex:none}
.rucom-links-heading{display:flex;gap:10px;align-items:flex-start}
.rucom-links-heading>svg{width:34px;height:34px;padding:8px;box-sizing:border-box;flex:none;border-radius:12px;background:var(--ru-accent-doux,#e9f3fd);color:var(--ru-accent,#1d5c8f)}
.rucom-links-heading h2{font-size:19px;font-weight:800;margin:0 0 4px;line-height:1.2;color:var(--ru-texte,#0e2438)}
.rucom-links-heading p{margin:0;color:#617186;line-height:1.3;font-size:12px}
.rucom-links-close{position:absolute;top:12px;right:12px;width:40px;height:40px;border:1px solid #e5eaf0;border-radius:50%;background:#fff;display:grid;place-items:center;color:var(--ru-texte,#0e2438);cursor:pointer}
.rucom-links-close svg{width:21px;height:21px}
.rucom-links-close:hover{background:#f0f5fa}
.rucom-links-member{margin:9px 16px 4px;padding:9px;display:flex;align-items:center;gap:12px;border-radius:14px;background:#f3f6f9;flex:none}
.rucom-links-member>.rucom-av{width:42px!important;height:42px!important;flex:none}
.rucom-links-member>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.rucom-links-member strong{font-size:14px;overflow-wrap:anywhere}
.rucom-links-member small{font-size:12px;color:#677789;overflow-wrap:anywhere}
.rucom-links-filters{display:flex;gap:5px;flex-wrap:wrap;padding:7px 16px 5px;flex:none}
.rucom-links-filter{appearance:none;border:1px solid #e0e8f1;background:#f6f8fb;color:var(--ru-texte,#0e2438);border-radius:999px;min-height:32px;padding:5px 9px;font-size:11.5px;font-weight:650;cursor:pointer}
.rucom-links-filter span{font-size:11px;color:inherit;opacity:.74;margin-left:3px}
.rucom-links-filter.rucom-on{background:var(--ru-accent,#1d5c8f);border-color:var(--ru-accent,#1d5c8f);color:var(--ru-sur-accent,#fff)}
.rucom-links-search-box{margin:5px 16px 7px;position:relative;display:flex;align-items:center;min-height:44px;border:1px solid #dce5ed;background:#f6f8fa;border-radius:10px;flex:none}
.rucom-links-search-box>svg{height:18px;width:18px;margin-left:13px;color:#75879a;flex:none}
.rucom-links-search-box .rucom-links-search{font:inherit;font-size:16px;border:0!important;outline:none!important;box-shadow:none!important;background:transparent!important;min-width:0;width:100%;height:42px;padding:0 10px;color:var(--ru-texte,#0e2438)}
.rucom-links-search-box:focus-within{border-color:var(--ru-accent,#1d5c8f)}
.rucom-links-list{min-height:0;overflow-y:auto;overscroll-behavior:contain;flex:1;padding:3px 16px 12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:6px}
.rucom-links-item{min-height:50px;display:flex;align-items:center;gap:7px;padding:5px 8px;box-sizing:border-box;border:1px solid #e3eaf2;border-radius:12px;text-decoration:none;color:var(--ru-texte,#0e2438);background:#fff}
.rucom-links-item:hover{background:#f1f7fe;border-color:var(--ru-accent,#1d5c8f);text-decoration:none}
.rucom-links-symbol{display:grid;place-items:center;height:34px;width:34px;flex:none;color:var(--ru-accent,#1d5c8f);background:var(--ru-accent-doux,#e8f3fc);border-radius:10px}
.rucom-links-symbol svg{width:20px;height:20px}
.rucom-links-item-text{display:flex;flex-direction:column;flex:1;min-width:0;gap:2px}
.rucom-links-item-text strong{font-size:12.5px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.rucom-links-item-text small{font-size:11px;color:#647589;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.rucom-links-out svg{width:17px;height:17px;color:var(--ru-accent,#1d5c8f)}
.rucom-links-empty{padding:24px;text-align:center;color:#677789;font-size:13.5px}
.rucom-links-footer{display:flex;flex-wrap:wrap;gap:7px;padding:9px 16px;box-shadow:0 -7px 22px rgba(14,36,56,.05);border-top:1px solid #e9eef3;flex:none}
.rucom-links-footer:empty{display:none}
.rucom-links-footer a{display:inline-flex;align-items:center;justify-content:center;gap:8px;flex:1 1 150px;min-height:40px;padding:8px;border:1px solid #e0e8f1;background:var(--ru-accent-doux,#ebf4fc);border-radius:10px;text-align:center;font-weight:700;font-size:12.5px;color:var(--ru-accent-fonce,#174a73);text-decoration:none}
.rucom-links-footer a svg{width:16px;height:16px;flex:none}
@media(max-width:999px){
  .rucom-links-list{grid-template-columns:1fr}
  .rucom-links-item{min-height:48px}
  .rucom-prof .rucom-p-links-entry,.rucom-prof .rucom-p-claim-entry{padding-left:16px;padding-right:16px}
  .rucom-profile-links-layer{align-items:flex-end}
  .rucom-profile-links-drawer{width:100%;height:min(90%,860px);border-radius:18px 18px 0 0;animation:rucomLinksRise .18s ease-out}
  @keyframes rucomLinksRise{from{transform:translateY(35px);opacity:.6}to{transform:translateY(0);opacity:1}}
  .rucom-links-head{padding:18px 64px 12px 16px}
  .rucom-links-heading h2{font-size:20px}
  .rucom-links-member{margin:10px 16px 4px}
  .rucom-links-filters{padding:8px 16px}
  .rucom-links-search-box{margin:5px 16px 8px}
  .rucom-links-list{padding:3px 16px 12px}
  .rucom-links-footer{padding:12px 16px max(12px,env(safe-area-inset-bottom))}
  .rucom-links-filter{min-height:44px}
}
/* Tiroir Mes liens, ordinateur : de vrais espaces libres en haut et en bas.
   La largeur et la liste deroulante restent inchangees.
   Evite egalement que l'entete passe sous la barre admin WordPress. */
@media(min-width:1000px){
  .rucom-profile-links-layer{box-sizing:border-box;padding:18px 0}
  body.admin-bar .rucom-profile-links-layer{padding-top:calc(18px + var(--wp-admin--admin-bar--height,32px))}
  .rucom-profile-links-drawer{height:auto;min-height:0;max-height:100%;border-radius:16px 0 0 16px}
}
@media(prefers-reduced-motion:reduce){.rucom-profile-links-drawer{animation:none}}
/* Conserver l'emplacement du fil mobile pendant l'ouverture du tiroir. */
html.rucom-links-lock.rucom-shell-mode .rucom-center{overflow:hidden!important}

/* Partage du profil : meme modalite RU Community, destinations externes explicites. */
.rucom-profile-share-wrap{z-index:4300}
.rucom-profile-share-card{max-width:620px;padding:0!important;overflow:auto;box-shadow:0 24px 65px rgba(14,36,56,.2)}
.rucom-profile-share-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:22px 24px 14px}
.rucom-profile-share-head h2{font-size:21px;color:var(--ru-texte,#0e2438);margin:0 0 5px;font-weight:800}
.rucom-profile-share-head p{margin:0;font-size:13px;line-height:1.45;color:#65768a}
.rucom-profile-share-close{border:1px solid #e4eaf0;background:#fff;border-radius:50%;height:42px;width:42px;display:grid;place-items:center;flex:none;cursor:pointer;color:var(--ru-texte,#0e2438)}
.rucom-profile-share-identity{display:flex;align-items:center;gap:12px;margin:0 24px 16px;padding:13px;background:#f4f7fb;border:1px solid #e8edf3;border-radius:12px}
.rucom-profile-share-identity>svg{width:44px;height:44px;color:var(--ru-accent,#1d5c8f)}
.rucom-profile-share-identity>div{min-width:0;display:flex;flex-direction:column;gap:4px}
.rucom-profile-share-identity strong{font-size:14px;color:var(--ru-texte,#0e2438)}
.rucom-profile-share-identity small{font-size:12px;color:#607189;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-profile-share-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0 24px}
.rucom-profile-share-target{display:flex;align-items:center;gap:10px;min-height:48px;background:#fff;border:1px solid #e0e7ef;border-radius:11px;padding:9px 12px;color:var(--ru-texte,#0e2438);text-decoration:none;font:inherit;text-align:left;cursor:pointer;box-sizing:border-box}
.rucom-profile-share-target:hover{background:var(--ru-accent-doux,#eaf3fc);border-color:var(--ru-accent,#1d5c8f);text-decoration:none;color:var(--ru-texte,#0e2438)}
.rucom-profile-share-target>span{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:8px;background:var(--ru-accent-doux,#eaf3fc);color:var(--ru-accent,#1d5c8f)}
.rucom-profile-share-target>span svg{height:17px;width:17px}
/* Pictogrammes des marques sociales : SVG Font Awesome Brands locaux, pas de CDN. */
.rucom-profile-share-target .rucom-share-brand{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:9px;background:#1d5c8f;overflow:hidden}
.rucom-profile-share-target .rucom-share-brand img{display:block;width:19px;height:19px;max-width:19px;max-height:19px;object-fit:contain;filter:none}
.rucom-profile-share-target .rucom-share-brand-facebook{background:#0866ff}
.rucom-profile-share-target .rucom-share-brand-x{background:#111}
.rucom-profile-share-target .rucom-share-brand-whatsapp{background:#25d366}
.rucom-profile-share-target .rucom-share-brand-linkedin{background:#0a66c2}
.rucom-profile-share-target .rucom-share-brand-telegram{background:#229ed9}
.rucom-profile-share-target .rucom-share-brand-reddit{background:#ff4500}
.rucom-profile-share-target .rucom-share-brand-bluesky{background:#0085ff}
.rucom-profile-share-target .rucom-share-brand-threads{background:#101010}
.rucom-profile-share-target .rucom-share-brand-discord{background:#5865f2}
.rucom-profile-share-target .rucom-share-brand-mail{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:9px;background:var(--ru-accent-doux,#eaf3fc);color:var(--ru-accent,#1d5c8f)}
.rucom-profile-share-target .rucom-share-brand-mail svg{width:18px;height:18px}
.rucom-profile-share-target strong{flex:1;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rucom-profile-share-target>svg{height:14px;width:14px;flex:none;color:#74869b}
.rucom-profile-share-note{margin:10px 24px;color:#667890;font-size:12px;line-height:1.4}
.rucom-profile-share-bottom{display:flex;align-items:center;gap:10px;padding:14px 24px 20px;border-top:1px solid #edf1f5}
.rucom-profile-share-url{display:flex;align-items:center;gap:8px;border:1px solid #e1e8f0;background:#f7f9fb;padding:10px 12px;border-radius:9px;flex:1;min-width:0;color:#53667e}
.rucom-profile-share-url svg{width:17px;height:17px;flex:none}
.rucom-profile-share-url span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.rucom-profile-share-bottom button{min-height:43px;flex:none;display:flex;align-items:center;gap:8px}
.rucom-profile-share-wrap :is(a,button):focus-visible{outline:3px solid var(--ru-accent,#1d5c8f);outline-offset:2px}
@media(max-width:600px){.rucom-profile-share-head{padding:16px 16px 10px}.rucom-profile-share-identity{margin:0 16px 12px}.rucom-profile-share-grid{padding:0 16px}.rucom-profile-share-note{margin:8px 16px}.rucom-profile-share-bottom{padding:12px 16px 20px;flex-wrap:wrap}.rucom-profile-share-bottom button{width:100%;justify-content:center}.rucom-profile-share-url{flex-basis:100%}}

/* Couverture photo sur telephone et tablette : respecter la largeur complete
   et ne pas couper les icones / textes de la source. */
@media(max-width:999px){
  /* Portrait/small screen: no clipping at the sides, even for non-3:1 covers. */
  .rucom-prof>.rucom-cover.rucom-cover--photo{height:auto;aspect-ratio:auto;min-height:0;overflow:hidden}
  .rucom-prof>.rucom-cover.rucom-cover--photo>img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;object-position:center}
  .rucom-ed-cover.rucom-ed-cover--photo{aspect-ratio:2.6 / 1}
}

/* Bouton de connexion dans la modale visiteur : centre le contenu, y compris en mobile. */
.rucom-loginp-card .rucom-ed-actions>a.rucom-btn{
  display:inline-flex;align-items:center;justify-content:center;text-align:center;line-height:1.25;
  box-sizing:border-box;min-height:44px
}
/* Recherche native des anciennes publications : memes champs pour les trois murs. */
.rucom-p-main{min-width:0}
.rucom-datebar{padding:12px 14px;margin-bottom:12px;border:1px solid var(--line,rgba(14,36,56,.12));border-radius:13px;background:#fff}
.rucom-datebar-heading{display:flex;align-items:center;gap:7px;margin-bottom:9px;font-size:13px;color:var(--ru-texte,#0e2438)}
.rucom-datebar-heading svg{width:17px;height:17px;color:var(--ru-accent,#1d5c8f)}
.rucom-datebar-controls{display:flex;align-items:end;flex-wrap:wrap;gap:8px}
.rucom-datebar-controls>label{display:flex;flex:1 1 136px;flex-direction:column;gap:4px;min-width:0;font-size:11.5px;font-weight:700;color:#536779}
.rucom-datebar-controls input,.rucom-datebar-controls select{box-sizing:border-box;width:100%;height:37px;padding:6px 8px;border:1px solid #dbe5ee;border-radius:9px;background:#fff;color:#0e2438;font:inherit;font-size:13px}
.rucom-datebar-controls>.rucom-btn{min-height:37px;white-space:normal;padding:7px 11px;font-size:12px;display:inline-flex;align-items:center;justify-content:center}
.rucom-p-archive[hidden]{display:none!important}
.rucom-p-archive-more,.rucom-sp-archive-more{text-align:center;margin:12px 0 20px}
.rucom-p-archive-more:empty,.rucom-sp-archive-more:empty{display:none}
@media(max-width:760px){
  .rucom-datebar{padding:10px;margin-bottom:10px}
  .rucom-datebar-controls>label{flex:1 1 calc(50% - 8px)}
  .rucom-datebar-controls>label:last-of-type{flex-basis:100%}
  .rucom-datebar-controls>.rucom-btn{flex:1 1 120px;min-height:42px}
}
/* Tiroir de liens sur telephone : reduire le chrome, agrandir la zone de lecture. */
@media(max-width:999px){
  /* Real mobile bottom sheet, deliberately shorter than the screen. */
  .rucom-profile-links-drawer{height:min(82dvh,710px);max-height:calc(100% - 24px);min-height:0;display:flex;flex-direction:column;overflow:hidden}
  .rucom-links-head{padding:12px 55px 9px 13px}
  .rucom-links-heading{align-items:center;gap:8px}
  .rucom-links-heading>svg{width:31px;height:31px;padding:7px}
  .rucom-links-heading h2{font-size:17px;margin:0 0 2px}
  .rucom-links-heading p{font-size:11px;line-height:1.25}
  .rucom-links-close{top:9px;right:11px;width:37px;height:37px}
  .rucom-links-member{margin:5px 12px 3px;padding:5px 8px;gap:8px}
  .rucom-links-member>.rucom-av{width:36px!important;height:36px!important}
  .rucom-links-member strong{font-size:12.5px}
  .rucom-links-member small{font-size:10.5px}
  .rucom-links-filters{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;gap:6px;padding:5px 12px 3px}
  .rucom-links-filter{flex:none;min-height:35px;font-size:11.5px;padding:5px 9px}
  .rucom-links-search-box{margin:5px 12px 3px;min-height:39px}
  .rucom-links-search-box .rucom-links-search{height:39px}
  .rucom-links-scroll-hint{padding:4px 14px 5px;flex:none;display:flex;align-items:center;gap:5px;font-size:11px;color:#5b7188}
  .rucom-links-scroll-hint svg{width:14px;height:14px;transform:rotate(90deg)}
  .rucom-links-list{display:flex;flex-direction:column;flex:1 1 auto;min-height:110px;overflow-y:auto!important;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#92b4d1 #eef3f7;padding:5px 12px 18px;gap:6px;touch-action:pan-y}
  .rucom-links-item{flex:0 0 auto;min-height:47px}
  .rucom-links-footer{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:8px 12px max(10px,env(safe-area-inset-bottom));box-shadow:0 -4px 16px rgba(14,36,56,.08)}
  .rucom-links-footer a{min-height:40px;min-width:0;flex:auto;font-size:11px;padding:5px 4px;gap:4px;line-height:1.15}
  .rucom-links-footer a svg{width:13px;height:13px}
}
@media(min-width:1000px){.rucom-links-scroll-hint{display:none}}

/* BARRE DU HAUT DU RESEAU (RU Design, 17 octobre 2026) : la barre de RU
   Design remplit la barre du haut de Community sur telephone ; elle garde
   son comportement (collee, se retire en descendant). */
.rucom-appbar.rucom-appbar--ru{display:block;padding:0;padding-top:env(safe-area-inset-top);min-height:0}
.rucom-appbar.rucom-appbar--ru .rud-barre{background:transparent}
.rucom-appbar--ru .rucom-badge-rel{position:relative}
/* Barre du Réseau (17 octobre 2026) : Messages en haut à droite, absent de la barre du bas. */
.rucom-appbar.rucom-appbar--ru .rud-barre-bt.rucom-badge-msg{display:grid;position:relative}
.rucom-appbar.rucom-appbar--ru .rud-barre-bt.rucom-badge-msg svg{width:26px;height:26px}
/* Le chiffre DANS l'icône (17 octobre 2026) : avec des messages non lus, la bulle
   devient le compteur (1, 12, 99+) et s'élargit avec le chiffre. Sans message : l'icône seule. */
.rucom-appbar.rucom-appbar--ru .rud-barre-bt.rucom-badge-msg[data-count]:not([data-count="0"]){width:auto;min-width:44px;padding:0 4px}
.rucom-appbar.rucom-appbar--ru .rud-barre-bt.rucom-badge-msg[data-count]:not([data-count="0"]) svg{display:none}
.rucom-appbar.rucom-appbar--ru .rud-barre-bt.rucom-badge-msg[data-count]:not([data-count="0"])::after{content:attr(data-aff);position:relative;top:auto;right:auto;left:auto;margin:0;
  min-width:28px;height:24px;padding:0 7px;box-sizing:border-box;border-radius:8px;display:grid;place-items:center;font-size:12.5px;font-weight:800;line-height:1;
  background:var(--ru-accent,#1d5c8f);color:#fff;box-shadow:none}
.rucom-appbar.rucom-appbar--ru .rud-barre-bt.rucom-badge-msg[data-count]:not([data-count="0"])::before{content:"";position:absolute;left:calc(50% - 9px);top:calc(50% + 9px);width:0;height:0;
  border-left:6px solid var(--ru-accent,#1d5c8f);border-bottom:6px solid transparent;z-index:1;background:none;box-shadow:none;border-radius:0}

/* Correctif design 7 (17 octobre 2026) : outils de la boite de publication au
   telephone. La barre d'outils (fichier, photo, video, sondage et quiz, emoji,
   apercu) porte la classe rucom-left, la meme que la colonne de gauche ; sous
   1000px, la regle du tiroir la sortait de l'ecran (position fixe, decalee a
   gauche). Ici elle reprend sa place dans le pied de la fenetre. */
.rucom-compose-row .rucom-left{display:flex;position:static;transform:none;transition:none;width:auto;max-width:none;
  top:auto;left:auto;bottom:auto;z-index:auto;background:none;box-shadow:none;border:0;margin:0;padding:0;
  overflow-x:auto;overflow-y:visible;min-width:0;visibility:visible}
/* Fenetre de publication ouverte : les boutons flottants (temoins, langue) ne
   couvrent pas ses outils. */
body:has(.rucom-cmpmodal) #ru-revoke-btn,body:has(.rucom-cmpmodal) #rutr-sw-float{display:none!important}
.rucom-compose-row .rucom-left>.rucom-ic{width:44px;height:44px;display:inline-grid;place-items:center}
.rucom-compose-row .rucom-left>.rucom-ic svg{width:22px;height:22px}
