/* PMK — Loader vert · jaune · rouge */
:root {
    --pmk-loader-green: #0e6740;
    --pmk-loader-yellow: #f5a623;
    --pmk-loader-red: #dc2626;
}

#preloader,
.pmk-preloader,
.preloader {
    position: fixed;
    inset: 0;
    z-index: 9999999;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.96);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    transition: opacity 0.45s ease, visibility 0.45s ease;
}

#preloader.is-hidden,
.pmk-preloader.is-hidden,
.preloader.is-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.pmk-loader {
    position: relative;
    width: 88px;
    height: 88px;
}

.pmk-loader__orbit {
    position: absolute;
    inset: 0;
    animation: pmk-loader-orbit 3s linear infinite;
}

.pmk-loader__ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 5px solid transparent;
    filter: drop-shadow(0 2px 6px rgba(15, 23, 42, 0.12));
}

.pmk-loader__ring--green {
    border-top-color: var(--pmk-loader-green);
    border-right-color: var(--pmk-loader-green);
    animation: pmk-loader-spin 1.15s cubic-bezier(0.55, 0.15, 0.35, 0.95) infinite;
}

.pmk-loader__ring--yellow {
    inset: 11px;
    border-top-color: var(--pmk-loader-yellow);
    border-left-color: var(--pmk-loader-yellow);
    animation: pmk-loader-spin 1.45s cubic-bezier(0.55, 0.15, 0.35, 0.95) infinite reverse;
}

.pmk-loader__ring--red {
    inset: 22px;
    border-bottom-color: var(--pmk-loader-red);
    border-right-color: var(--pmk-loader-red);
    animation: pmk-loader-spin 0.95s cubic-bezier(0.55, 0.15, 0.35, 0.95) infinite;
}

.pmk-loader__core {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 14px;
    height: 14px;
    margin: -7px 0 0 -7px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--pmk-loader-green), var(--pmk-loader-yellow), var(--pmk-loader-red));
    box-shadow:
        0 0 0 4px rgba(255, 255, 255, 0.9),
        0 0 18px rgba(14, 103, 64, 0.45);
    animation: pmk-loader-pulse 1.6s ease-in-out infinite;
}

.pmk-loader__dots {
    position: absolute;
    inset: -6px;
    animation: pmk-loader-orbit 2.2s linear infinite reverse;
}

.pmk-loader__dot {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 10px;
    height: 10px;
    margin: -5px;
    border-radius: 50%;
    box-shadow: 0 0 10px currentColor;
}

.pmk-loader__dot--green {
    color: var(--pmk-loader-green);
    background: var(--pmk-loader-green);
    transform: rotate(0deg) translateY(-46px);
    animation: pmk-loader-dot 1.2s ease-in-out infinite;
}

.pmk-loader__dot--yellow {
    color: var(--pmk-loader-yellow);
    background: var(--pmk-loader-yellow);
    transform: rotate(120deg) translateY(-46px);
    animation: pmk-loader-dot 1.2s ease-in-out 0.15s infinite;
}

.pmk-loader__dot--red {
    color: var(--pmk-loader-red);
    background: var(--pmk-loader-red);
    transform: rotate(240deg) translateY(-46px);
    animation: pmk-loader-dot 1.2s ease-in-out 0.3s infinite;
}

@keyframes pmk-loader-spin {
    to { transform: rotate(360deg); }
}

@keyframes pmk-loader-orbit {
    to { transform: rotate(360deg); }
}

@keyframes pmk-loader-pulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.18); opacity: 0.85; }
}

@keyframes pmk-loader-dot {
    0%, 100% { opacity: 1; box-shadow: 0 0 12px currentColor; }
    50% { opacity: 0.4; box-shadow: 0 0 4px currentColor; }
}
