html.lpw-loading,
html.lpw-loading body {
    overflow: hidden !important;
}

.lpw-loader {
    position: fixed;
    inset: 0;
    z-index: 2147483646;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    background: var(--lpw-bg, #ffffff);
    opacity: 1;
    visibility: visible;
    transition: opacity var(--lpw-fade, 350ms) ease, visibility 0s linear var(--lpw-fade, 350ms);
}

.lpw-loader.lpw-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.lpw-loader-inner {
    position: relative;
    width: var(--lpw-spinner-size, 220px);
    height: var(--lpw-spinner-size, 220px);
    display: flex;
    align-items: center;
    justify-content: center;
}

.lpw-spinner {
    position: absolute;
    inset: 0;
    animation: lpw-rotate 1.7s linear infinite;
}

.lpw-spinner span {
    --angle: calc(var(--lpw-i) * 20deg);
    position: absolute;
    left: 50%;
    top: 50%;
    width: clamp(3px, calc(var(--lpw-spinner-size, 220px) * .024), 7px);
    height: clamp(18px, calc(var(--lpw-spinner-size, 220px) * .12), 34px);
    border-radius: 999px;
    background: var(--lpw-spinner, #1387AA);
    transform-origin: 50% calc(var(--lpw-spinner-size, 220px) * .44);
    transform: translate(-50%, calc(var(--lpw-spinner-size, 220px) * -.44)) rotate(var(--angle));
    opacity: calc(.18 + (var(--lpw-i) * .045));
}

.lpw-logo-wrap {
    position: relative;
    z-index: 2;
    width: 58%;
    height: 58%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 10px;
}

.lpw-logo {
    display: block;
    width: min(var(--lpw-logo-width, 120px), 100%);
    max-height: 100%;
    object-fit: contain;
}

.lpw-logo-placeholder {
    font: 700 14px/1.2 Arial, sans-serif;
    letter-spacing: .08em;
    color: var(--lpw-spinner, #1387AA);
}

@keyframes lpw-rotate {
    to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
    .lpw-spinner { animation-duration: 3.5s; }
}
