/* Small, local brand asset: it must load before versioned Flutter assets. */
#meetingram-web-loader { background:#000; }
.web-loader-card { position:relative; width:120px; padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; }
.web-loader-card::before { content:""; position:absolute; top:0; inset-inline-start:calc(50% - 48px); box-sizing:border-box; width:96px; height:96px; border:1.5px solid #303034; border-top-color:#fff; border-radius:50%; animation:brand-loader-orbit 1.4s linear infinite; pointer-events:none; }
.web-loader-logo { width:64px; height:64px; margin:16px auto; border-radius:14px; object-fit:contain; filter:none; }
.web-loader-title,.web-loader-track,.web-loader-percent { display:none; }
.web-loader-stage { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.web-loader-retry { display:none; min-height:44px; margin:18px auto 0; padding:10px 24px; background:#242428; color:#fff; border:1px solid #414148; border-radius:12px; font:inherit; cursor:pointer; }
.web-loader-retry:focus-visible { outline:2px solid #fff; outline-offset:3px; }
#meetingram-web-loader.has-error .web-loader-card { width:min(320px,calc(100vw - 48px)); }
#meetingram-web-loader.has-error .web-loader-card::before { animation-play-state:paused; border-top-color:#E94B5F; }
#meetingram-web-loader.has-error .web-loader-error { margin-top:28px; }
#meetingram-web-loader.has-error .web-loader-retry { display:block; }
@keyframes brand-loader-orbit { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce) { .web-loader-card::before { animation:none; } }
