/* ===== décor de biome (repris de FAUNA) ===== */
#scn{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;transition:opacity .7s;opacity:0}#scn.on{opacity:1}
.scn{position:absolute;overflow:hidden;pointer-events:none}#scn.scn{position:fixed}
.scn .sky,.scn .dim,.scn .floor{position:absolute;left:0;right:0;bottom:0;z-index:1;overflow:visible}
.scn .sky{inset:0}.scn .grd{position:absolute;inset:0}
.scn .floor svg{position:absolute;left:0;top:-35px;width:100%;height:36px;display:block;pointer-events:none}.scn .floor i{position:absolute;display:block}
.scn .dim{inset:0;z-index:23}
.scn .rays{position:absolute;inset:0;background:repeating-conic-gradient(from 165deg at 50% -15%,#bfeaff30 0 3deg,#0000 3deg 11deg);animation:rays 12s ease-in-out infinite alternate}
.scn .sp{position:absolute;pointer-events:none;will-change:transform}.scn .sp img{width:100%;display:block}
.scn.lite{inset:auto;position:absolute;inset:0}.scn.lite .pv-in{position:absolute;width:560px;height:840px;transform-origin:0 0;transform:scale(var(--k,.3))}
.scn.lite .dim{z-index:5}
/* lisibilité des cartes de combat sur le décor : léger voile sombre derrière le plateau */
#scn .dim{background:linear-gradient(180deg,#0003,#0007)!important}
.scn .sp{position:absolute;pointer-events:none;will-change:transform}.scn .sp img{width:100%;display:block}
.scn .sp.tsway{transform-origin:50% 100%;animation:tsway var(--d) ease-in-out infinite alternate var(--dl)}@keyframes tsway{from{transform:rotate(-1.6deg)}to{transform:rotate(1.6deg)}}
.scn .sp.hang{transform-origin:50% 0;animation:hang var(--d) ease-in-out infinite alternate var(--dl)}@keyframes hang{from{transform:rotate(-4deg)}to{transform:rotate(4deg)}}
.scn .sp.rise{animation:brise var(--d) linear infinite var(--dl)}@keyframes brise{0%{transform:translate(0,0);opacity:0}10%{opacity:1}100%{transform:translate(35px,-125vh);opacity:0}}
.scn .sp.swim{animation:swim var(--d) linear infinite var(--dl)}.scn .sp.swimr{animation:swim var(--d) linear infinite reverse var(--dl)}.scn .sp.swim img{transform:scaleX(-1)}@keyframes swim{from{transform:translateX(-25vw)}to{transform:translateX(125vw)}}
.scn .sp.drift{animation:swim var(--d) linear infinite var(--dl)}.scn .sp.float{animation:fl var(--d) ease-in-out infinite alternate var(--dl)}@keyframes fl{from{transform:translateY(-26px) scale(.95)}to{transform:translateY(26px) scale(1.05)}}
/* ===== Ambiance v1.5 : ciel continu, astres, rayons, brume, particules, chrome par moment ===== */
.scn .cel{position:absolute;inset:0;z-index:1;pointer-events:none}
.scn .amb-hg{position:absolute;inset:0;background:radial-gradient(ellipse 85% 40% at var(--sx,50%) var(--hzp,60%),var(--hgc,#0000),#0000 72%)}
/* étoiles */
.scn .amb-stars{position:absolute;left:0;right:0;top:0;opacity:var(--st,0)}
.scn .amb-stars i{position:absolute;width:var(--s);height:var(--s);border-radius:50%;background:#fff;box-shadow:0 0 6px #fff;animation:ambtw var(--du) ease-in-out infinite var(--dl)}
@keyframes ambtw{50%{opacity:.25;transform:scale(.6)}}
.scn .amb-ss{position:absolute;width:150px;height:2px;border-radius:2px;background:linear-gradient(90deg,#fff,#fff0);transform-origin:0 50%;rotate:var(--a);filter:drop-shadow(0 0 6px #fff);animation:ambss 1.1s ease-out forwards}
@keyframes ambss{from{translate:0 0;opacity:1}to{translate:var(--dx) var(--dy);opacity:0}}
/* soleil */
.scn .amb-sun{position:absolute;left:var(--sx,50%);top:var(--sy,50%);width:150px;height:150px;margin:-75px 0 0 -75px;opacity:var(--sv,0);transform:scale(var(--ss,1));transition:left .16s linear,top .16s linear}
.scn .amb-sun b{position:absolute;inset:20%;border-radius:50%;background:radial-gradient(circle at 42% 38%,#fff 0,var(--sc,#fff4c8) 55%,var(--sc2,#ffb050) 100%);box-shadow:0 0 36px 12px var(--sg,#ffe08a99),0 0 150px 70px var(--sg2,#ffe08a55);animation:ambpulse 6s ease-in-out infinite alternate}
.scn .amb-sun s{position:absolute;inset:-110%;border-radius:50%;background:repeating-conic-gradient(var(--sg,#ffe08a99) 0 2.2deg,#0000 2.2deg 11deg);-webkit-mask:radial-gradient(circle,#000 0,#0000 60%);mask:radial-gradient(circle,#000 0,#0000 60%);opacity:.38;animation:ambspin 120s linear infinite}
@keyframes ambspin{to{rotate:360deg}}@keyframes ambpulse{to{transform:scale(1.07)}}
/* lune */
.scn .amb-moon{position:absolute;left:var(--mx,50%);top:var(--my,50%);width:100px;height:100px;margin:-50px 0 0 -50px;opacity:var(--mv,0);transform:scale(var(--ms,1));filter:drop-shadow(0 0 18px #bcd0ff) drop-shadow(0 0 70px #7f9bff99);transition:left .16s linear,top .16s linear}
.scn .amb-moon svg{width:100%;height:100%;display:block;animation:ambfloat 14s ease-in-out infinite alternate}
@keyframes ambfloat{from{transform:translateY(-4px) rotate(-2deg)}to{transform:translateY(4px) rotate(2deg)}}
/* aurores */
.scn .amb-aur{position:absolute;inset:0 0 38% 0;opacity:calc(var(--st,0)*.95);mix-blend-mode:screen;overflow:hidden}
.scn .amb-aur i{position:absolute;left:-15%;right:-15%;top:5%;height:46%;filter:blur(22px);background:linear-gradient(100deg,#2bff9a00,#2bff9acc 28%,#6a5cffaa 58%,#ff5ce133 82%,#0000);-webkit-mask:repeating-linear-gradient(90deg,#000 0 5%,#0004 5% 8%);mask:repeating-linear-gradient(90deg,#000 0 5%,#0004 5% 8%);animation:ambau 14s ease-in-out infinite alternate}
.scn .amb-aur i:nth-child(2){top:14%;height:38%;opacity:.7;animation-duration:19s;animation-direction:alternate-reverse;filter:blur(30px) hue-rotate(70deg)}
.scn .amb-aur i:nth-child(3){top:0;height:30%;opacity:.5;animation-duration:25s;filter:blur(34px) hue-rotate(-50deg)}
@keyframes ambau{from{transform:translateX(-7%) skewX(-9deg) scaleY(.85)}to{transform:translateX(7%) skewX(9deg) scaleY(1.15)}}
/* rayons de lumière (soleil, lune ou surface de l'eau) */
.scn .amb-gr{position:absolute;inset:-5%;z-index:19;pointer-events:none;mix-blend-mode:screen;opacity:calc(var(--lsa,0)*.42);filter:blur(7px);background:repeating-conic-gradient(from 0deg at var(--lsx,50%) var(--lsy,-10%),var(--lsc,#fff3) 0 2.2deg,#0000 2.2deg 9deg),repeating-conic-gradient(from 3deg at var(--lsx,50%) var(--lsy,-10%),var(--lsc,#fff3) 0 1deg,#0000 1deg 5.3deg);-webkit-mask:radial-gradient(circle at var(--lsx,50%) var(--lsy,-10%),#000 0,#0000 62vmax);mask:radial-gradient(circle at var(--lsx,50%) var(--lsy,-10%),#000 0,#0000 62vmax);animation:ambray 9s ease-in-out infinite alternate;transform-origin:var(--lsx,50%) var(--lsy,-10%)}
@keyframes ambray{from{transform:rotate(-1.4deg) scale(1.03)}to{transform:rotate(1.6deg) scale(1.1)}}
/* brume basse */
.scn .amb-mist{position:absolute;left:-10%;right:-10%;z-index:14;pointer-events:none;opacity:var(--mist,0);filter:blur(10px);background:radial-gradient(closest-side,var(--mc,#fff6),#0000) 0 0/38% 100% repeat-x;animation:ambmist 70s linear infinite}
.scn .amb-mist.m1{top:calc(var(--hzp,60%) - 9%);height:20%}
.scn .amb-mist.m2{top:calc(var(--hzp,60%) + 6%);height:24%;animation-duration:105s;animation-direction:reverse;background-size:52% 100%}
@keyframes ambmist{to{background-position-x:-100%}}
/* voile de couleur + vignette + particules */
.scn .amb-tint{position:absolute;inset:0;z-index:20;pointer-events:none;mix-blend-mode:soft-light;background:var(--tint,#0000)}
.scn .amb-vig{position:absolute;inset:0;z-index:21;pointer-events:none;background:radial-gradient(125% 95% at 50% 45%,#0000 50%,rgba(2,4,20,var(--vg,0)) 100%)}
.scn .amb-fx{position:absolute;inset:0;z-index:22;width:100%;height:100%;pointer-events:none}
.scn .grd{z-index:2;transition:filter .3s linear}


/* v3.0.8 — aperçus du veto (.scn.lite) : vraiment statiques. Avant, chaque sprite gardait son animation infinie, son flou et sa propre couche graphique (will-change) :
   6 aperçus × ~25 sprites saturaient la mémoire graphique d'un iPad (écran qui ne se met plus à jour, puis plantage). */
.scn.lite *{animation:none!important;will-change:auto!important}
.scn.lite .sp{filter:none!important}

/* v4.3.2 — mode éco (téléphones) : pas de couches floutées plein écran, pas de mélange de calques, pas de balancement des arbres (1 couche GPU par sprite) */
.scn.eco .sp{will-change:auto}
.scn.eco .sp.tsway,.scn.eco .sp.hang{animation:none}
.scn.eco .amb-mist,.scn.eco .amb-gr,.scn.eco .amb-aur{display:none}
.scn.eco .amb-tint{mix-blend-mode:normal;opacity:.5}
.scn.eco .amb-stars i{box-shadow:none;animation:none}
.scn.eco .amb-moon{filter:none;box-shadow:0 0 40px #7f9bff66;border-radius:50%}
.scn.eco .amb-sun s,.scn.eco .amb-sun b{animation:none}
.scn.eco .amb-moon svg{animation:none}
