/* GemTrove Global Loading System — customer-facing frontend only. */
:root {
    --gt-loader-ink: #18202b;
    --gt-loader-muted: #6f6a62;
    --gt-loader-gold: #a7833e;
    --gt-loader-gold-soft: #d9c79f;
    --gt-loader-ivory: #fbf9f4;
    --gt-loader-surface: rgba(255, 255, 255, 0.96);
    --gt-loader-line: rgba(167, 131, 62, 0.24);
    --gt-loader-shadow: 0 24px 70px rgba(24, 32, 43, 0.16);
}

.gt-global-loader[hidden] {
    display: none !important;
}

.gt-global-loader {
    position: fixed;
    inset: 0;
    z-index: 2147483000;
    display: grid;
    place-items: center;
    padding: 24px;
    background: rgba(251, 249, 244, 0.92);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    font-family: inherit;
    color: var(--gt-loader-ink);
    opacity: 0;
    visibility: hidden;
    transition: opacity 180ms ease, visibility 180ms ease;
}

.gt-global-loader.is-visible {
    opacity: 1;
    visibility: visible;
}

.gt-global-loader__panel {
    width: min(540px, 100%);
    padding: 30px 28px 24px;
    border: 1px solid var(--gt-loader-line);
    border-radius: 22px;
    background: var(--gt-loader-surface);
    box-shadow: var(--gt-loader-shadow);
    text-align: center;
}

.gt-global-loader__mark {
    width: 82px;
    height: 66px;
    margin: 0 auto 16px;
}

.gt-global-loader__diamond {
    display: block;
    width: 100%;
    height: 100%;
    overflow: visible;
}

.gt-global-loader__diamond path,
.gt-global-loader__diamond polyline,
.gt-global-loader__diamond line {
    fill: none;
    stroke: var(--gt-loader-gold);
    stroke-width: 1.65;
    stroke-linecap: round;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
}

.gt-global-loader__diamond .gt-loader-facet {
    opacity: 0.28;
    animation: gt-loader-facet-glow 1.8s ease-in-out infinite;
}

.gt-global-loader__diamond .gt-loader-facet:nth-child(2) { animation-delay: 120ms; }
.gt-global-loader__diamond .gt-loader-facet:nth-child(3) { animation-delay: 240ms; }
.gt-global-loader__diamond .gt-loader-facet:nth-child(4) { animation-delay: 360ms; }
.gt-global-loader__diamond .gt-loader-facet:nth-child(5) { animation-delay: 480ms; }
.gt-global-loader__diamond .gt-loader-facet:nth-child(6) { animation-delay: 600ms; }

.gt-global-loader__eyebrow {
    margin: 0 0 6px;
    color: var(--gt-loader-gold);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

.gt-global-loader__message {
    margin: 0;
    font-size: clamp(1.08rem, 2vw, 1.34rem);
    font-weight: 650;
    line-height: 1.35;
    letter-spacing: -0.015em;
}

.gt-global-loader__detail {
    max-width: 430px;
    margin: 10px auto 0;
    color: var(--gt-loader-muted);
    font-size: 0.92rem;
    line-height: 1.55;
}

.gt-global-loader__progress {
    position: relative;
    width: min(330px, 84%);
    height: 2px;
    margin: 20px auto 0;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(167, 131, 62, 0.15);
}

.gt-global-loader__progress::after {
    content: "";
    position: absolute;
    inset: 0 auto 0 -42%;
    width: 42%;
    border-radius: inherit;
    background: linear-gradient(90deg, transparent, var(--gt-loader-gold), transparent);
    animation: gt-loader-progress 1.45s ease-in-out infinite;
}

.gt-global-loader__skeletons {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 9px;
    margin-top: 20px;
}

.gt-global-loader__skeleton {
    min-height: 58px;
    border: 1px solid rgba(167, 131, 62, 0.13);
    border-radius: 12px;
    background:
        linear-gradient(100deg, transparent 20%, rgba(255,255,255,.8) 42%, transparent 64%) 0 0 / 220% 100%,
        linear-gradient(#eee9df 0 0) 12px 12px / calc(100% - 24px) 8px no-repeat,
        linear-gradient(#f3efe7 0 0) 12px 29px / 68% 7px no-repeat,
        linear-gradient(#f3efe7 0 0) 12px 43px / 46% 6px no-repeat,
        #fbfaf7;
    animation: gt-loader-shimmer 1.7s linear infinite;
}

.gt-global-loader[data-context="general"] .gt-global-loader__skeletons,
.gt-global-loader[data-context="checkout"] .gt-global-loader__skeletons {
    display: none;
}

@keyframes gt-loader-facet-glow {
    0%, 100% { opacity: 0.24; stroke: var(--gt-loader-gold-soft); }
    50% { opacity: 1; stroke: var(--gt-loader-gold); }
}

@keyframes gt-loader-progress {
    0% { transform: translateX(0); }
    100% { transform: translateX(340%); }
}

@keyframes gt-loader-shimmer {
    to { background-position: -220% 0, 12px 12px, 12px 29px, 12px 43px, 0 0; }
}

@media (max-width: 560px) {
    .gt-global-loader {
        padding: 16px;
    }

    .gt-global-loader__panel {
        padding: 26px 18px 20px;
        border-radius: 18px;
    }

    .gt-global-loader__skeletons {
        grid-template-columns: 1fr;
    }

    .gt-global-loader__skeleton:nth-child(n+2) {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .gt-global-loader,
    .gt-global-loader__diamond .gt-loader-facet,
    .gt-global-loader__progress::after,
    .gt-global-loader__skeleton {
        animation: none !important;
        transition: none !important;
    }

    .gt-global-loader__diamond .gt-loader-facet {
        opacity: 0.78;
    }

    .gt-global-loader__progress::after {
        left: 0;
        width: 100%;
        background: var(--gt-loader-gold);
        opacity: 0.55;
    }
}
