.root-initial-loader {
    position: fixed; inset: 0; display: grid; place-items: center;
    background: var(--crm-bg, #fcfcfd); z-index: 100000;
}
.crm-startup { width: min(240px, calc(100vw - 48px)); display: grid; gap: 28px; }
.crm-startup img { display: block; width: 180px; max-width: 100%; margin: auto; }
.crm-progress-track { height: 3px; overflow: hidden; background: var(--crm-accent-soft, #f0edff); }
.crm-progress-track > span {
    display: block; width: 36%; height: 100%; background: var(--crm-accent, #5b4bd8);
    animation: crm-loading-slide 1.25s ease-in-out infinite;
}
.crm-route-progress { position: fixed; inset: 0 0 auto; z-index: 100000; pointer-events: none; }
.crm-route-error { position: fixed; top: 8px; right: 16px; z-index: 100001; max-width: calc(100% - 32px); padding: 12px; border: 1px solid var(--crm-border, #ddd); background: var(--crm-surface, #fff); color: var(--crm-text, #27272a); }
.crm-global-loading .ngx-spinner-overlay { background: transparent !important; }
.crm-global-loading .ngx-spinner-overlay > div:not(.loading-text) { top: 0; left: 0; width: 100%; transform: none; }
.crm-global-loading .ngx-spinner-overlay .loading-text { top: 8px; left: auto; right: 16px; transform: none; max-width: calc(100% - 32px); padding: 4px 8px; color: var(--crm-text, #27272a); background: var(--crm-surface, #fff); font: 500 14px/1.5 system-ui, sans-serif; }
.crm-global-loading .loading-text p { margin: 0; }
.crm-global-loading:has(.ngx-spinner-overlay) ~ .crm-route-progress { display: none; }

.crm-load-region { position: relative; }
.crm-load-ui { position: absolute; inset: 0 0 auto; z-index: 5; min-width: 0; pointer-events: none; }
.crm-load-ui[hidden], .crm-load-ui button[hidden] { display: none !important; }
.crm-load-ui button { pointer-events: auto; margin-top: 8px; }
.crm-load-label { display: block; color: var(--crm-muted, #71717a); font-size: 13px; padding: 6px 12px; }
.crm-load-initial { min-height: 180px; }
.crm-load-initial[data-load-layout="detail"] { min-height: 440px; }
.crm-load-initial > :not(.crm-load-ui), .crm-load-empty-error > :not(.crm-load-ui) { visibility: hidden; }
.crm-load-initial > .crm-load-ui { inset: 0; overflow: hidden; background: var(--crm-surface, #fff); }
.crm-load-initial > .crm-load-ui > .crm-progress-track { display: none; }
.crm-load-empty-error { min-height: 110px; }
.crm-load-failed > .crm-load-ui { position: relative; order: -1; flex: 0 0 auto; padding: 12px; background: var(--crm-surface, #fff); border-bottom: 1px solid var(--crm-border, #ddd); }
.crm-load-failed > .crm-load-ui > .crm-load-label { padding: 0; color: var(--crm-text, #27272a); }
.crm-load-failed > .crm-load-ui > .crm-progress-track { display: none; }
.crm-load-empty-error > .crm-load-ui { position: absolute; inset: 0; }
.crm-skeleton { display: none; }
.crm-load-initial > .crm-load-ui > .crm-skeleton { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 32px; padding: 20px; }
.crm-skeleton > span {
    height: 18px; border-radius: 4px;
    background: linear-gradient(90deg, var(--crm-hover, #eee) 25%, var(--crm-surface, #fafafa) 50%, var(--crm-hover, #eee) 75%);
    background-size: 200% 100%; animation: crm-loading-shimmer 1.5s ease-in-out infinite;
}
.crm-skeleton > span:nth-child(3n) { width: 72%; }
.crm-load-initial[data-load-layout="detail"] .crm-skeleton { gap: 46px 32px; }
@keyframes crm-loading-slide { from { transform: translateX(-100%); } to { transform: translateX(380%); } }
@keyframes crm-loading-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }
@media (prefers-reduced-motion: reduce) {
    .crm-progress-track > span, .crm-skeleton > span { animation: none; }
}
@media (max-width: 560px) {
    .crm-load-initial > .crm-load-ui > .crm-skeleton { grid-template-columns: 1fr; gap: 20px; }
}
