/* All moving scene elements are HTML and change only transform or opacity. */
svg,svg *{animation:none!important;transition:none!important}
.infestation-network .biomass-component{position:absolute;inset:0;filter:none;pointer-events:none}
.biomass-roots-raster{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.infestation-network .biomass-node,.infestation-network .biomass-cluster{position:absolute;container-type:size;filter:none;animation:none;pointer-events:none}
.infestation-network .biomass-node.creeping-in{animation:creeper-arrival .95s cubic-bezier(.15,.5,.25,1) both;animation-delay:var(--arrival-delay)}
.creeper-idle{position:absolute;inset:0;animation:creeper-breathe 7s ease-in-out infinite;animation-delay:var(--node-delay);will-change:transform}
.perf-biomass-body{display:block;position:absolute}
.perf-biomass-sprite{display:block;position:absolute;inset:-6.25%;background-image:url('assets/perf-creeper.png');background-size:300% 100%;background-repeat:no-repeat}
.perf-biomass-bright{position:absolute;inset:0;background-image:url('assets/perf-creeper-bright.png');background-size:inherit;background-position:inherit;background-repeat:no-repeat;animation:perf-brightness 7s ease-in-out infinite;animation-delay:var(--node-delay);will-change:opacity}
.biomass-cluster .perf-biomass-sprite{background-image:url('assets/perf-cluster.png')}
.biomass-cluster .perf-biomass-bright{background-image:url('assets/perf-cluster-bright.png');animation-duration:8s}
@keyframes perf-brightness{0%,100%{opacity:0}50%{opacity:1}}
@keyframes creeper-breathe{0%,100%{transform:translate(0,0)}50%{transform:translate(.7cqw,-1.2cqw)}}
/* Fixed cast/contact shadows have no animated descendants. Body frames crossfade in HTML. */
#board .colonist-cast-shadow{animation:none;background-position-x:0%}
#board .colonist-art,#board .active-colonist .colonist-art{filter:none;background-image:url('assets/perf-colonist.png');background-size:0 0;animation:watchful-sway 9s ease-in-out infinite;animation-delay:var(--idle-delay,0s);will-change:transform}
.crew-idle-frame{position:absolute;inset:0;display:block;background-image:url('assets/perf-colonist.png');background-size:400% 200%;background-repeat:no-repeat;animation-duration:var(--idle-duration,7s);animation-delay:var(--idle-delay,0s);animation-timing-function:steps(1,end);animation-iteration-count:infinite;opacity:0;will-change:opacity}
.active-colonist .crew-idle-frame{background-image:url('assets/perf-colonist-active.png')}
.crew-idle-frame-0{animation-name:perf-crew-frame-0}
.crew-idle-frame-1{animation-name:perf-crew-frame-1}
.crew-idle-frame-2{animation-name:perf-crew-frame-2}
.crew-idle-frame-3{animation-name:perf-crew-frame-3}
@keyframes perf-crew-frame-0{0%,19.999%,100%{opacity:1}20%,99.999%{opacity:0}}
@keyframes perf-crew-frame-1{0%,19.999%,44%,100%{opacity:0}20%,43.999%{opacity:1}}
@keyframes perf-crew-frame-2{0%,43.999%,68%,100%{opacity:0}44%,67.999%{opacity:1}}
@keyframes perf-crew-frame-3{0%,67.999%,100%{opacity:0}68%,99.999%{opacity:1}}
@keyframes watchful-sway{0%,100%{transform:translateY(0) rotate(-2deg)}25%{transform:translateY(-.6px) rotate(2deg)}50%{transform:translateY(.4px) rotate(4deg)}75%{transform:translateY(-.4px) rotate(0deg)}}
.frame-biomass-strip{filter:none}
.frame-biomass-strip i{background-image:none;filter:none;will-change:transform,opacity}
.frame-biomass-strip i:before{content:'';position:absolute;inset:-6.25%;background-image:url('assets/perf-frame-biomass.png');background-size:300% 100%;background-position:var(--frame) 0;background-repeat:no-repeat}
@keyframes frame-breath{0%,100%{opacity:.9;transform:rotate(var(--turn)) scale(1)}50%{opacity:1;transform:rotate(var(--turn)) scale(1.025)}}
/* Modal backgrounds retain the dark translucent fill, without continuous backdrop blur. */
dialog::backdrop,#start-dialog::backdrop{backdrop-filter:none}
.perf-dialog .app *,.perf-dialog .app *:before,.perf-dialog .app *:after,
.perf-idle .field-panel *,.perf-idle .field-panel *:before,.perf-idle .field-panel *:after,
.perf-hidden *,.perf-hidden *:before,.perf-hidden *:after{animation-play-state:paused!important}
/* Death flashes use prepainted light layers. No animated filters or shadows. */
.field-panel.death-flash{animation:none}
.field-panel.death-flash.death-shake{animation:field-death-shake .25s linear 1}
.perf-death-glow{position:absolute;inset:0;z-index:20;pointer-events:none;box-shadow:inset 0 0 0 8px #e34449e8,inset 0 0 48px #db303d99;opacity:0}
.field-panel.death-flash>.perf-death-glow{animation:field-death-flash .6s ease-out 1}
@keyframes field-death-flash{from{opacity:1}to{opacity:0}}
.team-member.death-pulse{animation:none}
.team-member.death-pulse:before{content:'';position:absolute;inset:0;z-index:4;border:1px solid #f17c76;background:#f0525228;box-shadow:0 0 12px 4px #f05252;animation:portrait-death-pulse .66s steps(6,end) 1}
@keyframes portrait-death-pulse{0%,30%,60%,90%,100%{opacity:0}15%,45%,75%{opacity:1}}
.casualty-person:before,.casualty-person:after{content:'';position:absolute;inset:0;background-size:400% 200%;background-position:inherit;background-repeat:no-repeat}
.casualty-person:before{background-image:url('assets/perf-death-bright.png');animation:perf-death-light 1.1s ease-in forwards}
.casualty-person:after{background-image:url('assets/perf-death-dark.png');animation:perf-death-dark 1.1s ease-in forwards}
@keyframes perf-death-light{0%{opacity:1}12%{opacity:.31}48%,100%{opacity:0}}
@keyframes perf-death-dark{0%,25%{opacity:0}48%{opacity:.28}72%{opacity:.7}100%{opacity:1}}
@keyframes colonist-death{0%{opacity:1;transform:rotate(-4deg) scale(1)}12%{transform:rotate(7deg)}25%{transform:translateY(1px) rotate(-7deg) scale(.96,1)}48%{transform:translateY(4px) rotate(34deg)}72%{opacity:.8;transform:rotate(75deg) scale(.9)}100%{opacity:0;transform:translateY(6px) rotate(83deg) scale(.77)}}
@media(prefers-reduced-motion:reduce){
 .creeper-idle,.perf-biomass-bright,.biomass-cluster,.biomass-node.creeping-in,.frame-biomass-strip i,#board .colonist-art,.crew-idle-frame{animation:none!important;will-change:auto}
 .crew-idle-frame{opacity:0}.crew-idle-frame-0{opacity:1}
 .casualty-person:before,.casualty-person:after{animation:none!important;opacity:0}
 .field-panel.death-flash>.perf-death-glow,.team-member.death-pulse:before{animation:none!important;opacity:0}
}
/* The chevron stencil is a static SVG image. Its light sweep is an HTML layer. */
.action-move-marker{filter:none}
.action-chevron-vector{display:block;position:absolute;inset:0;transform:rotate(var(--direction))}
.action-chevron-train{display:block;position:absolute;inset:0}
.action-chevron-base,.action-chevron-mask{position:absolute;inset:0;mask-repeat:no-repeat;mask-position:center;mask-size:100% 100%}
.action-chevron-base{background:#58cdf78c}
.action-chevron-sweep{display:block;position:absolute;left:0;top:0;bottom:0;width:54.1667%;background:linear-gradient(90deg,#5ad5ff00,#d9fbff,#5ad5ff00);filter:none;will-change:transform}
@keyframes action-marker-sweep{from{transform:translateX(-100%)}to{transform:translateX(215.385%)}}
@media(prefers-reduced-motion:reduce){.action-chevron-sweep{transform:translateX(42.3%);will-change:auto}}
