.loader{display:flex; flex-direction:column; align-items:center; gap:var(--space-14); text-align:center;}

.loader-ic{display:flex; align-items:center; justify-content:center; width:var(--size-44); height:var(--size-44); border-radius:var(--radius-12); color:var(--c); background:color-mix(in srgb, var(--c) 15%, transparent);}
.loader-ic svg{width:var(--ic-24); height:var(--ic-24);}
.loader-who{margin:0; font-size:var(--fs-body); font-weight:600; color:var(--text-bright);}

.loader-dots{display:flex; gap:var(--space-6);}
.loader-dots i{width:var(--size-8); height:var(--size-8); border-radius:var(--radius-full); background:var(--c); opacity:.25; animation:loader-pulse 1.2s ease-in-out infinite;}
.loader-dots i:nth-child(2){animation-delay:.16s;}
.loader-dots i:nth-child(3){animation-delay:.32s;}
@keyframes loader-pulse{0%,100%{opacity:.25; transform:scale(.85);} 45%{opacity:1; transform:scale(1);}}

.loader-wait{margin:0; font-size:var(--fs-body); color:var(--text-muted);}

.loader-late{margin:0; font-size:var(--fs-body); color:var(--text-muted); max-width:26ch;}

@media (prefers-reduced-motion: reduce){ .loader-dots i{animation:none; opacity:.55;} }
