/* =========================================================================
   ESPACE SYNERGIES : UN UNIVERS PLEIN CADRE
   Canevas zoomable et déplaçable, commandes flottantes, fiche flottante,
   mini-carte, surimpression « Seul vs en synergie ». Voir js/fx-syn.js.
   ========================================================================= */

/* Navigation 3 niveaux dans l'en-tête principal (.hnav) */
.hnav a.is-here{color:var(--blue);font-weight:700}
.hnav-dd{position:relative;display:inline-flex;align-items:center}
.hnav-dd-btn{border:1px solid rgba(22,52,103,.14);background:#f4f8fa;color:var(--dark-blue);border-radius:50px;padding:6px 13px;font:700 .84rem Barlow,sans-serif;cursor:pointer;transition:all .22s}
.hnav-dd-btn:hover,.hnav-dd-btn[aria-expanded="true"]{background:var(--dark-blue);color:#fff;border-color:var(--dark-blue)}
.hnav-dd-menu{position:absolute;top:calc(100% + 10px);right:0;z-index:500;display:grid;grid-template-columns:1fr 1fr;gap:14px;width:min(540px,92vw);background:#fff;border:1px solid rgba(22,52,103,.12);border-radius:18px;padding:14px;box-shadow:0 24px 60px rgba(22,52,103,.2)}
.hnav-dd-menu[hidden]{display:none!important}
.hnav-dd-col{display:flex;flex-direction:column;gap:4px}
.hnav-dd-suite{border:0;background:#f0f6f8;color:var(--dark-blue);border-radius:10px;padding:7px 10px;font:800 .76rem Barlow,sans-serif;text-transform:uppercase;letter-spacing:.06em;text-align:left;cursor:pointer;margin-bottom:4px;transition:background .2s}
.hnav-dd-suite:hover{background:var(--blue);color:#fff}
.hnav-dd-item{display:flex;align-items:center;gap:8px;border:0;background:none;border-radius:9px;padding:6px 8px;text-align:left;font:600 .83rem Barlow,sans-serif;color:var(--dark-blue);cursor:pointer;transition:background .18s}
.hnav-dd-item:hover{background:#f0f6f8}
.hnav-dd-item em{margin-left:auto;font:800 .68rem Barlow,sans-serif;font-style:normal;color:#6b7d99;background:#eef3f7;padding:2px 6px;border-radius:50px}

.suitesec{display:none;position:relative}
.suitesec.nv-on{display:block}
.nv-k{display:inline-flex;align-items:center;gap:8px;font:800 .7rem Barlow,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--blue)}
.nv-k i{width:7px;height:7px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 4px rgba(19,180,226,.18)}

/* =========================================================================
   1. LE CADRE DE L'UNIVERS
   ========================================================================= */
.nv-work{position:relative;width:100%;height:100%;min-height:340px;border-radius:1.6rem;overflow:hidden;touch-action:none;
  border:1px solid rgba(22,52,103,.09);box-shadow:0 22px 60px rgba(22,52,103,.08);
  background:radial-gradient(circle at 16% 10%,rgba(19,180,226,.12),transparent 46%),
             radial-gradient(circle at 88% 88%,rgba(107,81,237,.10),transparent 48%),
             linear-gradient(180deg,#fcfefe 0%,#eff6fa 100%)}
/* trame de points : elle suit la caméra, l'espace paraît infini */
.nv-work::before{content:'';position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(22,52,103,.085) 1px,transparent 1.4px);
  background-size:var(--gs,26px) var(--gs,26px);background-position:var(--gx,0) var(--gy,0)}
.nv-sky{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab;touch-action:none;overflow:visible;
  -webkit-user-select:none;user-select:none}
.nv-sky.nv-grab{cursor:grabbing}
.nv-void{pointer-events:all}

/* plein écran : l'univers couvre la fenêtre, sans défilement */
body.nv-fs-lock{overflow:hidden}
.nv-work.nv-fs{position:fixed;inset:0;z-index:1200;border-radius:0;border:0;height:100vh;height:100dvh;overflow:hidden}

/* =========================================================================
   2. LE DESSIN (géométrie d'origine, inchangée)
   ========================================================================= */
.nv-syn .nv-hit{fill:none;stroke:transparent;stroke-width:18;cursor:pointer;pointer-events:stroke}
.nv-syn .nv-base{fill:none;stroke-width:2.5;opacity:.52;transition:opacity .3s,stroke-width .3s}
.nv-syn .nv-flow{fill:none;stroke-width:2.8;stroke-dasharray:3 13;stroke-linecap:round;opacity:.85;animation:nvFlow 1.6s linear infinite;pointer-events:none}
@keyframes nvFlow{to{stroke-dashoffset:-32}}
.nv-comet{offset-rotate:0deg;animation:nvComet 2.4s linear infinite;pointer-events:none;filter:drop-shadow(0 0 7px rgba(19,180,226,.75))}
@keyframes nvComet{from{offset-distance:0%}to{offset-distance:100%}}

/* pastilles de code avec bouton + intégré */
.nv-badge{cursor:pointer;outline:none}
.nv-badge .nv-bpill{fill:#fff;stroke:var(--fc);stroke-width:2.2;transition:all .26s cubic-bezier(.34,1.46,.64,1);transform-box:fill-box;transform-origin:center;filter:drop-shadow(0 4px 10px rgba(22,52,103,.1))}
.nv-badge .nv-bcode{font:800 10.2px Barlow,sans-serif;letter-spacing:.03em;fill:var(--fc);text-anchor:middle;pointer-events:none;transition:fill .26s}
.nv-badge .nv-bplus{fill:color-mix(in srgb,var(--fc) 14%,#fff);stroke:var(--fc);stroke-width:1.4;transition:all .26s}
.nv-badge .nv-bplus-t{font:800 11px Barlow,sans-serif;fill:var(--fc);text-anchor:middle;pointer-events:none;transition:fill .26s}
.nv-badge:hover .nv-bpill,.nv-badge.lit .nv-bpill,.nv-badge.on .nv-bpill,.nv-badge:focus-visible .nv-bpill{fill:var(--fc);transform:scale(1.12)}
.nv-badge:hover .nv-bcode,.nv-badge.lit .nv-bcode,.nv-badge.on .nv-bcode,.nv-badge:focus-visible .nv-bcode{fill:#fff}
.nv-badge:hover .nv-bplus,.nv-badge.lit .nv-bplus,.nv-badge.on .nv-bplus{fill:#fff;stroke:#fff}
.nv-badge:hover .nv-bplus-t,.nv-badge.lit .nv-bplus-t,.nv-badge.on .nv-bplus-t{fill:var(--fc)}

/* modules : anneau orbital, compteur d'interactions.
   Fondu d'arrivée en « backwards » et non « both » : sinon la transformation finale de
   l'animation gèle l'élément et le grossissement du module sélectionné ne s'applique pas. */
.nv-node{cursor:pointer;outline:none;animation:nvNodeIn .7s var(--d) cubic-bezier(.34,1.46,.64,1) backwards;
  transition:transform .45s cubic-bezier(.34,1.46,.64,1),opacity .3s,filter .3s}
@keyframes nvNodeIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.nv-node .nv-glow{fill:var(--c);opacity:0;filter:blur(13px);transition:opacity .35s}
.nv-node .nv-orbit{fill:none;stroke:var(--c);stroke-width:1.6;stroke-dasharray:7 9;opacity:.38;transform-box:fill-box;transform-origin:center;animation:nvOrbit 18s var(--od,0s) linear infinite;transition:opacity .3s,stroke-width .3s}
@keyframes nvOrbit{to{transform:rotate(360deg)}}
@keyframes nvOrbitInv{to{transform:rotate(-360deg)}}
@keyframes nvHalo{0%,100%{opacity:.16;r:var(--r0)}50%{opacity:.32}}
/* anneaux supplémentaires, invisibles tant que le module n'est pas sélectionné */
.nv-node .nv-halo,.nv-node .nv-ring2,.nv-node .nv-ring3{opacity:0;transition:opacity .4s;pointer-events:none}
.nv-node .nv-halo{fill:var(--c)}
.nv-node .nv-ring2,.nv-node .nv-ring3{fill:none;stroke:var(--c);transform-box:fill-box;transform-origin:center}
.nv-node .nv-ring2{stroke-width:2.2;stroke-dasharray:14 10;animation:nvOrbit 9s var(--od,0s) linear infinite}
.nv-node .nv-ring3{stroke-width:1.4;stroke-dasharray:3 12;stroke-linecap:round;animation:nvOrbitInv 14s var(--od,0s) linear infinite}
.nv-node .nv-disc{fill:#fff;stroke:var(--c);stroke-width:3;transition:all .35s;filter:drop-shadow(0 10px 18px rgba(22,52,103,.12))}
.nv-node .nv-tint{fill:var(--c);opacity:.08;transition:opacity .35s}
.nv-node .nv-num{font:800 9.5px 'Miriam Libre',sans-serif;fill:var(--c);text-anchor:middle;letter-spacing:.06em}
.nv-node .nv-ico{font-size:25px;text-anchor:middle}
.nv-node .nv-nm{font:700 12px 'Miriam Libre',sans-serif;fill:var(--dark-blue);text-anchor:middle}
.nv-node .nv-nm.sm{font-size:10.8px}
.nv-node:hover .nv-glow,.nv-node.lit .nv-glow,.nv-node:focus-visible .nv-glow{opacity:.42}
.nv-node:hover .nv-orbit,.nv-node.lit .nv-orbit{opacity:.9;stroke-width:2.3;animation-duration:6s}
.nv-node:hover .nv-disc,.nv-node:focus-visible .nv-disc{stroke-width:4.5}
.nv-node:hover .nv-tint,.nv-node.lit .nv-tint{opacity:.18}

/* bouton d'accès à la fiche, dans le cercle, sous le nom du module sélectionné */
.nv-openmod{opacity:0;pointer-events:none;transition:opacity .3s .1s}
.nv-openmod rect{fill:var(--c);filter:drop-shadow(0 3px 7px rgba(22,52,103,.3))}
.nv-openmod text{font:800 8px Barlow,sans-serif;fill:#fff;text-anchor:middle;pointer-events:none}
.nv-node.sel .nv-openmod{opacity:1;pointer-events:all;cursor:pointer}
.nv-node.sel .nv-openmod:hover rect{fill:var(--dark-blue)}

/* module sélectionné : il domine franchement la scène */
.nv-node.sel{transform:scale(1.16)}
.nv-node.sel .nv-glow{opacity:.62}
.nv-node.sel .nv-halo{opacity:.2;animation:nvPulse 2.6s ease-in-out infinite}
.nv-node.sel .nv-ring2{opacity:.75}
.nv-node.sel .nv-ring3{opacity:.95}
.nv-node.sel .nv-orbit{opacity:1;stroke-width:2.8;animation-duration:5s}
.nv-node.sel .nv-disc{stroke-width:5.5}
.nv-node.sel .nv-tint{opacity:.24}
.nv-node.sel .nv-nm{font-size:12.6px}
@keyframes nvPulse{50%{opacity:.4}}

.nv-ai{cursor:pointer;outline:none}
.nv-ai rect{fill:rgba(18,163,125,.08);stroke:rgba(18,163,125,.35);stroke-dasharray:5 6;transition:fill .3s}
.nv-ai text{font:700 13px Barlow,sans-serif;fill:#0e7d60;text-anchor:middle;letter-spacing:.04em;pointer-events:none}
.nv-ai:hover rect,.nv-ai:focus-visible rect{fill:rgba(18,163,125,.16)}
.nv-aidot{fill:#12a37d;animation:nvBlink 2.4s var(--d) ease-in-out infinite}
@keyframes nvBlink{50%{opacity:.25}}

/* Focus et contexte. Les modules en interaction gardent leur apparence normale :
   ce sont eux qu'on lit. Les modules sans interaction avec la sélection passent en
   gris sombre, assez pour sortir du champ sans disparaître, et le survol les rend. */
.nv-work.nv-hl .nv-syn:not(.lit),.nv-work.nv-hl .nv-badge:not(.lit){opacity:.07}
.nv-work.nv-hl .nv-node:not(.lit):not(.sel){filter:grayscale(.92) brightness(.62) contrast(.9);opacity:.65}
.nv-work.nv-hl .nv-node:not(.lit):not(.sel):hover,
.nv-work.nv-hl .nv-node:not(.lit):not(.sel):focus-visible{filter:none;opacity:1}
.nv-work.nv-hl .nv-ai{opacity:.28}
.nv-syn.lit .nv-base{opacity:1;stroke-width:4.4}
.nv-syn.lit .nv-flow{animation-duration:.7s;stroke-width:4.4;stroke-dasharray:3 11}
.nv-syn,.nv-badge,.nv-node,.nv-ai{transition:opacity .3s}
.nv-syn.off,.nv-badge.off{display:none!important}
.nv-fsyn.off{display:none!important}

/* =========================================================================
   3. COMMANDES FLOTTANTES (HUD)
   ========================================================================= */
.nv-hud{position:absolute;z-index:14;display:flex;gap:8px;pointer-events:none}
.nv-hud>*{pointer-events:auto}
.nv-hud-tl{top:12px;left:12px;align-items:center}
.nv-hud-tr{top:12px;right:12px;align-items:center}
/* décalé à gauche pour laisser passer la bulle Esker flottante, qui n'existe plus en plein écran */
.nv-hud-bl{bottom:12px;left:78px;flex-wrap:wrap;align-items:center;max-width:calc(100% - 262px)}
.nv-work.nv-fs .nv-hud-bl{left:12px;max-width:calc(100% - 196px)}
.nv-hud-br{bottom:12px;right:12px}

.nv-glass,.nv-ctx,.nv-cntbox,.nv-ib,.nv-zoom,.nv-scope,.nv-fams,.nv-searchbox,.nv-mini{
  background:rgba(255,255,255,.88);-webkit-backdrop-filter:blur(12px) saturate(1.4);backdrop-filter:blur(12px) saturate(1.4);
  border:1px solid rgba(22,52,103,.12);box-shadow:0 8px 24px rgba(22,52,103,.1)}

.nv-ctx{display:inline-flex;align-items:baseline;gap:8px;border-radius:50px;padding:6px 14px}
.nv-ctx b{font:700 .88rem 'Miriam Libre',sans-serif;color:var(--dark-blue)}
.nv-ctx em{font:700 .72rem Barlow,sans-serif;font-style:normal;color:var(--blue);text-transform:uppercase;letter-spacing:.09em}
.nv-cntbox{display:inline-flex;align-items:center;gap:5px;border-radius:50px;padding:6px 12px;font:600 .74rem Barlow,sans-serif;color:#5b6d8c}
.nv-cntbox i{font-style:normal;font-weight:800;color:var(--dark-blue)}

.nv-ib{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;
  font:700 1rem Barlow,sans-serif;color:var(--dark-blue);cursor:pointer;transition:all .22s;flex:none;line-height:1}
.nv-ib:hover{background:var(--dark-blue);color:#fff;border-color:var(--dark-blue);transform:translateY(-1px)}
.nv-ib.on{background:var(--blue);color:#fff;border-color:var(--blue)}
.nv-ib-fs.on{background:#d41920;border-color:#d41920;color:#fff}
.nv-zoom{display:inline-flex;align-items:center;gap:2px;border-radius:50px;padding:2px}
.nv-zoom .nv-ib{border:0;background:none;box-shadow:none;width:28px;height:28px}
.nv-zoom .nv-ib:hover{background:var(--dark-blue);color:#fff}
.nv-zoom i{font:800 .72rem Barlow,sans-serif;font-style:normal;color:#5b6d8c;min-width:42px;text-align:center}

/* périmètre : toutes par défaut, majeures en option */
.nv-scope{display:inline-flex;padding:3px;border-radius:50px}
.nv-scope-btn{border:0;background:none;cursor:pointer;padding:5px 12px;border-radius:50px;font:700 .76rem Barlow,sans-serif;color:var(--dark-blue);transition:all .22s;white-space:nowrap}
.nv-scope-btn.on{background:var(--blue);color:#fff;box-shadow:0 3px 10px rgba(19,180,226,.3)}

/* typologies */
.nv-fams{display:inline-flex;flex-wrap:wrap;gap:3px;padding:3px;border-radius:50px}
.nv-fam{display:inline-flex;align-items:center;gap:6px;border:0;background:none;border-radius:50px;padding:5px 11px;font:700 .75rem Barlow,sans-serif;color:var(--dark-blue);cursor:pointer;transition:all .22s;white-space:nowrap}
.nv-fam i{width:9px;height:9px;border-radius:50%;background:var(--fc);flex:none}
.nv-fam:hover{background:rgba(19,180,226,.12)}
.nv-fam.on{background:var(--dark-blue);color:#fff}
.nv-fam.on i{box-shadow:0 0 0 2px rgba(255,255,255,.45)}

.nv-searchbox{display:inline-flex;align-items:center;gap:4px;border-radius:50px;padding:2px}
.nv-searchbox .nv-ib{border:0;background:none;box-shadow:none;width:28px;height:28px;font-size:1.05rem}
.nv-search-in{border:0;background:none;outline:none;font:600 .78rem Barlow,sans-serif;color:var(--dark-blue);width:170px;padding:4px 10px 4px 0}
.nv-search-in[hidden]{display:none}

/* mini-carte : le filet, on ne se perd pas */
.nv-mini{width:136px;height:79px;border-radius:12px;overflow:hidden;cursor:pointer;padding:0}
.nv-mini svg{display:block;width:100%;height:100%}
.nv-mini-world{fill:rgba(19,180,226,.07);stroke:rgba(22,52,103,.16);stroke-width:5}
.nv-mini-vp{fill:rgba(19,180,226,.14);stroke:var(--dark-blue);stroke-width:2;vector-effect:non-scaling-stroke}

.nv-hint{position:absolute;z-index:13;left:50%;top:15px;transform:translateX(-50%);margin:0;max-width:52%;text-align:center;
  font:600 .74rem Barlow,sans-serif;color:#6b7d99;background:rgba(255,255,255,.76);border:1px solid rgba(22,52,103,.08);
  border-radius:50px;padding:5px 15px;pointer-events:none;transition:opacity .35s}
.nv-work.nv-hl .nv-hint{opacity:0}

/* =========================================================================
   4. FICHE FLOTTANTE (module sélectionné ou synergie sélectionnée)
   ========================================================================= */
.nv-float{position:absolute;z-index:20;top:56px;right:12px;width:min(368px,38%);max-height:calc(100% - 104px);display:flex}
.nv-float[hidden]{display:none}
.nv-fcard{width:100%;min-height:0;display:flex;flex-direction:column;gap:7px;border-radius:1.2rem;padding:13px 15px;
  background:rgba(255,255,255,.97);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  border:1px solid rgba(22,52,103,.12);border-top:4px solid var(--c,var(--fc,#13b4e2));
  box-shadow:0 26px 64px rgba(22,52,103,.24);animation:nvPop .34s cubic-bezier(.34,1.46,.64,1)}
@keyframes nvPop{from{opacity:0;transform:translateY(10px) scale(.985)}}
.nv-fhead{display:flex;align-items:flex-start;gap:9px}
.nv-fico{font-size:1.5rem;width:40px;height:40px;border-radius:12px;background:color-mix(in srgb,var(--c) 14%,#fff);display:inline-flex;align-items:center;justify-content:center;flex:none}
.nv-fttl{flex:1 1 auto;min-width:0}
.nv-fttl em{display:block;font:800 .66rem Barlow,sans-serif;font-style:normal;letter-spacing:.08em;text-transform:uppercase;color:#6b7d99;margin-bottom:2px}
.nv-fttl>b{display:block;font:700 1.02rem/1.2 'Miriam Libre',sans-serif;color:var(--dark-blue)}
.nv-fcode{display:inline-block;font:800 .68rem Barlow,sans-serif;color:#fff;background:var(--fc);border-radius:50px;padding:1px 7px;letter-spacing:.03em}
.nv-fx{flex:none;width:26px;height:26px;border-radius:50%;border:1px solid rgba(22,52,103,.14);background:#f7fafc;color:var(--dark-blue);font:700 .8rem Barlow,sans-serif;cursor:pointer;transition:all .2s}
.nv-fx:hover{background:#d41920;color:#fff;border-color:#d41920}
.nv-frole{margin:0;font-size:.82rem;color:#4a5d7e;line-height:1.4}
.nv-fcount{margin:0;font:600 .78rem Barlow,sans-serif;color:#5b6d8c}
.nv-fcount b{font-weight:800;color:var(--dark-blue)}
.nv-fpath{margin:0;font:700 .78rem Barlow,sans-serif;color:var(--dark-blue)}
.nv-fpath i{font-style:normal;color:var(--fc)}
.nv-fp{margin:0;font-size:.85rem;color:#4a5d7e;line-height:1.45}
.nv-ful{list-style:none;margin:0;padding:0;display:grid;gap:5px}
.nv-ful li{position:relative;padding-left:18px;font-size:.82rem;color:var(--dark-blue);line-height:1.4}
.nv-ful li::before{content:'';position:absolute;left:0;top:.42em;width:10px;height:10px;border-radius:50%;background:var(--fc);opacity:.85;box-shadow:inset 0 0 0 2.5px #fff}
.nv-fnote{margin:0;padding:8px 11px;border-radius:10px;background:#fff8e6;color:#7a5a12;font-size:.79rem;line-height:1.4}
.nv-fempty{margin:0;font-size:.82rem;color:#7a8aa6;font-style:italic}

.nv-flist{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px;scrollbar-width:thin;margin:0 -4px;padding:0 4px}
.nv-fgrp{display:flex;flex-direction:column;gap:4px}
.nv-fgrp small{font:800 .66rem Barlow,sans-serif;text-transform:uppercase;letter-spacing:.06em;color:#0978a6}
/* pastilles de codes : le détail est sur le schéma, la fiche n'en est que l'index */
.nv-fchips{display:flex;flex-wrap:wrap;gap:4px}
.nv-fsyn{display:inline-flex;align-items:center;gap:5px;border:1px solid rgba(22,52,103,.12);border-left:3px solid var(--fc);
  background:#f9fbfd;border-radius:8px;padding:3px 8px 3px 6px;cursor:pointer;font-family:Barlow,sans-serif;transition:all .18s}
.nv-fsyn em{font:800 .69rem Barlow,sans-serif;font-style:normal;color:var(--fc);letter-spacing:.02em}
.nv-fsyn i{font:800 .64rem Barlow,sans-serif;font-style:normal;color:#fff;background:#8494ad;border-radius:50px;padding:1px 5px}
.nv-fsyn:hover{background:#fff;border-color:var(--fc);transform:translateY(-1px);box-shadow:0 4px 10px rgba(22,52,103,.1)}
.nv-fsyn.lit{background:var(--fc);border-color:var(--fc)}
.nv-fsyn.lit em{color:#fff}
.nv-fsyn.lit i{background:rgba(255,255,255,.3)}
.nv-ftip{margin:2px 0 0;font:600 .71rem Barlow,sans-serif;color:#8494ad;line-height:1.35}

/* Pied de fiche : deux intentions séparées et nommées, jamais deux rangées jumelles.
   Rester dans l'univers sur un module, ou en sortir pour sa fiche produit. */
.nv-facts{display:flex;flex-wrap:wrap;gap:7px;padding-top:4px}
.nv-facts--deux{flex-direction:column;gap:8px;align-items:stretch}
.nv-fact-grp{display:flex;flex-direction:column;gap:4px}
.nv-fact-grp small{font:800 .64rem Barlow,sans-serif;text-transform:uppercase;letter-spacing:.06em;color:#6b7d99}
.nv-fact-row{display:flex;flex-wrap:wrap;gap:6px}
.nv-fpick{display:inline-flex;align-items:center;gap:5px;border:1px solid rgba(22,52,103,.16);background:#f9fbfd;border-radius:50px;padding:5px 12px;font:700 .75rem Barlow,sans-serif;color:var(--dark-blue);cursor:pointer;transition:all .2s}
.nv-fpick:hover{background:var(--c);color:#fff;border-color:var(--c)}

/* retour à la fiche d'où l'on vient : on ne perd pas le fil */
.nv-fback{align-self:flex-start;display:inline-flex;align-items:center;border:1px solid rgba(22,52,103,.16);background:#f0f6f8;
  color:var(--dark-blue);border-radius:50px;padding:4px 12px;font:700 .74rem Barlow,sans-serif;cursor:pointer;transition:all .2s}
.nv-fback:hover{background:var(--dark-blue);color:#fff;border-color:var(--dark-blue)}

/* sélection multiple : les modules retenus et le choix des liens montrés */
.nv-fmods{display:flex;flex-wrap:wrap;gap:5px}
.nv-fmod{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--c);border-left-width:3px;background:color-mix(in srgb,var(--c) 9%,#fff);
  border-radius:9px;padding:4px 6px 4px 9px;font:700 .76rem Barlow,sans-serif;color:var(--dark-blue)}
.nv-fmod-x{border:0;background:none;color:#8494ad;font:700 .72rem Barlow,sans-serif;cursor:pointer;padding:0 2px;line-height:1}
.nv-fmod-x:hover{color:#d41920}
.nv-fseg{display:flex;padding:3px;border-radius:50px;background:#f0f6f8;border:1px solid rgba(22,52,103,.1)}
.nv-fseg button{flex:1 1 auto;border:0;background:none;cursor:pointer;padding:5px 10px;border-radius:50px;font:700 .73rem Barlow,sans-serif;color:var(--dark-blue);transition:all .22s}
.nv-fseg button.on{background:var(--blue);color:#fff;box-shadow:0 3px 10px rgba(19,180,226,.3)}
.nv-fmulti{border-top:1px dashed rgba(22,52,103,.12);padding-top:6px;margin-top:2px}
.nv-fbtn{display:inline-flex;align-items:center;gap:7px;border-radius:50px;padding:8px 14px;font:700 .79rem Barlow,sans-serif;cursor:pointer;transition:all .26s;border:1px solid transparent}
.nv-fbtn.solid{background:var(--dark-blue);color:#fff}
.nv-fbtn.solid:hover{background:var(--c,var(--blue));transform:translateY(-2px)}
.nv-fbtn.ghost{background:#fff;color:var(--dark-blue);border-color:rgba(22,52,103,.16)}
.nv-fbtn.ghost:hover{border-color:var(--purple-rain,#6b51ed);color:var(--purple-rain,#6b51ed)}

/* infobulle de survol */
.nv-tip{position:absolute;z-index:30;transform:translate(-50%,calc(-100% - 16px));max-width:320px;width:max-content;background:var(--dark-blue);color:#fff;border-radius:14px;padding:11px 14px;box-shadow:0 18px 40px rgba(22,52,103,.32);pointer-events:none;animation:nvTip .22s cubic-bezier(.23,1,.32,1)}
.nv-tip::after{content:'';position:absolute;left:50%;bottom:-6px;width:12px;height:12px;margin-left:-6px;background:var(--dark-blue);transform:rotate(45deg)}
.nv-tip.below{transform:translate(-50%,18px)}
.nv-tip.below::after{bottom:auto;top:-6px}
.nv-tip em{display:block;font:800 .66rem Barlow,sans-serif;letter-spacing:.1em;text-transform:uppercase;font-style:normal;color:#8fe6ff;margin-bottom:3px}
.nv-tip b{display:block;font:700 .92rem 'Miriam Libre',sans-serif;margin-bottom:4px}
.nv-tip span{display:block;font-size:.81rem;opacity:.9;line-height:1.4}
.nv-tip-cta{display:block;margin-top:6px;padding-top:5px;border-top:1px solid rgba(255,255,255,.15);font-size:.72rem;color:#8fe6ff}
@keyframes nvTip{from{opacity:0;margin-top:6px}}

/* =========================================================================
   5. SURIMPRESSION « SEUL VS EN SYNERGIE »
   ========================================================================= */
.nv-sheet{position:absolute;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:14px;
  background:rgba(236,243,247,.74);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);animation:nvFade .25s}
.nv-sheet[hidden]{display:none}
@keyframes nvFade{from{opacity:0}}
.nv-sheet-box{width:min(1120px,100%);max-height:100%;overflow-y:auto;scrollbar-width:thin;display:flex;flex-direction:column;gap:12px;
  background:#fff;border:1px solid rgba(22,52,103,.12);border-top:5px solid var(--c,var(--blue));border-radius:1.4rem;
  padding:16px 20px 18px;box-shadow:0 30px 80px rgba(22,52,103,.3);animation:nvPop .3s cubic-bezier(.34,1.46,.64,1)}
.nv-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.nv-sheet-head h4{font:700 1.14rem 'Miriam Libre',sans-serif;color:var(--dark-blue);margin:6px 0 0}
.nv-sheet-foot{display:flex;flex-wrap:wrap;gap:8px}

.nv-st-tabs{display:flex;flex-wrap:wrap;gap:5px}
.nv-st-tab{display:inline-flex;align-items:center;gap:6px;border:1.5px solid rgba(22,52,103,.1);background:#f8fbfd;border-radius:50px;padding:4px 11px 4px 5px;cursor:pointer;font-family:Barlow,sans-serif;transition:all .2s}
.nv-st-tab .nv-st-ico{font-size:1rem;width:24px;height:24px;border-radius:50%;background:color-mix(in srgb,var(--c) 15%,#fff);display:inline-flex;align-items:center;justify-content:center;flex:none}
.nv-st-tab b{font:800 .74rem Barlow,sans-serif;color:var(--dark-blue)}
.nv-st-tab:hover{border-color:var(--c);background:#fff}
.nv-st-tab.on{background:var(--c);border-color:var(--c)}
.nv-st-tab.on b{color:#fff}
.nv-st-tab.on .nv-st-ico{background:rgba(255,255,255,.3)}

.nv-st-duel{display:grid;grid-template-columns:minmax(0,1fr) 68px minmax(0,1.15fr);gap:12px;align-items:stretch}
.nv-st-side{border-radius:16px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.nv-st-side.solo{background:#f8fafc;border:1px solid rgba(22,52,103,.1)}
.nv-st-side.syn{background:linear-gradient(145deg,#f0f9ff 0%,#eef6ff 100%);border:1.5px solid rgba(19,180,226,.35)}
.nv-st-shead h5{font:700 .96rem 'Miriam Libre',sans-serif;color:var(--dark-blue);margin:5px 0 0}
.nv-st-badge{display:inline-block;font:800 .66rem Barlow,sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:3px 10px;border-radius:50px}
.nv-st-badge.solo{background:#e2e8f0;color:#1e293b}
.nv-st-badge.syn{background:var(--blue);color:#fff}
.nv-st-list{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.nv-st-list li{background:#fff;border:1px solid rgba(22,52,103,.07);border-radius:11px;padding:8px 12px;font-size:.83rem;color:var(--dark-blue);line-height:1.42}
.nv-st-list li b{display:block;font:800 .83rem Barlow,sans-serif;color:var(--dark-blue);margin-bottom:2px}
.nv-st-list li span{color:#4a5d7e;font-size:.81rem}
.nv-st-limit{margin-top:auto;background:#fff8e6;border:1px dashed #e6b84d;border-radius:11px;padding:8px 11px;font-size:.78rem;color:#7a5a12;line-height:1.4}
.nv-st-upsell{margin-top:auto;background:#eef0ff;border:1px solid rgba(107,81,237,.3);border-radius:11px;padding:9px 12px;font-size:.8rem;color:#3b2d8a;line-height:1.42}
.nv-st-bridge{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center}
.nv-st-bcircle{width:48px;height:48px;border-radius:50%;color:#fff;font:800 1rem 'Miriam Libre',sans-serif;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 24px rgba(22,52,103,.2)}
.nv-st-bridge span{font:800 .66rem/1.2 Barlow,sans-serif;text-transform:uppercase;letter-spacing:.06em;color:#5b6d8c}
.nv-st-flows{display:flex;flex-direction:column;gap:7px;padding-top:2px}
.nv-st-fgrp small{display:block;font:800 .68rem Barlow,sans-serif;text-transform:uppercase;letter-spacing:.05em;color:#0978a6;margin-bottom:4px}
.nv-st-fpills{display:flex;flex-wrap:wrap;gap:5px}
.nv-st-pill{display:inline-flex;align-items:center;gap:5px;border:1px solid rgba(22,52,103,.12);background:#fff;border-radius:50px;padding:3px 9px;font:600 .72rem Barlow,sans-serif;color:var(--dark-blue);cursor:pointer;transition:all .18s}
.nv-st-pill em{font:800 .66rem Barlow,sans-serif;font-style:normal;color:#fff;background:var(--fc);padding:1px 6px;border-radius:50px}
.nv-st-pill:hover{border-color:var(--fc);transform:translateY(-1px)}
.nv-st{font-style:normal;font-weight:800;font-size:.68rem;letter-spacing:.03em;padding:2px 8px;border-radius:50px}
.nv-st.ok{background:#e3f9ec;color:#167a45}.nv-st.cfg{background:#eef0ff;color:#4a3bb0}.nv-st.soon{background:#fff3d6;color:#8a6200}

/* =========================================================================
   6. RESTE DE L'ESPACE SUITES (rail, vol des modules, roue)
   ========================================================================= */
.nv-rail{display:flex;gap:8px;overflow-x:auto;padding:12px 2px 10px;scrollbar-width:thin}
.nv-pill{flex:1 0 150px;display:flex;align-items:center;gap:10px;text-align:left;border:1px solid rgba(22,52,103,.1);background:#fff;border-radius:14px;padding:9px 12px;cursor:pointer;font-family:Barlow,sans-serif;position:relative;overflow:hidden;animation:nvNodeIn .5s var(--d) cubic-bezier(.34,1.46,.64,1) both;transition:all .3s cubic-bezier(.34,1.46,.64,1)}
.nv-pill::after{content:'';position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--c);transform:scaleX(0);transform-origin:left;transition:transform .4s}
.nv-pill .ic{font-size:1.25rem;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--c) 12%,#fff);flex:none}
.nv-pill b{display:block;font:700 .88rem 'Miriam Libre',sans-serif;color:var(--dark-blue)}
.nv-pill-acr{font:800 .68rem Barlow,sans-serif;font-style:normal;color:var(--c);opacity:.85;margin-left:3px}
.nv-pill small{display:block;font-size:.72rem;color:#7a8aa6;line-height:1.25}
.nv-pill:hover{transform:translateY(-2px);border-color:var(--c)}
.nv-pill:hover::after,.nv-pill.on::after{transform:none}
.nv-pill.on{border-color:var(--c);box-shadow:0 10px 26px rgba(22,52,103,.12);background:#fbfdff}
.nv-pill.soon{opacity:.7}

.nv-ghost{position:fixed;z-index:900;width:68px;height:68px;border-radius:50%;background:#fff;border:3px solid var(--c);box-shadow:0 14px 34px rgba(22,52,103,.25),0 0 0 8px color-mix(in srgb,var(--c) 18%,transparent);display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;will-change:transform}
.nv-ghost span{font-size:24px;line-height:1}
.nv-ghost b{position:absolute;top:100%;margin-top:6px;white-space:nowrap;font:700 .78rem Barlow,sans-serif;color:var(--dark-blue);background:#fff;border-radius:50px;padding:2px 8px;box-shadow:0 4px 12px rgba(22,52,103,.15)}
.nv-veil{position:fixed;inset:0;z-index:850;background:radial-gradient(circle at 50% 45%,rgba(240,246,248,.75),rgba(240,246,248,.97));opacity:0;pointer-events:none;transition:opacity .35s cubic-bezier(.23,1,.32,1)}
.nv-veil.on{opacity:1}
#bigWheel.nv-pick .seg{transition:opacity .25s,filter .25s,transform .35s cubic-bezier(.34,1.46,.64,1)}
#bigWheel.nv-pick-S2P .seg:not([data-suite="S2P"]),#bigWheel.nv-pick-O2C .seg:not([data-suite="O2C"]){opacity:.15;filter:saturate(.2)}
#bigWheel.nv-pick-S2P .seg[data-suite="S2P"],#bigWheel.nv-pick-O2C .seg[data-suite="O2C"]{transform:translate(var(--tx),var(--ty))}
.suitegrp{cursor:pointer;outline:none}
.suitegrp .suitehint{opacity:0;transition:opacity .3s}
.suitegrp:hover .suitehint,.suitegrp:focus-visible .suitehint{opacity:1}
.suitegrp:hover .suitearc-base,.suitegrp:focus-visible .suitearc-base{stroke-width:5.2;opacity:1}
.suitegrp:focus-visible .suitelab text{fill:var(--blue)}

/* =========================================================================
   7. ADAPTATION
   ========================================================================= */
@media(max-width:1180px){
  .nv-fam span{display:none}
  .nv-fam{padding:5px 8px}
  .nv-fam.on span{display:inline}
  .nv-hint{display:none}
}
@media(max-width:980px){
  .nv-float{width:min(340px,54%)}
  .nv-st-duel{grid-template-columns:1fr}
  .nv-st-bridge{flex-direction:row;padding:4px 0}
  .nv-mini{width:120px;height:70px}
}
@media(max-width:900px){
  .nv-work{height:76vh;min-height:420px}
  .hnav-dd-menu{grid-template-columns:1fr}
}
@media(max-width:640px){
  .nv-float{top:52px;left:10px;right:10px;width:auto;max-height:52%}
  .nv-hud-bl{max-width:calc(100% - 24px)}
  .nv-hud-br{display:none}
  .nv-pill{flex-basis:130px}
}
@media(prefers-reduced-motion:reduce){
  .nv-node,.nv-pill,.nv-node .nv-orbit,.nv-syn .nv-flow,.nv-aidot,.nv-comet{animation:none}
}
