/* One loading treatment. Placeholders never change the host's dimensions. */
:root{--sp-skeleton-base:var(--mc-surface-2,#e7edf2);--sp-skeleton-light:var(--mc-surface,#fff)}
.sp-skeleton-layer{position:absolute;inset:0;z-index:5;overflow:hidden;pointer-events:auto;background:var(--mc-surface,#fff);border-radius:inherit;padding:16px;display:grid;align-content:start;gap:14px}
.sp-skeleton-line{display:block;height:18px;border-radius:6px;flex:none}
.sp-skeleton-line:nth-child(3n+2){width:74%}.sp-skeleton-line:nth-child(3n){width:88%}
.sp-skeleton-static{display:grid;gap:14px;padding:16px;min-height:150px;overflow:hidden}
#list-status.sp-skeleton-fill,#map-status.sp-skeleton-fill{display:inline-block;min-width:100px;min-height:16px;border-radius:5px}
.sp-skeleton-line,.sp-skeleton-fill,html body .mp-skel,html body .pr-bone,.select2-results__option.loading-results{background:linear-gradient(100deg,var(--sp-skeleton-base) 25%,var(--sp-skeleton-light) 45%,var(--sp-skeleton-base) 65%);background-size:240% 100%;animation:sp-skeleton-shift 1.6s linear infinite}
.select2-results__option.loading-results{color:transparent!important;border-radius:6px}
@keyframes sp-skeleton-shift{from{background-position:120% 0}to{background-position:-120% 0}}
/* The old global AJAX wheel and DataTables GIF are retired. */
#ajaxCall,.dataTables_processing{display:none!important}
/* Initial server-loading table cells reserve rows before DataTables starts. */
td.sp-initial-skeleton{height:150px;color:transparent!important;background:repeating-linear-gradient(0deg,transparent 0 16px,var(--sp-skeleton-base) 16px 32px,transparent 32px 46px)}
html body .sl-panel.loading,html body .rp-range-page[aria-busy=true],html body .rp-range-page.rp-range-loading,html body #sx.rp[aria-busy=true],html body #sx.rp.rp-loading,html body .ab-busy{opacity:1!important}
/* Busy controls keep their size and semantics, with a short placeholder inside. */
html body button:is([aria-busy=true],.ab-busy),html body .ab-bar.ab-busy button{position:relative;animation:none!important;cursor:progress}
html body button:is([aria-busy=true],.ab-busy)::after,html body .ab-bar.ab-busy button::after{content:'';position:absolute;inset:9px 12px;border-radius:6px;background:linear-gradient(100deg,var(--sp-skeleton-base) 25%,var(--sp-skeleton-light) 45%,var(--sp-skeleton-base) 65%);background-size:240% 100%;animation:sp-skeleton-shift 1.6s linear infinite;pointer-events:none}
/* Preview masks use the same rectangular placeholder, without dimming content. */
html body .pd-scr.busy .pd-load{opacity:1;background:linear-gradient(100deg,var(--sp-skeleton-base) 25%,var(--sp-skeleton-light) 45%,var(--sp-skeleton-base) 65%);background-size:240% 100%;animation:sp-skeleton-shift 1.6s linear infinite}
html body .mp-khqr-msg.wait::before{content:'';width:48px;height:10px;border:0;border-radius:4px;background:linear-gradient(100deg,var(--sp-skeleton-base) 25%,var(--sp-skeleton-light) 45%,var(--sp-skeleton-base) 65%);background-size:240% 100%;animation:sp-skeleton-shift 1.6s linear infinite}
html body .pr-skeleton::after,html body .pr-image-pending::after{display:none}
html body .pr-image-pending{background:linear-gradient(100deg,var(--sp-skeleton-base) 25%,var(--sp-skeleton-light) 45%,var(--sp-skeleton-base) 65%);background-size:240% 100%;animation:sp-skeleton-shift 1.6s linear infinite}
@media(prefers-reduced-motion:reduce){html body .sp-skeleton-line,html body .sp-skeleton-fill,html body .mp-skel,html body .pr-bone,html body .select2-results__option.loading-results,html body .pr-image-pending,html body .pd-scr.busy .pd-load,html body .mp-khqr-msg.wait::before,html body button:is([aria-busy=true],.ab-busy)::after,html body .ab-bar.ab-busy button::after{animation:none!important}}
