.app-booting body>header,.app-booting body>main,.app-booting body>footer{visibility:hidden;pointer-events:none}
.app-booting body{overflow:hidden}
#app-loading{position:fixed;inset:0;z-index:2000;display:grid;place-items:center;background:var(--surface-page);color:var(--text-primary)}
.app-loading-content{width:min(280px,calc(100vw - 48px));text-align:center}
.app-loading-content .brand-mark{display:block;margin:0 auto 22px;width:52px;height:52px}
.app-loading-content p{font-size:14px;line-height:1.6;color:var(--text-secondary)}
.app-loading-content button{margin:18px auto 0}
.language-progress,.app-loading-track{height:3px;background:var(--accent-soft);border-radius:6px;overflow:hidden}
.language-progress::after,.app-loading-track::after{content:'';display:block;height:100%;width:40%;border-radius:6px;background:var(--text-link);animation:app-progress 1.1s ease-in-out infinite}
.language-loading{margin-top:20px}.language-loading p{font-size:13px;margin:0 0 10px}
.navigation-loading{padding:10px 0 14px;color:var(--text-secondary);font-size:12px;pointer-events:none}
.navigation-loading>span{display:block;margin-bottom:8px}
.navigation-loading-page{position:fixed;inset:0 0 auto;z-index:1500;padding:0;background:var(--surface-page)}
.navigation-loading-page>span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.app-booting .navigation-loading{display:none}
#app-loading.has-error .app-loading-track{display:none}
@keyframes app-progress{from{transform:translateX(-100%)}to{transform:translateX(350%)}}
@media(prefers-reduced-motion:reduce){.language-progress::after,.app-loading-track::after{animation:none;width:100%;opacity:.65}}
