.page-shell { position: relative; }
.page-loading { position: fixed; top: var(--loading-top, 52px); left: var(--loading-left, 0px); right: var(--loading-right, 0px); bottom: 0; z-index: 4; padding: 18px 24px; background: var(--bg, #f6f7f9); overflow: hidden; }
.page-loading[hidden] { display: none !important; }
.loading-heading { display: flex; justify-content: space-between; gap: 20px; margin-bottom: 22px; }
.loading-block { display: block; position: relative; overflow: hidden; border-radius: 4px; background: var(--line, #e6ebe7); }
.loading-block::after { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg, transparent 15%, var(--surface, #fff) 50%, transparent 85%); opacity: .65; transform: translateX(-100%); animation: page-shimmer 1.5s ease-in-out infinite; }
.loading-title { width: 32%; max-width: 280px; height: 25px; }
.loading-action { width: 110px; height: 36px; }
.loading-filter { width: 55%; max-width: 540px; height: 38px; margin-bottom: 24px; }
.loading-row { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 20px; padding: 16px 0; border-top: 1px solid var(--line, #e6ebe7); }
.loading-row .loading-block { height: 14px; }
.loading-announcement { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@keyframes page-shimmer { to { transform: translateX(100%); } }
@media (max-width: 600px) {
    .page-loading { padding: 14px; }
    .loading-title { width: 48%; }
    .loading-filter { width: 100%; }
    .loading-row { grid-template-columns: 2fr 1fr 1fr; gap: 12px; }
    .loading-row .loading-block:last-child { display: none; }
}
@media (prefers-reduced-motion: reduce) { .loading-block::after { animation: none; transform: none; opacity: .15; } }
@media print { .page-loading, .loading-announcement { display: none !important; } }