/* Page loader (app/core/loader.js) — cream veil, emblem in a turning gold ring, gentle dots. */
#pms-loader {
    position: fixed; left: 0; right: 0; bottom: 0; top: 0; z-index: 8000;
    display: grid; place-items: center;
    background: rgba(247, 239, 225, .86);
    backdrop-filter: blur(2px);
    opacity: 0; visibility: hidden; transition: opacity .22s ease, visibility 0s linear .22s;
}
#pms-loader.on { opacity: 1; visibility: visible; transition: opacity .22s ease; }
#pms-loader .pl-box { display: grid; justify-items: center; gap: 6px; padding: 26px 34px 22px; border-radius: 20px;
    background: #fffaf1; border: 1px solid #e3d2b1; box-shadow: 0 18px 44px rgba(92, 64, 28, .18);
    font: 14px/1.4 system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; color: #2b1e15; min-width: 240px; text-align: center; }
#pms-loader .pl-mark { position: relative; width: 120px; height: 120px; display: grid; place-items: center; margin-bottom: 4px; }
#pms-loader .pl-mark img { width: 72px; height: 72px; border-radius: 50%; box-shadow: 0 4px 14px rgba(122, 84, 16, .25); animation: pl-breathe 2.4s ease-in-out infinite; }
#pms-loader .pl-ring { position: absolute; inset: 0; width: 100%; height: 100%; animation: pl-spin 1.4s linear infinite; }
#pms-loader .pl-track { fill: none; stroke: #f0e2c2; stroke-width: 6; }
#pms-loader .pl-arc { fill: none; stroke: #c9a227; stroke-width: 6; stroke-linecap: round;
    stroke-dasharray: 90 237; transform-origin: 60px 60px; animation: pl-arc 1.4s ease-in-out infinite; }
#pms-loader .pl-title { margin: 0; font-weight: 800; font-size: 16px; color: #7a5410; letter-spacing: .02em; }
#pms-loader .pl-line { margin: 0; min-height: 18px; font-size: 12px; color: #3d3226; }
#pms-loader .pl-dots { display: flex; gap: 6px; margin-top: 2px; }
#pms-loader .pl-dots i { width: 7px; height: 7px; border-radius: 50%; background: #d4af37; animation: pl-dot 1.2s ease-in-out infinite; }
#pms-loader .pl-dots i:nth-child(2) { animation-delay: .15s; }
#pms-loader .pl-dots i:nth-child(3) { animation-delay: .3s; }

@keyframes pl-spin { to { transform: rotate(360deg); } }
@keyframes pl-arc { 0% { stroke-dasharray: 20 307; } 50% { stroke-dasharray: 150 177; } 100% { stroke-dasharray: 20 307; } }
@keyframes pl-breathe { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } }
@keyframes pl-dot { 0%, 80%, 100% { opacity: .25; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-4px); } }

@media (prefers-reduced-motion: reduce) {
    #pms-loader .pl-ring, #pms-loader .pl-arc, #pms-loader img, #pms-loader .pl-dots i { animation: none; }
    #pms-loader .pl-arc { stroke-dasharray: 120 207; }
}
@media print { #pms-loader { display: none !important; } }
