/* Loading screen (shared by index.html and admin.html) */
.app-loader{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:24px;text-align:center;
  background:radial-gradient(circle at 50% 35%,#fff7ed 0%,#ffedd5 55%,#fed7aa 100%);
  transition:opacity .55s ease,visibility .55s ease}
.app-loader.hide{opacity:0;visibility:hidden;pointer-events:none}
.app-loader.gone{display:none}
body.is-loading{overflow:hidden}
.loader-inner{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:90vw}
.loader-ring{position:relative;width:132px;height:132px;display:grid;place-items:center}
.loader-ring::before{content:"";position:absolute;inset:0;border-radius:50%;border:5px solid rgba(234,88,12,.18);border-top-color:#ea580c;border-right-color:#f97316;animation:loaderSpin 1.05s linear infinite}
.loader-ring::after{content:"";position:absolute;inset:12px;border-radius:50%;border:2px dashed rgba(153,27,27,.25);animation:loaderSpin 6s linear infinite reverse}
.loader-ring img{width:78px;height:78px;border-radius:50%;object-fit:cover;box-shadow:0 8px 24px rgba(234,88,12,.35);animation:loaderPulse 1.8s ease-in-out infinite}
.loader-title{margin:8px 0 0;font-size:clamp(26px,6vw,40px);font-weight:800;color:#9a3412;letter-spacing:.5px;line-height:1.15;animation:loaderRise .9s ease both}
.loader-tagline{margin:0;color:#78350f;opacity:.85;font-size:15px;animation:loaderRise .9s .15s ease both}
.loader-dots{display:flex;gap:8px;margin-top:8px}
.loader-dots span{width:10px;height:10px;border-radius:50%;background:#ea580c;animation:loaderBounce 1.1s ease-in-out infinite}
.loader-dots span:nth-child(2){animation-delay:.15s;background:#f97316}
.loader-dots span:nth-child(3){animation-delay:.3s;background:#fb923c}
@keyframes loaderSpin{to{transform:rotate(360deg)}}
@keyframes loaderPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
@keyframes loaderRise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes loaderBounce{0%,80%,100%{transform:translateY(0);opacity:.55}40%{transform:translateY(-10px);opacity:1}}
@media (prefers-reduced-motion:reduce){.app-loader *,.app-loader *::before,.app-loader *::after{animation:none!important}}
