/* Shared PrimeUI loading primitives; inactive until enabled by an integrated page. */
.primeui-sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.primeui-skeleton{padding:24px;max-width:950px;margin:16px auto;pointer-events:none}
.primeui-skeleton-title,.primeui-skeleton-line,.primeui-skeleton-card{background:linear-gradient(100deg,#e8f0e9 20%,#d4e4d8 40%,#e8f0e9 60%);background-size:220% 100%;animation:primeui-shimmer 1.3s ease-in-out infinite;border-radius:10px}
.primeui-skeleton-title{height:32px;width:45%;margin-bottom:26px}.primeui-skeleton-line{height:14px;width:85%;margin-bottom:12px}.primeui-skeleton-line.short{width:58%}.primeui-skeleton-card{height:210px;margin-top:22px}
.primeui-busy #prime-page{cursor:progress}
@keyframes primeui-shimmer{to{background-position-x:-220%}}
@media(prefers-reduced-motion:reduce){.primeui-skeleton-title,.primeui-skeleton-line,.primeui-skeleton-card{animation:none}}

html.primeui-fetching #prime-page{cursor:progress}
html.primeui-busy #site-header{pointer-events:auto}
/* Suppress viewport scrolling and hide the content for the atomic swap only. */
html.primeui-switching,html.primeui-switching body{scroll-behavior:auto!important}
html.primeui-switching #prime-page{visibility:hidden!important}
/* The new page appears at its final scroll position, without moving the viewport. */
#prime-page.primeui-enter{animation:primeui-enter .15s ease-out both}
@keyframes primeui-enter{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){#prime-page.primeui-enter{animation:none!important}}
