/* Même langage d'attente, dans le contenu et sans bloquer la navigation. */
.app-loading{padding:20px 16px;visibility:hidden;color:var(--text-secondary);max-width:100%;box-sizing:border-box}
.app-loading.is-visible{visibility:visible}
.app-loading-status{display:flex;align-items:center;gap:12px;margin:0 0 20px;font-size:.85rem;line-height:1.5}
.app-loading-progress{position:relative;flex:0 0 32px;height:3px;overflow:hidden;border-radius:2px;background:var(--border-default)}
.app-loading-progress::after{content:"";position:absolute;inset:0;background:currentColor;transform-origin:left;animation:app-loading-progress 1.6s ease-in-out infinite}
.app-loading-cards{display:grid;gap:12px}
.app-loading-card{display:flex;gap:14px;padding:20px 16px;min-height:128px;box-sizing:border-box;border:1px solid var(--border-subtle);border-radius:var(--radius);background:var(--bg-surface)}
.app-loading-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:13px;padding-top:3px}
.app-loading-block{display:block;background:var(--border-default);border-radius:4px;animation:app-loading-pulse 1.8s ease-in-out infinite}
.app-loading-avatar{flex:0 0 38px;height:38px;border-radius:8px}
.app-loading-title{width:76%;height:16px}
.app-loading-line{width:94%;height:11px}
.app-loading-meta{width:42%;height:10px;margin-top:7px}
.app-loading-card:nth-child(2) .app-loading-title{width:58%}
.app-loading-card:nth-child(3) .app-loading-line{width:78%}
.app-loading--compact{padding:12px 16px}
.app-loading--compact .app-loading-status{margin:0}
.app-loading-error{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 20px;color:var(--text-secondary);text-align:center;line-height:1.6}
.app-loading-error p{margin:0}
@keyframes app-loading-pulse{0%,100%{opacity:.45}50%{opacity:.8}}
@keyframes app-loading-progress{0%,100%{transform:scaleX(.3);opacity:.5}50%{transform:scaleX(1);opacity:1}}
/* Les anciens blocs des graphiques suivent eux aussi la préférence système. */
@media(prefers-reduced-motion:reduce){.app-loading-block,.app-loading-progress::after,.skeleton{animation:none!important}.app-loading-block{opacity:.65}}
