.loading-modal{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:20px;visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s ease}
.loading-modal.is-visible{visibility:visible;opacity:1}
.loading-backdrop{position:absolute;inset:0;background:rgba(12,35,32,.76);backdrop-filter:blur(7px)}
.loading-card{position:relative;width:min(310px,calc(100vw - 40px));padding:34px 28px;text-align:center;border:1px solid rgba(255,255,255,.65);border-radius:22px;background:rgba(255,250,246,.96);box-shadow:0 24px 80px rgba(0,0,0,.32)}
.loading-card strong,.loading-card>span{display:block}.loading-card strong{margin-top:12px;font-size:1.12rem;color:var(--green)}.loading-card>span{margin-top:3px;font-size:.86rem;color:var(--muted)}
.coffee-loader{position:relative;width:88px;height:78px;margin:4px auto 0;display:grid;place-items:end center}
.coffee-loader img{width:65px;height:65px;object-fit:contain;animation:cup-float 1.4s ease-in-out infinite}
.steam{position:absolute;top:-4px;width:3px;height:25px;border-radius:99px;background:linear-gradient(to top,rgba(49,91,85,0),rgba(49,91,85,.65));animation:steam-rise 1.5s ease-in-out infinite}
.steam-one{left:32px}.steam-two{left:44px;animation-delay:.22s}.steam-three{left:56px;animation-delay:.44s}
.loading-dots{display:flex;justify-content:center;gap:6px;margin-top:18px}.loading-dots i{width:7px;height:7px;border-radius:50%;background:var(--peach);animation:dot-bounce 1s ease-in-out infinite}.loading-dots i:nth-child(2){animation-delay:.15s}.loading-dots i:nth-child(3){animation-delay:.3s}
body.is-loading{overflow:hidden}
@keyframes cup-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes steam-rise{0%{transform:translateY(8px) scaleY(.55);opacity:0}45%{opacity:1}100%{transform:translateY(-13px) scaleY(1.15);opacity:0}}
@keyframes dot-bounce{0%,60%,100%{transform:translateY(0);opacity:.45}30%{transform:translateY(-6px);opacity:1}}
@media(prefers-reduced-motion:reduce){.coffee-loader img,.steam,.loading-dots i{animation:none}}
