/* All motion is sampled by the battle clock. No extra animation loops or art filters. */
.team-tencentcloud{--serenity-rise-alpha:0;--serenity-blush-alpha:0}
.team-tencentcloud .serenity-pose-layers{position:absolute;inset:0;pointer-events:none;overflow:visible;background:transparent}
.team-tencentcloud .serenity-pose-layers img{position:absolute;inset:3%;width:94%;height:94%;padding:2%;box-sizing:border-box;max-width:none;object-fit:contain;object-position:center;pointer-events:none;background:transparent;box-shadow:none;filter:none;mix-blend-mode:normal;transform:none}
.team-tencentcloud .serenity-pose-storm{opacity:var(--serenity-rise-alpha,0)}
.team-tencentcloud .serenity-pose-heal{opacity:var(--serenity-blush-alpha,0)}
.team-scene .team-tencentcloud .team-sprite{opacity:calc((1 - max(var(--serenity-rise-alpha,0),var(--serenity-blush-alpha,0))) * (1 - var(--victory,0)) * var(--art-tone,1))}
.team-scene .team-plane>.team-tencentcloud.is-performing{z-index:34;isolation:isolate;background:transparent;--art-tone:1}
.team-tencentcloud.is-performing .team-character-action:before{display:none}
.team-tencentcloud.is-performing .team-character-action,.team-tencentcloud.is-performing .team-sprite{filter:none;box-shadow:none}

/* Three storm shelves drift at different depths above the battlefield. */
.serenity-storm-stage{position:absolute;inset:0;pointer-events:none;opacity:var(--storm-alpha,0);overflow:hidden;contain:paint}
.serenity-storm-bank{position:absolute;left:-4%;top:0;width:108%;height:clamp(150px,30vh,330px);overflow:visible;transform:translate3d(var(--storm-drift,0px),calc((1 - var(--storm-arrival,0)) * -105%),0);pointer-events:none}
.serenity-storm-bank path{stroke:none;transform-box:fill-box;transform-origin:50% 0%}
.serenity-storm-bank .serenity-storm-far{fill:url(#serenity-storm-shadow);opacity:.76;transform:translate3d(calc(var(--storm-drift,0px)*-.3),var(--storm-far-y,0px),0) scaleX(1.04)}
.serenity-storm-bank .serenity-storm-middle{fill:url(#serenity-storm-mid);opacity:.86;transform:translate3d(calc(var(--storm-drift,0px)*.55),5px,0) scaleX(1.02)}
.serenity-storm-bank .serenity-storm-near{fill:url(#serenity-storm-light);opacity:.88;transform:translate3d(calc(var(--storm-drift,0px)*1.35),var(--storm-near-y,0px),0) scaleX(1.06)}
.serenity-storm-lumen{position:absolute;left:12%;right:12%;top:0;height:29vh;max-height:320px;background:radial-gradient(ellipse at 56% 5%,#c9f7f531,transparent 65%);opacity:var(--storm-arrival,0);pointer-events:none}
.serenity-storm-rays{position:absolute;left:5%;right:5%;top:0;height:42vh;max-height:450px;opacity:calc(var(--storm-arrival,0) * var(--storm-light,.7) * .45);background:linear-gradient(108deg,transparent 27%,#b5f6ff17 29%,transparent 33%),linear-gradient(75deg,transparent 45%,#dcffff20 47%,transparent 52%),linear-gradient(115deg,transparent 67%,#ddd4ff14 69%,transparent 72%);mask-image:linear-gradient(#000,transparent);transform:translate3d(calc(var(--storm-drift,0px)*.25),0,0);pointer-events:none}
.serenity-storm-shelf{position:absolute;left:-8%;right:-8%;top:12vh;height:12vh;max-height:130px;opacity:calc(var(--storm-arrival,0) * .42);background:radial-gradient(ellipse at 22% 0%,#b4e5f52e 5%,transparent 45%),radial-gradient(ellipse at 72% 0%,#d8e6ff2b 8%,transparent 50%);transform:translate3d(calc(var(--storm-drift,0px)*-1.15),var(--storm-near-y,0px),0);pointer-events:none}
.serenity-storm-wind{position:absolute;left:0;right:0;top:9vh;height:12vh;max-height:140px;opacity:calc(var(--storm-arrival,0) * .5);background:radial-gradient(ellipse at 35% 0%,transparent 57%,#d8f7ff30 59%,transparent 61%),radial-gradient(ellipse at 70% 0%,transparent 57%,#a4c5e42b 59%,transparent 61%);transform:translate3d(calc(var(--storm-drift,0px) * -.35),0,0);pointer-events:none}

/* Nine fixed Bezier routes: dashes provide flow without rebuilding geometry. */
.serenity-revival-winds{position:absolute;inset:0;z-index:29;pointer-events:none;overflow:hidden;contain:paint}
.serenity-wind-web{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.serenity-wind-stream{opacity:var(--wind-alpha,0);fill:none;stroke-linecap:round;stroke-linejoin:round}
.serenity-wind-body{stroke:#b6e9ed;stroke-width:7;stroke-opacity:.2;stroke-dasharray:64 25 12 35;stroke-dashoffset:calc(var(--wind-flow,0px) * -1);vector-effect:non-scaling-stroke}
.serenity-wind-thread{stroke:#ecfff4;stroke-width:1.5;stroke-opacity:.86;stroke-dasharray:16 12 52 29;stroke-dashoffset:calc(var(--wind-flow,0px) * -1.5);vector-effect:non-scaling-stroke}
.serenity-wind-stream:nth-child(3n+2) .serenity-wind-body{stroke:#9bdbe9}
.serenity-wind-stream:nth-child(3n) .serenity-wind-thread{stroke:#ffe6b7}
.serenity-wind-cloudlet{fill:#e4ffff;pointer-events:none;opacity:0}.serenity-wind-cloudlet ellipse{fill:#b7dfed}
.serenity-wind-seed{fill:#fff3cf;stroke:#e4fff9;stroke-width:1;opacity:var(--wind-reveal,0);vector-effect:non-scaling-stroke}

/* Warmth lives on independent planes, keeping the figure's alpha edges crisp. */
.team-character{--serenity-wake:0}
.serenity-wake-aura{position:absolute;inset:4%;z-index:1;pointer-events:none;opacity:var(--serenity-wake,0);background:radial-gradient(ellipse at 50% 27%,#ffe8c747,transparent 23%),radial-gradient(ellipse at 50% 63%,transparent 30%,#d7fff32b 48%,transparent 66%);border-radius:50%;box-shadow:none;filter:none}
.serenity-wake-spark{position:absolute;left:24%;top:38%;z-index:2;width:7px;height:11px;background:#fff0c8;clip-path:polygon(50% 0,62% 39%,100% 50%,62% 61%,50% 100%,38% 61%,0 50%,38% 39%);opacity:var(--serenity-wake,0);pointer-events:none;transform:translateY(calc(var(--serenity-wake,0) * -9px));filter:none}
.serenity-wake-spark+.serenity-wake-spark{left:74%;top:57%;width:5px;height:8px;background:#d4fff5;transform:translateY(calc(var(--serenity-wake,0) * -14px))}
.team-character .serenity-heal-halo{border-color:#e1fff1;opacity:max(var(--heal-alpha,0),calc(var(--serenity-wake,0) * .7))}

@media(max-width:700px){
  .serenity-storm-bank{height:22vh;min-height:105px;max-height:200px}
  .serenity-storm-lumen{height:21vh}
  .serenity-storm-rays{height:28vh;opacity:calc(var(--storm-arrival,0) * .18)}
  .serenity-storm-shelf{top:9vh;height:9vh}
  .serenity-storm-wind{top:6vh;height:9vh}
  .serenity-wind-body{stroke-width:4;stroke-opacity:.18}
  .serenity-wind-thread{stroke-width:1;stroke-opacity:.76}
  .serenity-wake-spark{width:5px;height:8px}
}
@media(prefers-reduced-motion:reduce){
  .serenity-pose-layers,.serenity-pose-layers img,.serenity-storm-stage,.serenity-storm-bank,.serenity-storm-lumen,.serenity-storm-wind,.serenity-wind-stream,.serenity-wind-stream path,.serenity-wind-seed,.serenity-wake-aura,.serenity-wake-spark{animation:none!important;transition:none!important}
  .serenity-storm-bank,.serenity-storm-bank path,.serenity-storm-rays,.serenity-storm-shelf,.serenity-storm-wind,.serenity-wake-spark,.serenity-wake-spark+.serenity-wake-spark{transform:none}
  .serenity-wind-body,.serenity-wind-thread{stroke-dashoffset:0;stroke-dasharray:none}
  .serenity-wind-body{stroke-opacity:.12}
  .serenity-wind-thread{stroke-opacity:.55}
}

/* Layered sculpted clouds replace the flat canopy once the shared image decodes. */
.serenity-storm-clouds{display:none;position:absolute;left:-8%;right:-8%;top:0;height:clamp(150px,30vh,330px);background-image:url('/assets/tencent-volumetric-cloud.png');background-repeat:repeat-x;background-size:auto 100%;pointer-events:none}
.serenity-volume-ready .serenity-storm-bank{visibility:hidden}
.serenity-volume-ready .serenity-storm-clouds{display:block}
.serenity-storm-clouds--back{top:-12vh;opacity:.42;background-position:0 0;transform:translate3d(calc(var(--storm-drift,0px)*-.3),calc((1 - var(--storm-arrival,0))*-105% + var(--storm-far-y,0px)),0) scale(1.12)}
.serenity-storm-clouds--mid{top:-8vh;opacity:.46;background-position:120px 0;transform:translate3d(calc(var(--storm-drift,0px)*.55),calc((1 - var(--storm-arrival,0))*-105%),0)}
.serenity-storm-clouds--front{top:-5vh;opacity:.4;background-position:-90px 0;transform:translate3d(calc(var(--storm-drift,0px)*1.35),calc((1 - var(--storm-arrival,0))*-105% + var(--storm-near-y,0px)),0) scale(.9)}
@media(max-width:700px){.serenity-storm-clouds{height:clamp(105px,22vh,200px)}.serenity-storm-clouds--back{top:-10vh}.serenity-storm-clouds--mid{top:-6vh}.serenity-storm-clouds--front{top:-4vh}}
@media(prefers-reduced-motion:reduce){.serenity-storm-clouds{transform:none}}

/* Tencent can fly through the upper frame on her solo turn, including phones.
   The separate battle viewport still clips the scenery and storm effects. */
.battle-stage>.team-scene[data-battle-state=attack][data-battle-turn='9']{overflow:visible}
