/* --- نوار باریک بارگذاری بالای صفحه: با کلیک روی لینک/ارسال فرم فوراً شروع می‌شه تا کاربر با
   اینترنت ضعیف احساس کنه سایت داره واکنش نشون می‌ده، نه این‌که هنگ کرده --- */
.page-loading-bar {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    height: 3px;
    background: linear-gradient(90deg, var(--brand-blue, #3d63d4), #22c55e);
    z-index: 3000;
    width: 0%;
    opacity: 0;
    transition: width 0.4s ease, opacity 0.2s ease;
}
.page-loading-bar.active {
    opacity: 1;
    width: 78%;
}
.page-loading-bar.done {
    width: 100%;
    opacity: 0;
    transition: width 0.2s ease, opacity 0.4s ease 0.15s;
}

/* --- Overlay تمام‌صفحه، برای درخواست‌های AJAX که طول می‌کشن (مثلاً جست‌وجوی بارهای اطراف، ارسال چت) --- */
.page-loading-overlay {
    position: fixed;
    inset: 0;
    background: rgba(255, 255, 255, 0.72);
    backdrop-filter: blur(1.5px);
    z-index: 2900;
    display: none;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 10px;
}
.page-loading-overlay.active {
    display: flex;
}
.page-loading-spinner {
    width: 42px;
    height: 42px;
    border: 4px solid rgba(61, 99, 212, 0.15);
    border-top-color: var(--brand-blue, #3d63d4);
    border-radius: 50%;
    animation: page-loading-spin 0.7s linear infinite;
}
.page-loading-overlay-text {
    font-size: 0.85rem;
    color: var(--brand-navy, #1a2b56);
    font-weight: 600;
}
@keyframes page-loading-spin {
    to { transform: rotate(360deg); }
}

/* --- اسپینر ریز، برای داخل خودِ دکمه‌ها هنگام ارسال (مثلاً دکمه‌ی ثبت) --- */
.btn-inline-spinner {
    display: inline-block;
    width: 14px;
    height: 14px;
    border: 2px solid rgba(255, 255, 255, 0.4);
    border-top-color: #fff;
    border-radius: 50%;
    animation: page-loading-spin 0.6s linear infinite;
    vertical-align: -2px;
}
