/* Visuels « produit + interface » animés (lv-*) — V125 */
.lv{position:relative;width:100%;height:100%;min-height:280px;font-family:Inter,system-ui,sans-serif;color:#0b1220}
.lv *{box-sizing:border-box}
.lv-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(148,163,184,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.18) 1px,transparent 1px);background-size:24px 24px;-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 75%);mask-image:radial-gradient(ellipse at center,#000 30%,transparent 75%)}
.lv-ph{position:absolute;filter:drop-shadow(0 16px 20px rgba(11,18,32,.25))}
.lv-ph img{display:block;width:100%;height:auto}
.lv-dots{position:absolute;inset:0;pointer-events:none}
.lv-dots i{position:absolute;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:#22c55e;box-shadow:0 0 6px #22c55e;opacity:.25;transition:opacity .15s}
.lv-dots i.on{opacity:1}.lv-dots i.al{background:#e30613;box-shadow:0 0 8px #e30613;opacity:1}
.lv-p{position:absolute;background:#fff;border:1px solid #e6e9ef;border-radius:14px;box-shadow:0 18px 40px -22px rgba(11,18,32,.45);padding:12px 14px}
.lv-k{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:#64748b}
.lv-hd{display:flex;justify-content:space-between;align-items:center;gap:10px}
.lv-live{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;color:#15803d;white-space:nowrap}.lv-live i{width:7px;height:7px;border-radius:50%;background:#16a34a;animation:lvPing 1.6s infinite}
@keyframes lvPing{0%{box-shadow:0 0 0 0 rgba(22,163,74,.5)}80%,100%{box-shadow:0 0 0 7px rgba(22,163,74,0)}}
.lv-ex{position:absolute;left:12px;bottom:8px;font-size:10.5px;color:#94a3b8;z-index:3}
.lv-dark .lv-ex{color:rgba(255,255,255,.4)}
.lv-ports{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;margin-top:8px}
.lv-ports i{height:10px;border-radius:3px;background:#e2e8f0;transition:background .25s}
.lv-ports i.on{background:#22c55e}.lv-ports i.hi{background:#16a34a;box-shadow:0 0 8px rgba(34,197,94,.7)}.lv-ports i.up{background:#e30613}
.lv-big{font-family:'Bricolage Grotesque',Inter,sans-serif;font-weight:800;font-size:26px;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.lv-big small{font-family:Inter;font-size:12px;color:#5b6678;font-weight:600;margin-left:4px}
.lv-spark{width:100%;height:46px;display:block}
.lv-toast{position:absolute;right:16px;top:14px;display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #e6e9ef;border-radius:12px;padding:9px 12px;box-shadow:0 14px 30px -16px rgba(11,18,32,.45);font-size:12px;transform:translateY(-12px);opacity:0;transition:all .5s cubic-bezier(.34,1.56,.64,1);z-index:4}
.lv-toast.show{transform:none;opacity:1}.lv-toast .d{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-weight:800;color:#fff;font-size:12px;background:#16a34a;flex:none}
.lv-toast b{display:block;font-size:12.5px}.lv-toast small{color:#5b6678;font-size:11px}
.lv-call{display:flex;align-items:center;gap:10px;padding:9px;border-radius:10px}
.lv-call+.lv-call{margin-top:5px}.lv-call>div{min-width:0}
.lv-call .av{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;flex:none;font-size:12px;font-weight:800;color:#fff}
.lv-call b{display:block;font-size:13px}.lv-call small{display:block;font-size:11.5px;color:#5b6678;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lv-call.ring{background:#fff1f1;animation:lvIn .55s cubic-bezier(.16,.8,.3,1)}.lv-call.ring .av{background:#e30613;animation:lvRing 1s infinite}
@keyframes lvRing{0%{box-shadow:0 0 0 0 rgba(227,6,19,.45)}100%{box-shadow:0 0 0 12px rgba(227,6,19,0)}}
@keyframes lvIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
.lv-call.ok .av{background:#16a34a}.lv-call.wait .av{background:#94a3b8}
.lv-call .t{margin-left:auto;font-size:11.5px;font-weight:700;color:#5b6678;font-variant-numeric:tabular-nums;white-space:nowrap}.lv-call.ring .t{color:#e30613}
.lv-wave{display:inline-flex;gap:2px;align-items:center;height:14px;margin-left:auto}.lv-wave span{width:3px;border-radius:2px;background:#16a34a;animation:lvWv 1s ease-in-out infinite}
.lv-wave span:nth-child(2){animation-delay:-.2s}.lv-wave span:nth-child(3){animation-delay:-.4s}.lv-wave span:nth-child(4){animation-delay:-.6s}
@keyframes lvWv{0%,100%{height:4px}50%{height:14px}}
.lv-foot{display:flex;justify-content:space-between;align-items:center;margin-top:9px;padding-top:9px;border-top:1px solid #e6e9ef;font-size:11.5px;color:#5b6678}.lv-foot b{color:#0b1220;font-variant-numeric:tabular-nums}
.lv-map{position:absolute;left:0;top:6px;height:calc(100% - 12px)}
.lv-map .land{fill:#fff;stroke:#d7dde7;stroke-width:1.2}.lv-dark .lv-map .land{fill:#162038;stroke:#2c3a5c}
.lv-map .route{fill:none;stroke:#e30613;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:4 6;opacity:.35}
.lv-map .done{fill:none;stroke:#e30613;stroke-width:2.6;stroke-linecap:round}
.lv-map .city{fill:#94a3b8}.lv-map .hq{fill:#e30613}.lv-map .dst{fill:none;stroke:#e30613;stroke-width:1.5}
.lv-row{display:flex;justify-content:space-between;gap:10px;font-size:12.5px;margin-top:7px}.lv-row span{color:#5b6678}.lv-row b{font-variant-numeric:tabular-nums;text-align:right}
.lv-bar{height:6px;border-radius:9px;background:#eef1f5;margin-top:10px;overflow:hidden}.lv-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#ff8a91,#e30613);border-radius:9px;transition:width .3s}
.lv-term{position:absolute;background:#0b1220;border-radius:14px;overflow:hidden;box-shadow:0 18px 40px -20px rgba(11,18,32,.6)}
.lv-term .tb{display:flex;align-items:center;gap:6px;padding:9px 12px;background:#111a2e}
.lv-term .tb i{width:9px;height:9px;border-radius:50%;background:#ef4444}.lv-term .tb i:nth-child(2){background:#f59e0b}.lv-term .tb i:nth-child(3){background:#22c55e}
.lv-term .tb span{margin-left:8px;font-size:11px;color:#94a3b8;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lv-term pre{font-family:'JetBrains Mono',ui-monospace,Menlo,monospace;font-size:11.5px;line-height:1.65;color:#cbd5e1;padding:12px 14px;min-height:160px;white-space:pre-wrap;margin:0}
.lv-term .g{color:#4ade80}.lv-term .m{color:#64748b}
.lv-cur{display:inline-block;width:7px;height:13px;background:#cbd5e1;vertical-align:-2px;animation:lvBl 1s steps(2) infinite}@keyframes lvBl{50%{opacity:0}}
.lv-pb{display:block;height:6px;border-radius:9px;background:#1e293b;margin:6px 0;overflow:hidden}.lv-pb i{display:block;height:100%;width:0;background:#e30613}
.lv-badge{position:absolute;background:#16a34a;color:#fff;font-size:11.5px;font-weight:800;border-radius:999px;padding:5px 10px;box-shadow:0 10px 20px -8px rgba(22,163,74,.7);transform:scale(.6);opacity:0;transition:all .45s cubic-bezier(.34,1.56,.64,1);white-space:nowrap}
.lv-badge.show{transform:none;opacity:1}
.lv-gauge{display:block;width:100%;height:auto}
.lv-gauge .bg{fill:none;stroke:#eef1f5;stroke-width:12;stroke-linecap:round}.lv-gauge .fg{fill:none;stroke:url(#lvg);stroke-width:12;stroke-linecap:round}
.lv-feed .it{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid #f1f3f6;font-size:12px;animation:lvIn .5s cubic-bezier(.16,.8,.3,1)}
.lv-feed .it:last-child{border-bottom:0}.lv-feed .ic{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;flex:none;font-weight:800;font-size:12px;color:#fff}
.lv-feed b{display:block;font-size:12.5px}.lv-feed small{color:#5b6678;font-size:11px}
.lv-feed .tm{margin-left:auto;color:#94a3b8;font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}
.lv-cams{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}
.lv-cam{position:relative;aspect-ratio:16/10;border-radius:8px;overflow:hidden;background:linear-gradient(135deg,#1e293b,#334155)}
.lv-cam::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--x,30%) 70%,rgba(255,255,255,.18),transparent 45%),linear-gradient(180deg,transparent 60%,rgba(0,0,0,.35));animation:lvPan 8s ease-in-out infinite alternate}
@keyframes lvPan{to{--x:75%;filter:brightness(1.15)}}
.lv-cam span{position:absolute;left:6px;bottom:5px;font-size:9.5px;font-weight:700;color:#fff}
.lv-cam em{position:absolute;right:6px;top:5px;font-style:normal;font-size:9px;font-weight:800;color:#fff;display:flex;align-items:center;gap:4px}
.lv-cam em::before{content:"";width:6px;height:6px;border-radius:50%;background:#ef4444;animation:lvBl 1.2s steps(2) infinite}
.lv-cam b{position:absolute;left:6px;top:5px;font-size:9px;color:rgba(255,255,255,.75);font-weight:600;font-variant-numeric:tabular-nums}
.lv-lines .ln{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:7px 0;border-bottom:1px solid #f1f3f6;font-size:12px}.lv-lines .ln:last-child{border-bottom:0}
.lv-lines .ln small{color:#5b6678}.lv-lines .ln .bar{grid-column:1/-1;height:5px;border-radius:9px;background:#eef1f5;overflow:hidden}.lv-lines .ln .bar i{display:block;height:100%;background:linear-gradient(90deg,#7aa7ff,#1a5aff);border-radius:9px;transition:width 1.2s cubic-bezier(.16,.8,.3,1)}
.lv-tag{display:inline-block;font-size:10px;font-weight:800;padding:2px 7px;border-radius:999px;background:#eef2ff;color:#1a5aff}
.lv-st{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700}
.lv-st.ok{color:#15803d}.lv-st.run{color:#b45309}.lv-st.ok::before,.lv-st.run::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.lv-sky{position:absolute;inset:0;border-radius:inherit;overflow:hidden;background:radial-gradient(ellipse at 70% 0%,#1f2a52 0%,#0b1220 70%)}
.lv-sky i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;opacity:.6}
.lv-orbit{position:absolute;left:-10%;right:-10%;top:18%;height:120%;border:1px dashed rgba(255,255,255,.18);border-radius:50%}
.lv-sat{position:absolute;width:12px;height:12px;margin:-6px;border-radius:3px;background:#fff;box-shadow:0 0 12px #7aa7ff}
/* héros des pages solutions */
.lv-hero{position:relative;height:340px;border-radius:18px;overflow:hidden}
.lv-hero.lv-dark{background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.01));border:1px solid rgba(255,255,255,.08)}
.lv-hero .lv-grid{opacity:.5}
@media(max-width:900px){.lv-hero{height:320px}}
@media(max-width:560px){.lv-hero{height:300px}.lv-p.w46{width:62%!important}.lv-term{width:76%!important}}
@media (prefers-reduced-motion: reduce){.lv *{animation:none!important;transition:none!important}}
/* correctifs mobile / héritages */
.lv{text-align:left}
.lv-hero{min-height:300px}
.lv-call b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:560px){
 .lv-hero{height:320px!important}
 .lv-p.w46{width:66%!important;right:10px!important;top:12px!important}
 .lv-call{padding:7px}.lv-call+.lv-call{margin-top:3px}.lv-call .av{width:28px;height:28px}
 .lv-call:nth-child(3){display:none}
 .lv-call b{font-size:12px}.lv-call .t{font-size:10.5px}
 .lv-feed .it:nth-child(3){display:none}
 .lv-lines .ln:nth-child(4){display:none}
 .lv-k{font-size:9.5px;letter-spacing:.08em}
}
.sol-vis > div.lv-hero:first-child,.sol-vis > .lv-hero{aspect-ratio:auto!important;height:340px!important}
@media(max-width:560px){.sol-vis > div.lv-hero:first-child,.sol-vis > .lv-hero{height:320px!important}}
@media(max-width:560px){.lv-feed b,.lv-feed small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;max-width:150px}}
/* bandeau animé (pages complémentaires) */
.lv-band{background:#f6f7f9;padding:56px 24px;border-bottom:1px solid #eef1f5}
.lv-band-in{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:.8fr 1.2fr;gap:44px;align-items:center}
.lv-band-txt .eyb{font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:#c00510}
.lv-band-txt h2{font-family:'Bricolage Grotesque',Inter,sans-serif;font-weight:800;font-size:clamp(26px,2.6vw,38px);letter-spacing:-.02em;line-height:1.1;margin:10px 0 12px;color:#0b1220}
.lv-band-txt p{color:#5b6678;font-size:16px;line-height:1.6}
.lv-band-vis{position:relative;height:330px;border-radius:20px;background:linear-gradient(180deg,#fbfcfd,#f2f4f8);border:1px solid #e6e9ef;box-shadow:0 24px 48px -32px rgba(11,18,32,.3);overflow:hidden}
.lv-in{display:flex;align-items:center;gap:4px;margin-top:10px;padding:10px 12px;border:1px solid #e6e9ef;border-radius:10px;font-size:13px;font-weight:600;background:#fbfcfd;min-height:40px}
@media(max-width:900px){.lv-band{padding:40px 16px}.lv-band-in{grid-template-columns:1fr;gap:20px}.lv-band-vis{height:340px}}
@media(max-width:560px){.lv-band-vis>.lv-p[style*="grid-template-columns"]{grid-template-columns:1fr!important}.lv-band-vis>.lv-p>[style*="border-left"]{border-left:0!important;padding-left:0!important;border-top:1px solid #eef1f5;padding-top:8px}.lv-band-vis{height:auto;min-height:560px}.lv-band-vis[data-live="contact"],.lv-band-vis[data-live="secteur"],.lv-band-vis[data-live="chat"]{min-height:400px}.lv-band-vis[data-live="histoire"] .ev{grid-template-columns:1fr 1fr!important}}
/* V127 — pas de vide : bandeaux « panneau seul » en flux */
.lv-flow{height:auto!important;min-height:0!important}
.lv-flow>.lv-p{position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;width:auto!important;margin:20px 20px 30px}
.lv-sky{background:radial-gradient(ellipse at 70% 0%,#1f2a52 0%,#0b1220 75%)}
.lv-dark .lv-map .city{fill:#3e5280}
@media(max-width:560px){.lv-band-vis.lv-flow{min-height:0!important}}

@media(max-width:560px){.lv-sc-t{display:none}.lv-sc-b{transform:scale(1.45);transform-origin:left bottom}}
/* V128 — intégration : scène claire, cadres simplifiés, panneaux bornés, vraies images caméra */
.lv-hero{background:linear-gradient(180deg,#f8fafc,#eceff4)!important;border:1px solid rgba(255,255,255,.16)!important;box-shadow:0 30px 60px -30px rgba(0,0,0,.6)}
.lv-hero.lv-dark{background:none!important}
.lv-hero .lv-grid{opacity:.8}
.lv-hero>.lv-p{max-width:350px}
.lv-hero .lv-gauge{max-height:140px;display:block;margin:0 auto}
@media(min-width:1600px){.sol-vis > div.lv-hero:first-child,.sol-vis > .lv-hero{height:370px!important}}
.lv-ex{left:12px;bottom:10px;background:rgba(255,255,255,.88);border:1px solid #e3e7ee;border-radius:999px;padding:2px 9px;color:#64748b;z-index:6;line-height:1.5}
.lv-dark .lv-ex{background:rgba(11,18,32,.65);border-color:rgba(255,255,255,.12);color:rgba(255,255,255,.7)}
.lv-band-vis.lv-flow{background:none!important;border:0!important;box-shadow:none!important;overflow:visible}
.lv-band-vis.lv-flow>.lv-grid,.lv-band-vis.lv-flow>.lv-ex{display:none}
.lv-band-vis.lv-flow>.lv-p{margin:0!important;box-shadow:0 24px 48px -28px rgba(11,18,32,.3)}
.lv-cam-img{background:#0b1220}
.lv-cam-img::before{display:none}
.lv-cam-img .im{position:absolute;inset:-6%;background-size:cover;background-position:center;animation:lvCctv 14s ease-in-out infinite alternate}
.lv-cam-img .sl{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.14) 0 1px,transparent 1px 3px),linear-gradient(180deg,rgba(0,0,0,.35),transparent 30%,transparent 70%,rgba(0,0,0,.45))}
.lv-cam-img b,.lv-cam-img em,.lv-cam-img span{z-index:2;text-shadow:0 1px 2px rgba(0,0,0,.7);font-family:ui-monospace,Menlo,monospace;letter-spacing:.02em}
.lv-cam-img span{font-size:8.5px}
.lv-cam-img::after{content:"";position:absolute;left:30%;top:28%;width:30%;height:42%;border:1.5px solid #facc15;border-radius:2px;opacity:0;z-index:2;transition:opacity .2s}
.lv-cam-img.mv::after{opacity:1;animation:lvBl .6s steps(2) infinite}
@keyframes lvCctv{0%{transform:translateX(-3%)}100%{transform:translateX(3%)}}
@media(prefers-reduced-motion:reduce){.lv-cam-img .im{animation:none}}
.lv-hero>.lv-ph{max-width:calc(100% - min(54%,350px) - 44px)}
@media(max-width:560px){.lv-hero>.lv-ph{max-width:none}}
@media(max-width:560px){
.lv-hero>.lv-ph,.lv-hero>.lv-toast{display:none!important}
.sol-vis > div.lv-hero:first-child,.sol-vis > .lv-hero,.lv-hero{height:auto!important;min-height:0!important;padding:16px 14px 38px}
.lv-hero>.lv-p{position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;width:auto!important;max-width:none!important}
}
/* V129 — composition héros (JS fit) + héros IA/CRM */
.lv-hero>.lv-ph{max-width:none!important;filter:drop-shadow(0 12px 14px rgba(11,18,32,.2))}
.lv-hero>.lv-ph::after{content:"";position:absolute;left:10%;right:10%;bottom:-10px;height:16px;background:radial-gradient(ellipse at center,rgba(11,18,32,.22),transparent 70%);z-index:-1}
.lv-hero>.lv-ph[data-p="hikvision-ds-2cd2027g1"]::after{display:none}
.lv-h2{height:360px;width:100%}
.w.lv-w2{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center}
@media(max-width:900px){.w.lv-w2{grid-template-columns:1fr;gap:28px}}
@media(min-width:561px){.lv-hero>.lv-p{min-width:270px}}
.lv-h2 .ms{justify-content:flex-start}
.lv .ms{justify-content:flex-start!important}
/* V130 — compositions produit + écran : over / beam / mix */
.lv-over>.lv-p{z-index:5}
.lv-over>.lv-ph{z-index:2;filter:drop-shadow(0 22px 22px rgba(11,18,32,.32))!important}
.lv-beam{position:absolute;left:0;top:0;z-index:1;pointer-events:none}
.lv-beam .ln{fill:none;stroke:#e30613;stroke-opacity:.45;stroke-width:1.2;stroke-dasharray:4 6;animation:lvDash 1.2s linear infinite}
@keyframes lvDash{to{stroke-dashoffset:-20}}
.lv-mix::before{content:"";position:absolute;left:12%;top:18%;width:56%;height:70%;background:radial-gradient(closest-side,rgba(227,6,19,.16),rgba(227,6,19,0));z-index:0;animation:lvGlow 6s ease-in-out infinite;pointer-events:none}
@keyframes lvGlow{50%{opacity:.55;transform:scale(1.08)}}
.lv-mix>.lv-p{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .4s cubic-bezier(.2,.8,.2,1);animation:lvFl 7s ease-in-out infinite;box-shadow:0 30px 60px -24px rgba(11,18,32,.45)}
.lv-mix>.lv-ph{animation:lvFl 7s ease-in-out -3.5s infinite;transition:margin .4s;margin-left:var(--tx,0px)}
@keyframes lvFl{0%,100%{translate:0 -4px}50%{translate:0 5px}}
@media(prefers-reduced-motion:reduce){.lv-mix>.lv-p,.lv-mix>.lv-ph,.lv-mix::before{animation:none}}
.lv-orb{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.lv-orb polyline{fill:none;stroke:rgba(255,255,255,.22);stroke-width:1;stroke-dasharray:4 5;vector-effect:non-scaling-stroke}
.lv-ex{display:none!important}
/* V132 — bandeaux métiers : composition comme les héros */
.lv-band-vis.lv-bfit{height:400px}
.lv-bfit>.lv-p{width:min(52%,360px)!important;min-width:280px;right:auto}
@media(max-width:900px){.lv-band-vis.lv-bfit{height:400px}}
@media(max-width:560px){.lv-band-vis.lv-bfit{height:auto;min-height:420px}.lv-bfit>.lv-p{width:auto!important;min-width:0}}
@media(max-width:560px){
.lv-band-vis.lv-bfit{height:auto!important;min-height:0!important;padding:16px 14px 200px}
.lv-bfit>.lv-p{position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;width:auto!important;transform:none!important}
.lv-bfit>.lv-ph{transform:none!important}
}
@media(max-width:560px){
.lv-bfit>.lv-ph{left:50%!important;right:auto!important;top:auto!important;bottom:26px!important;transform:translateX(-50%) scale(1.35)!important;transform-origin:center bottom}
.lv-bfit>.lv-sc-b~.lv-sc-b{display:none!important}
}
