/* Universal branded page loader — shared across authenticated and public pages */
.crm-page-loader {
    position: fixed;
    z-index: 100000;
    inset: 0;
    display: grid;
    overflow: hidden;
    background:
        radial-gradient(circle at 50% 43%, rgba(152,33,126,.085), transparent 24%),
        radial-gradient(circle at 56% 48%, rgba(239,164,44,.08), transparent 29%),
        #faf8fa;
    opacity: 1;
    transition: opacity .24s ease,visibility .24s ease;
    place-items: center;
}
.crm-page-loader::before,
.crm-page-loader::after { position: absolute; content: ""; border: 1px solid rgba(111,25,92,.055); border-radius: 50%; pointer-events: none; }
.crm-page-loader::before { width: 520px; height: 520px; }
.crm-page-loader::after { width: 680px; height: 680px; border-color: rgba(239,164,44,.055); }
.crm-page-loader.is-leaving { visibility: hidden; opacity: 0; }
.crm-loader-content { position: relative; z-index: 1; display: flex; min-width: 230px; align-items: center; flex-direction: column; text-align: center; }
.crm-loader-logo-wrap { position: relative; display: grid; width: 112px; height: 112px; margin-bottom: 18px; place-items: center; }
.crm-loader-logo { position: relative; z-index: 2; display: grid; width: 78px; height: 78px; overflow: hidden; border: 4px solid rgba(255,255,255,.95); border-radius: 24px; background: #fff; box-shadow: 0 14px 34px rgba(54,15,48,.18); place-items: center; }
.crm-loader-logo img { display: block; width: 70px; height: 70px; object-fit: contain; }
.crm-loader-ring { position: absolute; border: 2px solid transparent; border-radius: 50%; }
.crm-loader-ring-one { width: 102px; height: 102px; border-top-color: #98217e; border-right-color: rgba(152,33,126,.25); animation: crmLoaderSpin 1.05s linear infinite; }
.crm-loader-ring-two { width: 112px; height: 112px; border-bottom-color: #efa42c; border-left-color: rgba(239,164,44,.25); animation: crmLoaderSpinReverse 1.4s linear infinite; }
.crm-loader-content > strong { color: #321b35; font-size: 13px; font-weight: 750; letter-spacing: -.01em; }
.crm-loader-caption { margin-top: 5px; color: #8d7f90; font-size: 8px; font-weight: 650; letter-spacing: .08em; text-transform: uppercase; }
.crm-loader-progress-track { width: 168px; height: 4px; margin-top: 18px; overflow: hidden; border-radius: 8px; background: rgba(84,22,76,.09); }
.crm-loader-progress-fill { width: 45%; height: 100%; border-radius: inherit; background: linear-gradient(90deg,#54164c,#98217e,#efa42c); box-shadow: 0 0 10px rgba(152,33,126,.22); animation: crmLoaderProgress 1.05s ease-in-out infinite; }
@keyframes crmLoaderSpin { to { transform: rotate(360deg); } }
@keyframes crmLoaderSpinReverse { to { transform: rotate(-360deg); } }
@keyframes crmLoaderProgress { 0% { transform: translateX(-115%); } 55% { transform: translateX(90%); } 100% { transform: translateX(265%); } }
@media (prefers-reduced-motion: reduce) {
    .crm-loader-ring,
    .crm-loader-progress-fill { animation-duration: 2.2s; }
}
