/* The small web export carries the website cream; feather only the empty edges
   to hide the colour rounding introduced by video compression. */
html:has([data-site-loader]) { scrollbar-gutter: stable; }
html.is-site-loading { overflow: hidden; }
/* `hidden` stays in the markup as the safe no-JavaScript fallback. The tiny head script
   enables this before body content is parsed, making the first paint the loader itself. */
html.is-site-loading [data-site-loader][hidden] { display: grid !important; }
.site-loading {
    position: fixed;
    inset: 0;
    z-index: 3000;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: var(--cream, #fffaf5);
    opacity: 1;
    transition: opacity 280ms ease;
    touch-action: none;
}
.site-loading.is-leaving { opacity: 0; pointer-events: none; }
.site-loading-media {
    width: clamp(280px, 68vw, 780px);
    aspect-ratio: 16 / 9;
    filter: brightness(1.008);
    mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent),
        linear-gradient(transparent, #000 5%, #000 95%, transparent);
    mask-composite: intersect;
}
.site-loading video { display: block; width: 100%; height: 100%; object-fit: contain; }
@media (prefers-reduced-motion: reduce) {
    .site-loading { display: none !important; transition: none; }
}
