/* Stable cores and a separate halo keep every status light centred.
   Only transform and opacity animate; no shadow is repainted each frame. */
html body#nw-web #locations .nw-location-health,
html body#nw-web#nw-web .server[data-server-id] .server-state{
 --nw-health-rgb:147,160,180;position:relative;
}
html body#nw-web #locations .nw-location-health-dot,
html body#nw-web#nw-web .server[data-server-id] .server-state:before{
 position:relative;display:block;flex:none;
 width:8px;height:8px;margin:0;padding:0;border:0;border-radius:50%;
 background:rgb(var(--nw-health-rgb));box-shadow:none;pointer-events:none;animation:none;
}
html body#nw-web .server[data-server-id] .server-state:before{content:""}
html body#nw-web #locations .nw-location-health[data-state="up"],
html body#nw-web#nw-web .server[data-server-id][data-state="up"]:not([data-stale="true"]) .server-state{--nw-health-rgb:56,198,142}
html body#nw-web #locations .nw-location-health[data-state="down"],
html body#nw-web#nw-web .server[data-server-id][data-state="down"]:not([data-stale="true"]) .server-state{--nw-health-rgb:237,101,117}
html[data-theme="light"] body#nw-web #locations .nw-location-health[data-state="up"],
html[data-theme="light"] body#nw-web#nw-web .server[data-server-id][data-state="up"]:not([data-stale="true"]) .server-state{--nw-health-rgb:21,132,97}
html[data-theme="light"] body#nw-web #locations .nw-location-health[data-state="down"],
html[data-theme="light"] body#nw-web#nw-web .server[data-server-id][data-state="down"]:not([data-stale="true"]) .server-state{--nw-health-rgb:198,60,81}
html body#nw-web #locations .nw-location-health-dot:before,
html body#nw-web#nw-web .server[data-server-id] .server-state:after{
 content:"";position:absolute;left:0;top:50%;margin-top:-4px;
 width:8px;height:8px;padding:0;box-sizing:border-box;border-radius:50%;
 border:1px solid rgba(var(--nw-health-rgb),.34);background:rgba(var(--nw-health-rgb),.14);
 transform-origin:50% 50%;pointer-events:none;will-change:transform,opacity;
 animation:nw-health-pulse 2s cubic-bezier(.45,0,.55,1) infinite;
}
@keyframes nw-health-pulse{
 0%,100%{transform:scale(1);opacity:.16}
 50%{transform:scale(2.1);opacity:.58}
}
/* Retained homepage sheets in an open tab must not add a second halo. */
html body#nw-web #locations .nw-location-health-dot:after{content:none!important;animation:none!important}
html body#nw-web.page-hidden #locations .nw-location-health-dot:before,
html body#nw-web#nw-web.page-hidden .server[data-server-id] .server-state:after{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){
 html body#nw-web #locations .nw-location-health-dot:before,
 html body#nw-web#nw-web .server[data-server-id] .server-state:after{animation:none!important;opacity:0!important;will-change:auto}
}
