/* Images retain their existing layout and background while decoding. */
main img { transition: opacity 240ms ease; }
main img.image-pending { opacity: 0; animation: image-loading-failsafe 0s 8s forwards; }
@keyframes image-loading-failsafe { to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  main img { transition: none; }
}
