@font-face { font-family:Outfit; src:url("/fonts/outfit-variable.ttf") format("truetype"); font-weight:100 900; font-display:swap; }
/* One loading identity for startup, code splitting, and initial page data. */
.app-loading { box-sizing:border-box; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:12px; min-height:calc(100dvh - 180px); padding:32px 20px; text-align:center; color:var(--foreground); }
.app-loading-startup { min-height:100dvh; background:#f6f5ef; color:#23372a; }
.dark .app-loading-startup { background:#17221c; color:#e5f4d4; }
.app-loading-art { position:relative; width:132px; height:114px; isolation:isolate; }
.app-loading-mark { width:72px; height:72px; position:absolute; top:8px; left:30px; transform:rotate(-8deg); filter:drop-shadow(0 8px 4px #17251e20); }
.app-loading-platform { position:absolute; bottom:8px; left:8px; width:116px; height:28px; border-radius:50%; background:#d9e8b7; box-shadow:0 6px 0 #afc58f,0 12px 14px #17251e15; }
.app-loading-spark { position:absolute; top:4px; right:12px; width:12px; height:12px; border-radius:50%; background:#d9f58a; }
.app-loading-brand { font-family:Outfit,system-ui,sans-serif; font-size:28px; font-weight:700; letter-spacing:-.04em; margin:0; }
.app-loading-label { color:var(--muted-foreground,#617265); font-size:14px; margin:0; max-width:28ch; }
.app-loading-dots { display:flex; gap:7px; margin-top:4px; height:12px; align-items:center; }
.app-loading-dots i { display:block; width:6px; height:6px; border-radius:50%; background:var(--primary,#37634a); opacity:.65; }
@media(prefers-reduced-motion:no-preference) {
 .app-loading-mark { animation:loading-grow 1.8s ease-in-out infinite; }
 .app-loading-dots i { animation:loading-dot 1.2s ease-in-out infinite; }
 .app-loading-dots i:nth-child(2) { animation-delay:.15s; }.app-loading-dots i:nth-child(3) { animation-delay:.3s; }
 @keyframes loading-grow { 0%,100% { transform:translateY(0) rotate(-8deg); } 50% { transform:translateY(-5px) rotate(-3deg); } }
 @keyframes loading-dot { 0%,100% { opacity:.35; } 50% { opacity:1; } }
}

.dark .app-loading-startup .app-loading-label { color:#b5c7b6; }
