/* CyberVision 24/7, couche d'effets dynamiques (maquette). Chargée uniquement par cybervision-dynamique.html */

/* ---- Barre de progression de défilement ---- */
.scroll-progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:400;background:linear-gradient(90deg,#e52d1b,#caf0fb);box-shadow:0 0 12px rgba(229,45,27,.7);transition:width .1s linear}

/* ---- Menu déroulant : items façon Overseas (liseré rouge + glissement) ---- */
.fx-page .drop-item{position:relative;overflow:hidden;transition:background .22s ease,transform .28s cubic-bezier(.2,.7,.2,1)}
.fx-page .drop-item::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:3px;background:var(--cv-red);transform:scaleY(0);transform-origin:top;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.fx-page .drop-item:hover{transform:translateX(6px)}
.fx-page .drop-item:hover::before{transform:scaleY(1)}
.fx-page .drop-item .di-ic{transition:background .3s ease,color .3s ease,border-color .3s ease}
.fx-page .drop-item:hover .di-ic{background:var(--cv-red);border-color:var(--cv-red);color:#fff}

/* ---- Logo image dans la nav ---- */
.nav-logo{align-self:center}
.nav-logo .logo-img{height:52px;width:auto;display:block}
@media(max-width:760px){.nav-logo .logo-img{height:42px}}
/* ---- Blason réel dans le footer (nom complet à côté) ---- */
.foot-logo .foot-mark{height:46px;width:auto;display:block}

/* ---- Hero : canvas réseau en fond + contenu au-dessus ---- */
.hero{position:relative}
.hero-fx{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.9}
.hero .container{position:relative;z-index:2}
.hero::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(120% 90% at 50% 0%,transparent 40%,rgba(0,10,29,.55) 100%)}

/* ---- Entrée échelonnée du hero : gérée par le système .reveal (site.js) via
   des délais posés par fx.js, pas d'opacity:0 en CSS pour rester robuste
   (onglet en arrière-plan, capture, impression). ---- */

/* ---- Accent hero : dégradé animé + halo ---- */
.hero h1 .ac{background:linear-gradient(100deg,#e52d1b,#ff7a52,#caf0fb,#e52d1b);background-size:280% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:acShift 7s ease-in-out infinite}
@keyframes acShift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}

/* ---- Pastille 24/7 : contour rouge, texte clair, changement au survol (DS + site actuel) ---- */
.fx-page .phone-pill{border-color:var(--cv-red);transition:background .35s ease,border-color .35s ease,color .35s ease}
.fx-page .phone-pill b{color:var(--lp-fg);font-style:normal}
.fx-page .phone-pill span{color:var(--lp-fg)}
.fx-page .phone-pill:hover{background:var(--cv-red);border-color:var(--cv-red)}
.fx-page .phone-pill:hover b,.fx-page .phone-pill:hover span{color:#fff}

/* ---- Boutons : le rouge reste rouge au survol (on ne bascule PAS vers le navy),
   + reflet lumineux qui balaie + légère montée. ---- */
.fx-page .btn,.fx-page .tab{position:relative;overflow:hidden}
.fx-page .btn::after,.fx-page .tab::after{content:"";position:absolute;top:0;left:-130%;width:55%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.4),transparent);transform:skewX(-18deg);pointer-events:none}
.fx-page .btn:hover,.fx-page .tab:hover{transform:translateY(-2px)}
.fx-page .btn:hover::after,.fx-page .tab:hover::after{animation:sheen .75s ease}
@keyframes sheen{to{left:145%}}
.fx-page .btn-primary:hover,
.fx-page .hero-btn:hover,
.fx-page .tab.on:hover{background:var(--cv-red);border-color:var(--cv-red);color:#fff;filter:brightness(1.08)}
/* Bouton fantôme du hero : remplissage cyan qui glisse depuis la gauche */
.hero-btn2::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--lp-hero-btn2-fg);transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.hero-btn2:hover::before{transform:scaleX(1)}
.hero-btn2:hover{color:#000a1d;border-color:var(--lp-hero-btn2-fg)}

/* ---- Stagger des grilles (cartes qui montent une par une) ---- */
@media(prefers-reduced-motion:no-preference){
  .fx-stagger>*{opacity:0;transform:translateY(26px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.7,.2,1)}
  .fx-stagger.in>*{opacity:1;transform:none}
}

/* ---- Cartes services (svc-card) : survol enrichi (halo qui suit la souris,
   icône qui se soulève, lien qui glisse, montée) ---- */
.fx-page .svc-card{position:relative;overflow:hidden}
.fx-page .svc-card::before{content:"";position:absolute;inset:0;z-index:0;opacity:0;transition:opacity .35s ease;background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%),rgba(229,45,27,.18),transparent 60%)}
.fx-page .svc-card:hover::before{opacity:1}
.fx-page .svc-card>*{position:relative;z-index:1}
.fx-page .svc-card:hover{border-color:var(--cv-red)}
.fx-page .svc-card .ic{transition:transform .4s cubic-bezier(.2,.7,.2,1),border-color .4s,color .4s}
.fx-page .svc-card:hover .ic{transform:translateY(-3px) scale(1.06);border-color:var(--lp-accent)}
.fx-page .svc-card .lnk{transition:transform .3s ease}
.fx-page .svc-card:hover .lnk{transform:translateX(4px)}

/* ---- Cartes "Pourquoi" (why-card) : survol enrichi (halo qui suit la souris,
   icône qui se soulève, bordure rouge, montée) ---- */
.fx-page .why-card{position:relative;overflow:hidden;transition:transform .4s cubic-bezier(.2,.7,.2,1),border-color .4s ease,box-shadow .4s ease}
.fx-page .why-card::before{content:"";position:absolute;inset:0;z-index:0;opacity:0;transition:opacity .35s ease;background:radial-gradient(180px circle at var(--mx,50%) var(--my,50%),rgba(229,45,27,.18),transparent 60%)}
.fx-page .why-card:hover::before{opacity:1}
.fx-page .why-card>*{position:relative;z-index:1}
.fx-page .why-card:hover{transform:translateY(-8px);border-color:var(--cv-red)}
.fx-page .why-card .ic{transition:transform .4s cubic-bezier(.2,.7,.2,1),box-shadow .4s ease}
.fx-page .why-card:hover .ic{transform:translateY(-3px) scale(1.08);box-shadow:0 8px 20px rgba(229,45,27,.4)}

/* ---- Cartes services : entrée latérale, colonne gauche depuis la gauche,
   droite depuis la droite (comme le site actuel) ---- */
.fx-cards-lr>*{opacity:0;transition:opacity .7s ease,transform .8s cubic-bezier(.2,.7,.2,1)}
.fx-cards-lr>*:nth-child(3n+1){transform:translateX(-80px)}
.fx-cards-lr>*:nth-child(3n+2){transform:translateY(48px)}
.fx-cards-lr>*:nth-child(3n){transform:translateX(80px)}
.fx-cards-lr.in>*{opacity:1;transform:none}
@media(max-width:1024px){
  .fx-cards-lr>*:nth-child(odd){transform:translateX(-70px)}
  .fx-cards-lr>*:nth-child(even){transform:translateX(70px)}
}
@media(prefers-reduced-motion:reduce){.fx-cards-lr>*{opacity:1!important;transform:none!important}}

/* ---- Bande impact : compteurs animés (inspiré des stats VARS) ---- */
.impact{background:var(--lp-bg-alt);position:relative;overflow:hidden}
.impact::before{content:"";position:absolute;inset:0;background:
  linear-gradient(rgba(202,240,251,.05) 1px,transparent 1px) 0 0/100% 46px,
  linear-gradient(90deg,rgba(202,240,251,.05) 1px,transparent 1px) 0 0/46px 100%;
  mask:radial-gradient(120% 100% at 50% 0%,#000,transparent 75%);pointer-events:none}
.impact .container{position:relative}
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:56px}
.stat-card{background:var(--lp-card);border:1px solid var(--lp-border);box-shadow:var(--lp-shadow);border-radius:24px;padding:40px 34px;text-align:center;transition:var(--cv-transition)}
.stat-card:hover{transform:translateY(-6px)}
.stat-num{font-family:var(--cv-font-heading);font-weight:800;font-size:clamp(44px,6vw,68px);line-height:1;color:var(--lp-accent);letter-spacing:-1px}
.stat-card:nth-child(2) .stat-num{color:var(--lp-num2)}
.stat-lbl{color:var(--lp-muted);font-size:15px;line-height:1.55;margin:16px 0 0;max-width:30ch;margin-left:auto;margin-right:auto}

/* ---- Marquee de confiance (défilement infini) ---- */
.trust{padding:0;background:var(--lp-footer-bg);border-top:1px solid var(--lp-footer-bd);border-bottom:1px solid var(--lp-footer-bd);overflow:hidden}
.trust-track{display:flex;gap:56px;width:max-content;padding:26px 28px;animation:marquee 30s linear infinite}
.trust:hover .trust-track{animation-play-state:paused}
.trust-item{display:inline-flex;align-items:center;gap:12px;color:rgba(255,255,255,.62);font-family:var(--cv-font-heading);font-weight:700;font-size:15px;letter-spacing:1.5px;text-transform:uppercase;white-space:nowrap}
.trust-item .d{width:7px;height:7px;border-radius:50%;background:#e52d1b;flex:none}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.trust-track{animation:none}}

/* ---- Parallaxe (JS pilote --py) ---- */
[data-parallax]{will-change:transform}

/* ---- Révélation du canvas désactivée si mouvement réduit ---- */
@media(prefers-reduced-motion:reduce){.hero-fx{display:none}.hero h1 .ac{animation:none}.fx-page .btn:hover::after,.fx-page .tab:hover::after{animation:none}}

/* ---- Mini effet au survol des liens du menu (style overseas) ---- */
.fx-page .nav-menu>li>a{position:relative}
.fx-page .nav-menu>li>a::before{content:"";position:absolute;left:14px;right:14px;bottom:6px;height:2px;background:var(--cv-red);transform:scaleX(0);transform-origin:left center;transition:transform .32s cubic-bezier(.2,.7,.2,1)}
.fx-page .nav-menu>li>a:hover::before,.fx-page .nav-menu>li.active>a::before{transform:scaleX(1)}
@media(max-width:1024px){.fx-page .nav-menu>li>a::before{display:none}}

/* ---- Prise de rendez-vous : calendrier (à relier à Calendly) ---- */
.book-card{display:grid;grid-template-columns:.8fr 1.2fr;padding:0;overflow:hidden}
.book-info{padding:44px;background:var(--lp-bg-alt);display:flex;flex-direction:column;justify-content:center}
.book-info h3{font-weight:800;font-size:24px;color:var(--lp-fg);margin:14px 0 12px}
.book-info p{color:var(--lp-muted);font-size:15px;line-height:1.6;margin:0 0 22px}
.book-meta{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.book-meta li{position:relative;padding-left:20px;color:var(--lp-fg);font-size:14px;font-weight:500}
.book-meta li::before{content:"";position:absolute;left:0;top:7px;width:7px;height:7px;border-radius:50%;background:var(--cv-red)}
.book-cal{padding:34px}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.cal-month{font-family:var(--cv-font-heading);font-weight:700;font-size:17px;color:var(--lp-fg)}
.cal-nav{width:38px;height:38px;border-radius:999px;border:1px solid var(--lp-border);background:transparent;color:var(--lp-fg);font-size:20px;line-height:1;cursor:pointer;transition:var(--cv-transition)}
.cal-nav:hover{border-color:var(--cv-red);color:var(--cv-red)}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;text-align:center;font-size:11px;font-weight:600;letter-spacing:.5px;color:var(--lp-faint);margin-bottom:8px}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-day{aspect-ratio:1;border:1px solid transparent;border-radius:12px;background:var(--lp-input-bg);color:var(--lp-fg);font-size:14px;font-family:var(--cv-font-sans);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .2s,background .2s,transform .2s}
.cal-day:hover{border-color:var(--cv-red);transform:translateY(-1px)}
.cal-day.empty{background:transparent;border:none;pointer-events:none}
.cal-day.off{opacity:.32;pointer-events:none}
.cal-day.sel{background:var(--cv-red);color:#fff;border-color:var(--cv-red)}
.cal-slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:20px 0}
.cal-hint{grid-column:1/-1;color:var(--lp-faint);font-size:13px;margin:6px 0}
.slot{padding:10px 6px;border:1px solid var(--lp-border);border-radius:10px;background:transparent;color:var(--lp-fg);font-size:13px;font-family:var(--cv-font-sans);cursor:pointer;transition:var(--cv-transition)}
.slot:hover{border-color:var(--cv-red)}
.slot.sel{background:var(--cv-red);color:#fff;border-color:var(--cv-red)}
#calConfirm{margin-top:4px}
#calConfirm[disabled]{opacity:.5;cursor:not-allowed}
@media(max-width:760px){.book-card{grid-template-columns:1fr}.cal-slots{grid-template-columns:repeat(3,1fr)}}
