/* Shared by the pre-JavaScript document and React loading states. */
.app-loading { --loading-ink:#262626; --loading-paper:#fafafa; position:relative; display:grid; place-items:center; min-height:240px; width:100%; color:var(--loading-ink); background:var(--loading-paper); font-family:"PingFang SC","Microsoft YaHei",sans-serif; }
.dark .app-loading { --loading-ink:#f4f4f4; --loading-paper:#101010; }
.app-loading.app-loading--brand { --loading-ink:#f4f4f4; --loading-paper:#080808; }
.app-loading--screen { min-height:100svh; }
.app-loading--boot { position:fixed; inset:0; z-index:100; }
.app-loading__content { display:flex; flex-direction:column; align-items:center; gap:30px; padding:32px; text-align:center; }
.app-loading__frames { width:92px; height:82px; position:relative; }
.app-loading__frames i { position:absolute; inset:17px 12px; border:1px solid currentColor; border-radius:10px; opacity:.22; transform:translate(-12px,-10px) rotate(-12deg); animation:app-loading-frames 2.4s cubic-bezier(.45,0,.25,1) infinite; }
.app-loading__frames i:nth-child(2) { transform:translate(0,0); animation-delay:.16s; opacity:.48; }
.app-loading__frames i:nth-child(3) { transform:translate(12px,10px) rotate(12deg); animation-delay:.32s; opacity:.9; background:color-mix(in srgb,currentColor 5%,transparent); }
.app-loading__frames i:nth-child(3)::after { content:""; position:absolute; inset:18px 25px; border-left:7px solid currentColor; border-top:5px solid transparent; border-bottom:5px solid transparent; opacity:.75; }
.app-loading__copy { display:flex; flex-direction:column; gap:8px; }
.app-loading__label { font-size:13px; font-weight:400; letter-spacing:2px; opacity:.8; }
.app-loading__detail { font-size:12px; line-height:1.6; opacity:.42; }
.app-loading__track { width:80px; height:1px; overflow:hidden; background:color-mix(in srgb,currentColor 12%,transparent); }
.app-loading__track::after { content:""; display:block; width:32px; height:1px; background:currentColor; opacity:.65; animation:app-loading-scan 1.8s ease-in-out infinite; }
.app-loading--compact .app-loading__frames { transform:scale(.75); margin-block:-10px; }
.app-loading--compact .app-loading__content { gap:20px; }
@keyframes app-loading-frames { 0%,100% { scale:1; } 50% { translate:0 -6px; scale:1.04; } }
@keyframes app-loading-scan { 0% { transform:translateX(-32px); } 100% { transform:translateX(80px); } }
@media(prefers-reduced-motion:reduce) { .app-loading__frames i,.app-loading__track::after { animation:none; } .app-loading__track::after { transform:translateX(24px); } }
.app-loading.canvas-entry-loading { height:100%; }
.app-loading.auth-form-loading { color:inherit; background:transparent; }
.workspace-route-loader > .app-loading { height:100%; }
