/* Blur-up lazy-loading pair, rendered by <lazy-image>. Ported from
   Examples/Lazy loading/index.html, scoped to .blur-load > img instead of a global `img`
   selector (the example's images are all 1:1; ours aren't — a post's featured image is
   1200x630, a team photo is 400x400 — so aspect ratio is left to the consuming page's own
   container sizing rather than hardcoded here). */

.blur-load {
    position: relative;
    overflow: hidden;
    background-color: #eee;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

.blur-load::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: inherit;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    filter: blur(16px);
    transform: scale(1.1);
    transition: opacity 200ms ease-in-out;
}

.blur-load.loaded::before {
    opacity: 0;
}

.blur-load > img {
    position: relative;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    opacity: 0;
    transition: opacity 200ms ease-in-out;
}

.blur-load.loaded > img {
    opacity: 1;
}

/* No-JS fallback: CSS alone can't detect "JavaScript is disabled" (a `noscript` element
   selector only matches descendants of a literal <noscript> tag, which these aren't) — the
   override has to live inside an actual <noscript><style> block in the page <head>, next to
   this file's <link>. See _AdminLayout.cshtml / _Layout.cshtml. Without it, a no-JS visitor
   would see a permanently blurred placeholder and no image, since nothing ever adds
   .loaded. */
