/* Original r7 motion scenes. The shared lifecycle observer pauses both scene and dashboard. */
.batch-sources{margin:30px 0;padding:24px;border:1px solid #c5ff6128;border-radius:20px}.batch-sources h2{font-size:1.2rem!important}.batch-sources p{font-size:.85rem!important}.batch-mini{animation:batchMini 5s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.batch-dash{stroke-dasharray:15 12;animation:batchDash 4s linear infinite}.psm-wheel{animation:batchWheel 3s linear infinite}.psm-crate{animation:psmCarry 10s ease-in-out infinite}.psm-fill{animation:psmFill 9s ease-in-out infinite}.psm-gauge{transform-origin:center bottom!important;animation:psmGauge 7s ease-in-out infinite}.geo-scan{animation:geoScan 5s ease-in-out infinite alternate}.geo-radar{animation:batchWheel 8s linear infinite}.geo-answer{animation:geoAnswer 7s ease-in-out infinite}.geo-citation{animation:geoCitation 8s ease-in-out infinite}.geo-orbit{animation:geoOrbit 15s ease-in-out infinite}.geo-packet{animation:geoPacket 10s ease-in-out infinite}.well-ring{animation:wellRing 8s ease-out infinite}.well-steam{animation:wellSteam 7s ease-in-out infinite}.well-breathe{animation:wellBreathe 9s ease-in-out infinite}.well-leaf{animation:wellLeaf 14s ease-in-out infinite}.google-spider{animation:googleSpider 15s ease-in-out infinite}.google-leg{animation:googleLeg 1.5s ease-in-out infinite alternate}.google-serp{animation:googleSerp 12s ease-in-out infinite}.google-index{animation:googleIndex 8s ease-in-out infinite}.google-pin{animation:googlePin 5s ease-in-out infinite}.perp-document{animation:perpDocument 10s ease-in-out infinite}.perp-lens{animation:perpLens 11s ease-in-out infinite}.perp-line{animation:geoAnswer 8s ease-in-out infinite}.perp-tag{animation:perpTag 9s ease-in-out infinite}
@keyframes batchMini{50%{transform:translateX(75px) rotate(5deg)}}@keyframes batchDash{to{stroke-dashoffset:-200}}@keyframes batchWheel{to{transform:rotate(360deg)}}@keyframes psmCarry{0%,100%{transform:translateX(0) rotate(-4deg);opacity:0}8%,72%{opacity:1}85%{transform:translateX(500px) rotate(4deg);opacity:0}}@keyframes psmFill{0%,100%{transform:translateY(45px) scaleX(.6);opacity:.2}40%,75%{transform:translateY(0) scaleX(1);opacity:1}}@keyframes psmGauge{0%,100%{transform:scaleY(.2)}60%{transform:scaleY(1)}}@keyframes geoScan{to{transform:translateY(310px)}}@keyframes geoAnswer{0%,100%{transform:translateX(-70px) scaleX(.55);opacity:.2}35%,75%{transform:translateX(0) scaleX(1);opacity:1}}@keyframes geoCitation{0%,100%{transform:translate(-70px,-100px) rotate(-10deg);opacity:.4}55%,80%{transform:translate(310px,10px) rotate(4deg);opacity:1}}@keyframes geoOrbit{0%,100%{transform:translate(0,0) rotate(-7deg)}25%{transform:translate(90px,80px) rotate(8deg)}65%{transform:translate(-80px,-65px) rotate(-2deg)}}@keyframes geoPacket{0%,100%{transform:translate(0,0) rotate(-12deg);opacity:.4}45%,70%{transform:translate(180px,95px) rotate(8deg);opacity:1}}@keyframes wellRing{0%{transform:scale(.6);opacity:0}20%{opacity:.8}100%{transform:scale(1.25);opacity:0}}@keyframes wellSteam{0%,100%{transform:translate(0,25px) scaleX(.75);opacity:.2}50%{transform:translate(30px,-65px) scaleX(1.15);opacity:.75}}@keyframes wellBreathe{0%,100%{transform:scale(.65)}50%{transform:scale(1.25)}}@keyframes wellLeaf{0%,100%{transform:translate(0,0) rotate(-20deg);opacity:.2}30%{opacity:1}80%{transform:translate(110px,330px) rotate(65deg);opacity:.8}}@keyframes googleSpider{0%,100%{transform:translate(0,0)}25%{transform:translate(160px,-75px)}60%{transform:translate(190px,120px)}80%{transform:translate(-40px,150px)}}@keyframes googleLeg{to{transform:rotate(20deg) scaleX(.8)}}@keyframes googleSerp{0%,100%{transform:translateY(0);opacity:1}50%{transform:translateY(-65px);opacity:.85}}@keyframes googleIndex{0%,100%{transform:translateX(-100px);opacity:.2}45%,75%{transform:translateX(75px);opacity:1}}@keyframes googlePin{50%{transform:translateY(-35px) scale(1.15)}}@keyframes perpDocument{0%,100%{transform:translate(0,0) rotate(-5deg);opacity:.5}55%,78%{transform:translate(460px,15px) rotate(9deg);opacity:1}}@keyframes perpLens{0%,100%{transform:translate(0,0) rotate(-10deg)}50%{transform:translate(-100px,120px) rotate(12deg)}}@keyframes perpTag{50%{transform:translate(80px,-90px) rotate(7deg)}}
@media(max-width:760px){.batch-sources{padding:18px}.service-scene .k-stage{aspect-ratio:10/8}.batch-sources a{overflow-wrap:anywhere}}@media(prefers-reduced-motion:reduce){.service-scene *,.ms-dashboard *,.batch-mini{animation:none!important;transition:none!important}.service-scene .ms-move{transform:none!important;opacity:1!important}}
/* Thirteen original service/city scenes. Shared observer controls off-screen lifecycle. */
.service-scene .ms-move,.trade-visual .ms-move{transform-box:fill-box;transform-origin:center}
[class*=s-institut-mirror]{animation:beautyMirror 7s ease-in-out infinite}[class*=s-institut-bottle]{animation:beautyBottle 8s ease-in-out infinite}[class*=s-institut-slot]{animation:beautySlot 6s ease-in-out infinite}[class*=s-institut-brush]{animation:beautyBrush 9s ease-in-out infinite}
@keyframes beautyMirror{50%{transform:rotate(12deg) scaleX(.75)}}@keyframes beautyBottle{50%{transform:translateX(70px) translateY(-15px)}}@keyframes beautySlot{50%{transform:scaleX(.65) translateY(20px)}}@keyframes beautyBrush{50%{transform:translate(-100px,-140px) rotate(-35deg)}}
[class*=s-marrakech-door]{animation:patioDoor 10s ease-in-out infinite}[class*=s-marrakech-tile]{animation:patioTile 8s ease-in-out infinite}[class*=s-marrakech-drop]{animation:patioDrop 3s linear infinite}[class*=s-marrakech-language]{animation:patioLanguage 11s ease-in-out infinite}
@keyframes patioDoor{50%{transform:scaleX(.25) translateX(-30px)}}@keyframes patioTile{50%{transform:translateY(-35px) rotate(15deg)}}@keyframes patioDrop{0%{transform:translateY(-55px);opacity:0}20%{opacity:1}100%{transform:translateY(125px);opacity:0}}@keyframes patioLanguage{50%{transform:translateX(75px) translateY(-20px)}}
[class*=s-grenoble-mountain]{animation:alpsRise 10s ease-in-out infinite}[class*=s-grenoble-point]{animation:auditPoint 5s ease-in-out infinite}[class*=s-grenoble-lens]{animation:auditLens 9s ease-in-out infinite}[class*=s-grenoble-file]{animation:auditFile 8s ease-in-out infinite}
@keyframes alpsRise{50%{transform:translateY(-45px) scaleY(1.15)}}@keyframes auditPoint{50%{transform:translateY(-55px) scale(1.6)}}@keyframes auditLens{25%{transform:translate(-70px,-55px)}65%{transform:translate(90px,95px)}}@keyframes auditFile{50%{transform:translate(50px,-75px) rotate(-6deg)}}
[class*=s-ajaccio-shutter]{animation:portShutter 9s ease-in-out infinite}[class*=s-ajaccio-wave]{animation:portWave 6s linear infinite}[class*=s-ajaccio-boat]{animation:portBoat 15s ease-in-out infinite}[class*=s-ajaccio-card]{animation:portCard 10s ease-in-out infinite}
@keyframes portShutter{50%{transform:scaleX(.2) rotate(5deg)}}@keyframes portWave{to{transform:translateX(100px)}}@keyframes portBoat{50%{transform:translate(170px,-25px) rotate(-5deg)}}@keyframes portCard{50%{transform:translate(-30px,65px) rotate(6deg)}}
[class*=s-avocat-seo-balance]{animation:lawBalance 8s ease-in-out infinite}[class*=s-avocat-seo-file]{animation:lawFile 9s ease-in-out infinite}[class*=s-avocat-seo-line]{animation:lawLine 6s ease-in-out infinite}[class*=s-avocat-seo-seal]{animation:lawSeal 7s ease-in-out infinite}
@keyframes lawBalance{0%,100%{transform:rotate(-12deg)}50%{transform:rotate(12deg)}}@keyframes lawFile{50%{transform:translateY(-65px) rotate(-5deg)}}@keyframes lawLine{50%{transform:translateX(60px) scaleX(.5)}}@keyframes lawSeal{0%,100%{transform:translateY(-60px) rotate(-12deg)}55%,75%{transform:translateY(45px) rotate(8deg)}}
[class*=s-pontivy-wave]{animation:canalWave 5s linear infinite}[class*=s-pontivy-gate]{animation:canalGate 12s ease-in-out infinite}[class*=s-pontivy-barge]{animation:canalBoat 14s ease-in-out infinite}[class*=s-pontivy-card]{animation:canalCard 10s ease-in-out infinite}
@keyframes canalWave{to{transform:translateX(90px)}}@keyframes canalGate{50%{transform:rotate(25deg) scaleX(.3)}}@keyframes canalBoat{50%{transform:translateX(400px) translateY(-25px)}}@keyframes canalCard{50%{transform:translateY(-55px) rotate(4deg)}}
[class*=s-offshore-globe]{animation:remoteGlobe 16s linear infinite}[class*=s-offshore-relay]{animation:remoteRelay 6s ease-in-out infinite}[class*=s-offshore-packet]{animation:remotePacket 12s ease-in-out infinite}[class*=s-offshore-lock]{animation:remoteLock 8s ease-in-out infinite}
@keyframes remoteGlobe{50%{transform:scaleX(.35) rotate(12deg)}}@keyframes remoteRelay{50%{transform:scale(1.5) translateY(-20px)}}@keyframes remotePacket{50%{transform:translate(140px,100px) rotate(9deg)}}@keyframes remoteLock{50%{transform:translateY(-65px) rotate(-8deg)}}
[class*=s-rennes-sea-rail]{stroke-dasharray:18 14;animation:adsRail 4s linear infinite}[class*=s-rennes-sea-ad]{animation:adsCard 11s ease-in-out infinite}[class*=s-rennes-sea-switch]{animation:adsSwitch 9s ease-in-out infinite}[class*=s-rennes-sea-cursor]{animation:adsCursor 8s ease-in-out infinite}[class*=s-rennes-sea-target]{animation:adsTarget 7s ease-in-out infinite}
@keyframes adsRail{to{stroke-dashoffset:-200}}@keyframes adsCard{0%,100%{transform:translateX(0);opacity:.4}65%{transform:translateX(400px);opacity:1}}@keyframes adsSwitch{50%{transform:rotate(55deg)}}@keyframes adsCursor{50%{transform:translate(70px,125px) scale(.8)}}@keyframes adsTarget{50%{transform:translateY(-20px) scale(1.3)}}
[class*=s-webflow-block]{animation:wfBlock 10s ease-in-out infinite}[class*=s-webflow-cms]{animation:wfCms 9s ease-in-out infinite}[class*=s-webflow-title]{animation:wfTitle 7s ease-in-out infinite}[class*=s-webflow-cursor]{animation:wfCursor 11s ease-in-out infinite}
@keyframes wfBlock{50%{transform:translate(45px,-40px) scale(.8)}}@keyframes wfCms{50%{transform:translate(-190px,-100px) rotate(-8deg)}}@keyframes wfTitle{50%{transform:scaleX(.5) translateX(30px)}}@keyframes wfCursor{50%{transform:translate(180px,200px)}}
[class*=s-biarritz-beam]{animation:coastBeam 13s ease-in-out infinite}[class*=s-biarritz-wave]{animation:coastWave 7s linear infinite}[class*=s-biarritz-board]{animation:coastBoard 10s ease-in-out infinite}[class*=s-biarritz-season]{animation:coastCard 11s ease-in-out infinite}
@keyframes coastBeam{0%,100%{transform:rotate(-20deg);opacity:.3}50%{transform:rotate(35deg);opacity:.9}}@keyframes coastWave{to{transform:translateX(100px)}}@keyframes coastBoard{50%{transform:translate(150px,-40px) rotate(-12deg)}}@keyframes coastCard{50%{transform:translateY(-45px) rotate(7deg)}}
[class*=s-chatgpt-node]{animation:chatNode 7s ease-in-out infinite}[class*=s-chatgpt-document]{animation:chatDocument 11s ease-in-out infinite}[class*=s-chatgpt-answer]{animation:chatAnswer 8s ease-in-out infinite}[class*=s-chatgpt-chip]{animation:chatChip 10s ease-in-out infinite}[class*=s-chatgpt-gate]{animation:chatGate 9s ease-in-out infinite}
@keyframes chatNode{50%{transform:scale(1.3) translateY(-20px)}}@keyframes chatDocument{50%{transform:translate(200px,120px) rotate(12deg)}}@keyframes chatAnswer{0%,100%{transform:scaleX(.35);opacity:.3}50%,75%{transform:scaleX(1);opacity:1}}@keyframes chatChip{50%{transform:translate(60px,-90px) rotate(8deg)}}@keyframes chatGate{50%{transform:scaleX(.2) translateX(45px)}}
[class*=s-hotel-seo-window]{animation:hotelWindow 8s ease-in-out infinite}[class*=s-hotel-seo-room]{animation:hotelRoom 11s ease-in-out infinite}[class*=s-hotel-seo-suitcase]{animation:hotelCase 12s ease-in-out infinite}[class*=s-hotel-seo-path]{stroke-dasharray:12 10;animation:hotelPath 4s linear infinite}
@keyframes hotelWindow{50%{transform:scaleX(.5);opacity:.25}}@keyframes hotelRoom{50%{transform:translate(-70px,25px) rotate(-5deg)}}@keyframes hotelCase{50%{transform:translateX(230px) rotate(8deg)}}@keyframes hotelPath{to{stroke-dashoffset:-120}}
[class*=s-macon-river]{animation:saoneFlow 7s linear infinite}[class*=s-macon-card]{animation:saoneCard 12s ease-in-out infinite}[class*=s-macon-grape]{animation:saoneGrape 9s ease-in-out infinite}[class*=s-macon-query]{animation:saoneQuery 6s ease-in-out infinite}
@keyframes saoneFlow{to{transform:translateX(90px)}}@keyframes saoneCard{50%{transform:translate(100px,-55px) rotate(5deg)}}@keyframes saoneGrape{50%{transform:rotate(15deg) translateY(18px)}}@keyframes saoneQuery{50%{transform:translate(-25px,-65px) scale(1.4)}}
.hero-art:not(.is-live) .trade-visual .ms-move{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.service-scene .ms-move,.trade-visual .ms-move{animation:none!important;transform:none!important;opacity:1!important}}

[class*=s-biarritz-beam]{transform-origin:right center}[class*=s-avocat-seo-balance]{transform-origin:center top}
