/* PAGE LOADER — Hanya logo, tanpa teks */
.glow-page-loader{
    position:fixed;
    inset:0;
    z-index:2147483647;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px;
    background:
        radial-gradient(circle at 50% 38%, var(--primary-soft, rgba(190,143,238,.34)), transparent 34%),
        radial-gradient(circle at 22% 78%, rgba(255,255,255,.72), transparent 30%),
        linear-gradient(135deg, var(--primary-pale, #f7f1ff) 0%, var(--primary-soft, #eadcf8) 48%, var(--primary, #dfc8f3) 100%);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .12s ease, visibility .12s ease;
}
.glow-page-loader.is-active{
    opacity:1;
    visibility:visible;
    pointer-events:auto;
}
.glow-loader-card{
    width:min(180px, calc(100vw - 48px));
    text-align:center;
}
.glow-loader-logo-wrap{
    width:140px;
    height:140px;
    margin:0 auto;
    display:flex;
    align-items:center;
    justify-content:center;
    border-radius:32px;
    background:rgba(255,255,255,.86);
    box-shadow:0 20px 50px var(--primary-soft, rgba(122,78,162,.20));
    animation:glowLogoPulse 1.2s ease-in-out infinite;
    overflow:hidden;
}
.glow-loader-logo{
    display:block;
    width:110px;
    height:110px;
    object-fit:contain;
}
.glow-loader-logo-text{
    display:flex;
    align-items:center;
    justify-content:center;
    width:110px;
    height:110px;
    font-size:52px;
    font-weight:900;
    color:var(--primary, #4f3668);
    background:var(--primary-pale, rgba(122,78,162,.08));
    border-radius:24px;
    font-family:var(--brand-font-heading, 'Outfit', sans-serif);
}
@keyframes glowLogoPulse{
    0%,100%{transform:scale(1);box-shadow:0 20px 50px var(--primary-soft, rgba(122,78,162,.20))}
    50%{transform:scale(1.06);box-shadow:0 24px 60px var(--primary-soft, rgba(122,78,162,.30))}
}
@media (prefers-reduced-motion:reduce){
    .glow-loader-logo-wrap{animation:none}
}

/* AJAX filter loader area produk */
.catalogue-products-wrap{position:relative}
.catalogue-products-wrap.is-filtering{pointer-events:none;min-height:420px}
.catalogue-products-wrap.is-filtering::before{
    content:'';
    position:absolute;
    inset:-10px;
    z-index:20;
    background:rgba(255,255,255,.72);
    backdrop-filter:blur(7px);
}
.catalogue-products-wrap.is-filtering::after{
    content:'Memuat produk...';
    position:absolute;
    left:50%;
    top:130px;
    z-index:21;
    transform:translateX(-50%);
    min-width:190px;
    height:48px;
    padding:0 22px;
    border-radius:999px;
    background:var(--primary-dark, #111);
    color:var(--btn-primary-text, #fff);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:12px;
    font-weight:950;
    letter-spacing:.12em;
    text-transform:uppercase;
    box-shadow:0 20px 48px rgba(0,0,0,.18);
}
.catalogue-grid.ajax-enter{animation:catalogueAjaxEnter .28s ease both}
@keyframes catalogueAjaxEnter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

/* cart confirm/notif */
.glow-confirm-backdrop{
    position:fixed;inset:0;z-index:99998;display:flex;align-items:center;justify-content:center;padding:24px;
    background:rgba(0,0,0,.52);backdrop-filter:blur(9px);opacity:0;visibility:hidden;transition:.18s ease;
}
.glow-confirm-backdrop.is-active{opacity:1;visibility:visible}
.glow-confirm-card{
    width:min(420px,100%);border-radius:28px;background:#111;color:#fff;border:1px solid rgba(255,255,255,.12);
    box-shadow:0 30px 90px rgba(0,0,0,.46);padding:28px;
}
.glow-confirm-icon{
    width:56px;height:56px;border-radius:999px;background:rgba(255,59,151,.14);color:#ff3b97;
    display:flex;align-items:center;justify-content:center;font-size:26px;margin-bottom:18px;
}
.glow-confirm-card h3{margin:0 0 10px;font-size:24px;font-weight:950;text-transform:uppercase;letter-spacing:-.04em}
.glow-confirm-card p{margin:0;color:rgba(255,255,255,.58);font-weight:700;line-height:1.55}
.glow-confirm-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}
.glow-confirm-actions button{height:46px;border:0;border-radius:999px;padding:0 20px;font-size:12px;font-weight:950;letter-spacing:.08em;text-transform:uppercase}
.glow-confirm-cancel{background:rgba(255,255,255,.1);color:#fff}
.glow-confirm-ok{background:var(--primary, #ff3b97);color:#fff}
.glow-cart-notice{
    position:fixed;right:28px;bottom:28px;z-index:99999;max-width:min(360px,calc(100vw - 48px));
    border-radius:18px;background:#111;color:#fff;border:1px solid rgba(255,255,255,.12);border-left:4px solid var(--primary, #ff3b97);
    box-shadow:0 24px 70px rgba(0,0,0,.32);padding:16px 18px;font-size:13px;font-weight:850;line-height:1.45;
    animation:glowNoticeIn .22s ease both;
}
.glow-cart-notice.success{border-left-color:var(--primary, #4A7A3A)}
@keyframes glowNoticeIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
