/* Stable loading surfaces shared by overviews, library grids and previews. */
.cc-loading-panel { position:relative; min-height:180px; overflow:hidden; border-radius:12px; background:var(--client-overview-soft,#edf0f5)!important; color:transparent!important; }
.cc-loading-panel::before { content:''; position:absolute; inset:18% 12%; border-radius:8px; background:linear-gradient(#ffffff90 0 52%,transparent 52% 61%,#ffffff90 61% 68%,transparent 68% 78%,#ffffff90 78% 85%,transparent 85%); }
.cc-loading-panel::after,.cc-loading-line::after { content:''; position:absolute; inset:0; background:linear-gradient(100deg,transparent 20%,#ffffffa0 50%,transparent 80%); transform:translateX(-100%); animation:cc-loading-sweep 1.5s infinite; }
.cc-loading-line { position:relative; overflow:hidden; display:inline-block; min-width:6rem; min-height:1.2em; border-radius:5px; background:#e8ecf2!important; color:transparent!important; }
.cc-loading-panel > * { visibility:hidden; }
.template-card__viewport { position:relative; }
body.portal-page #panel-objects #object-catalog-grid .template-card__status.cc-loading-panel { position:absolute; inset:8px; min-height:0; z-index:1; padding:0; }
@keyframes cc-loading-sweep { to { transform:translateX(100%); } }
@media(prefers-reduced-motion:reduce) { .cc-loading-panel::after,.cc-loading-line::after { animation:none; } }

/* One calm loading surface; keep incomplete charts out of the initial view. */
.overview-loading { min-height:440px; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:14px; color:#738093; }
.overview-loading[hidden], .admin-home-grid[hidden] { display:none!important; }
.overview-loading strong { font-size:21px; color:#26323e; font-weight:600; }
.overview-loading__spinner { width:44px; height:44px; border:3px solid #e5e8ee; border-top-color:var(--client-overview-accent,#97144d); border-radius:50%; animation:overview-spin .9s linear infinite; margin-bottom:10px; }
@keyframes overview-spin { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce) { .overview-loading__spinner { animation:none; border-style:dotted; } }
