.app-loader { position: fixed; inset: 0; z-index: 11000; display: grid; place-items: center; background: #f7fafc; color: #145e7a; pointer-events: none; opacity: 1; transition: opacity 360ms cubic-bezier(.22,1,.36,1); animation: loader-safety 1ms 4500ms forwards; }
.app-loader[hidden] { display: none; }
.app-loader--wellness { background: #faf8f3; color: #4a6b4f; }
.app-loader-card { position: relative; display: grid; place-items: center; width: 144px; height: 144px; }
.app-loader-card > span { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.app-loader-art { display: block; width: 92px; height: 92px; object-fit: contain; animation: loader-breathe 2600ms ease-in-out infinite; }
.app-loader-orbit { position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: visible; animation: loader-orbit 3200ms linear infinite; }
.app-loader-ring-track { fill: none; stroke: currentColor; stroke-width: 1; opacity: .08; }
.app-loader-ring { fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-dasharray: 96 306; opacity: .45; }
.app-loader.is-finished { opacity: 0; }
@keyframes loader-orbit { to { transform: rotate(360deg); } }
@keyframes loader-breathe { 0%,100% { transform: scale(.96); } 50% { transform: scale(1.04); } }
@keyframes loader-safety { to { visibility: hidden; opacity: 0; } }
@media(prefers-reduced-motion:reduce) { .app-loader-orbit,.app-loader-art { animation: none; } .app-loader { transition: none; } }
