/* Landing Living Background rules, same shapes and animations; app scope only. */
.app-shell .living-scope{position:relative;isolation:isolate;overflow:hidden}
.app-shell .living-bg{--lb-line:rgba(244,238,232,.055);--lb-accent:rgba(211,77,38,.55);--lb-halo:rgba(169,48,16,.26);--lb-halo2:rgba(214,165,94,.10);position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
html[data-theme="blue"] .app-shell .living-bg{--lb-line:rgba(241,246,250,.06);--lb-accent:rgba(121,169,239,.5);--lb-halo:rgba(84,139,216,.22);--lb-halo2:rgba(158,197,255,.08)}
html[data-theme="light"] .app-shell .living-bg{--lb-line:rgba(32,27,23,.065);--lb-accent:rgba(158,62,33,.32);--lb-halo:rgba(191,89,55,.09);--lb-halo2:rgba(129,81,15,.05)}
.app-shell .lb-grid{position:absolute;inset:0;background-image:linear-gradient(var(--lb-line) 1px,transparent 1px),linear-gradient(90deg,var(--lb-line) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(120% 90% at 70% 30%,#000 30%,transparent 78%);mask-image:radial-gradient(120% 90% at 70% 30%,#000 30%,transparent 78%)}
html[data-theme="light"] .app-shell .lb-grid{background-size:48px 48px;-webkit-mask-image:radial-gradient(90% 70% at 72% 26%,#000 20%,transparent 70%);mask-image:radial-gradient(90% 70% at 72% 26%,#000 20%,transparent 70%)}
.app-shell .lb-halo{position:absolute;left:50%;top:0;width:980px;height:980px;margin-left:-490px;margin-top:-340px;border-radius:50%;background:radial-gradient(closest-side,var(--lb-halo),transparent);transition:transform .55s cubic-bezier(.3,.7,.2,1),opacity .55s ease;will-change:transform}
.app-shell .lb-halo--b{width:760px;height:760px;margin-left:-380px;margin-top:0;background:radial-gradient(closest-side,var(--lb-halo2),transparent)}
.app-shell .living-bg svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--lb-accent);stroke-width:1.2}
.app-shell .living-bg svg g[data-v]{opacity:0;transition:opacity .5s ease}
.app-shell .living-bg circle[r="5"],.app-shell .living-bg circle[r="9"]{fill:var(--lb-accent);stroke:none}
/* variante visible et position des halos */
.app-shell .living-bg[data-variant="os"] g[data-v="os"],.app-shell .living-bg[data-variant="audit"] g[data-v="audit"],.app-shell .living-bg[data-variant="prospection"] g[data-v="prospection"],.app-shell .living-bg[data-variant="signal"] g[data-v="signal"],.app-shell .living-bg[data-variant="tender"] g[data-v="tender"],.app-shell .living-bg[data-variant="secure"] g[data-v="secure"],.app-shell .living-bg[data-variant="bibliotheque"] g[data-v="bibliotheque"],.app-shell .living-bg[data-variant="website-factory"] g[data-v="website-factory"],.app-shell .living-bg[data-variant="plug-and-code"] g[data-v="plug-and-code"]{opacity:1}
.app-shell .living-bg[data-variant="os"] .lb-halo--a{transform:translate(22vw,0)}.app-shell .living-bg[data-variant="os"] .lb-halo--b{transform:translate(-30vw,520px)}
.app-shell .living-bg[data-variant="audit"] .lb-halo--a{transform:translate(30vw,-60px)}.app-shell .living-bg[data-variant="audit"] .lb-halo--b{transform:translate(-20vw,640px)}
.app-shell .living-bg[data-variant="prospection"] .lb-halo--a{transform:translate(12vw,120px)}.app-shell .living-bg[data-variant="prospection"] .lb-halo--b{transform:translate(28vw,700px)}
.app-shell .living-bg[data-variant="signal"] .lb-halo--a{transform:translate(26vw,60px) scale(1.08)}.app-shell .living-bg[data-variant="signal"] .lb-halo--b{transform:translate(-26vw,420px)}
.app-shell .living-bg[data-variant="tender"] .lb-halo--a{transform:translate(18vw,40px) scale(.92)}.app-shell .living-bg[data-variant="tender"] .lb-halo--b{transform:translate(8vw,760px)}
.app-shell .living-bg[data-variant="secure"] .lb-halo--a{transform:translate(28vw,-20px)}.app-shell .living-bg[data-variant="secure"] .lb-halo--b{transform:translate(-32vw,600px)}
.app-shell .living-bg[data-variant="bibliotheque"] .lb-halo--a{transform:translate(20vw,160px)}.app-shell .living-bg[data-variant="bibliotheque"] .lb-halo--b{transform:translate(-12vw,300px)}
.app-shell .living-bg[data-variant="website-factory"] .lb-halo--a{transform:translate(24vw,80px)}.app-shell .living-bg[data-variant="website-factory"] .lb-halo--b{transform:translate(-24vw,720px)}
.app-shell .living-bg[data-variant="plug-and-code"] .lb-halo--a{transform:translate(16vw,-40px)}.app-shell .living-bg[data-variant="plug-and-code"] .lb-halo--b{transform:translate(30vw,560px)}
/* mouvements subtils */
.app-shell .living-bg .lb-spin{transform-origin:1110px 360px;animation:lb-spin 60s linear infinite}
.app-shell .living-bg .lb-scan{fill:var(--lb-accent);stroke:none;opacity:.55;animation:lb-scan 7s ease-in-out infinite}
.app-shell .living-bg .lb-node{fill:var(--lb-accent);stroke:none;animation:lb-pulse 3.6s ease-in-out infinite;animation-delay:var(--d,0s)}
.app-shell .living-bg .lb-wave{transform-origin:1120px 380px;animation:lb-wave 4.8s ease-out infinite;animation-delay:var(--d,0s)}
.app-shell .living-bg .lb-flow{stroke-dasharray:6 18;animation:lb-dash 9s linear infinite;animation-delay:var(--d,0s)}
.app-shell .living-bg .lb-cell{animation:lb-cell 5s ease-in-out infinite;animation-delay:var(--d,0s)}
.app-shell .living-bg .lb-float{animation:lb-float 9s ease-in-out infinite}
.app-shell .living-bg[data-paused] *,.app-shell .living-bg[data-hidden] *{animation-play-state:paused!important}
@keyframes lb-spin{to{transform:rotate(360deg)}}
@keyframes lb-scan{0%,100%{transform:translateY(90px)}50%{transform:translateY(640px)}}
@keyframes lb-pulse{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes lb-wave{0%{transform:scale(.25);opacity:.9}100%{transform:scale(1.15);opacity:0}}
@keyframes lb-dash{to{stroke-dashoffset:-240}}
@keyframes lb-cell{0%,100%{opacity:.25}50%{opacity:.9}}
@keyframes lb-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
/* mobile : version simplifiée — grille + halos, pas de tracés animés */
@media (max-width:760px){.app-shell .living-bg svg{opacity:.45}.app-shell .living-bg svg *{animation:none!important}.app-shell .lb-halo{width:640px;height:640px;margin-left:-320px}}
@media (prefers-reduced-motion:reduce){.app-shell .living-bg *{animation:none!important;transition:none!important}}


.app-shell>.living-bg{position:fixed;opacity:.42}
html[data-theme="black"] .app-shell .living-bg{--lb-line:rgba(255,255,255,.035);--lb-accent:rgba(255,49,49,.5);--lb-halo:rgba(255,49,49,.15);--lb-halo2:rgba(255,255,255,.035)}
