:root{--font-heading:'Lato',-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica Neue',Arial,sans-serif;--font-body:'Lato',-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica Neue',Arial,sans-serif;--font-mono:'SF Mono',Monaco,'Cascadia Code','Roboto Mono',Consolas,'Courier New',monospace}
.lang-intl{--font-heading:'Noto Sans',-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica Neue',Arial,sans-serif;--font-body:'Noto Sans',-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica Neue',Arial,sans-serif}
html[lang="ar"]{--font-heading:'Noto Sans Arabic','Noto Sans',-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica Neue',Arial,sans-serif;--font-body:'Noto Sans Arabic','Noto Sans',-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica Neue',Arial,sans-serif}
html[lang="ja"]{--font-heading:'Noto Sans JP','Noto Sans',-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica Neue',Arial,sans-serif;--font-body:'Noto Sans JP','Noto Sans',-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica Neue',Arial,sans-serif}
html[lang="zh"]{--font-heading:'Noto Sans SC','Noto Sans',-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica Neue',Arial,sans-serif;--font-body:'Noto Sans SC','Noto Sans',-apple-system,BlinkMacSystemFont,'Segoe UI','Roboto','Helvetica Neue',Arial,sans-serif}
.font-heading{font-family:var(--font-heading)}.font-body{font-family:var(--font-body)}.font-mono{font-family:var(--font-mono)}
.text-balance{text-wrap:balance}.font-feature-numbers{font-feature-settings:'tnum','lnum'}.font-optical-sizing{font-optical-sizing:auto}
h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)}body,p,span,div{font-family:var(--font-body)}button,.btn{font-family:var(--font-body);font-weight:500}nav a{font-family:var(--font-body);font-weight:500}input,textarea,select{font-family:var(--font-body)}
@media(prefers-reduced-motion:no-preference){.font-heading{text-rendering:optimizeLegibility}.font-body{text-rendering:optimizeSpeed}}
.font-loading .font-heading,.font-loading .font-body{visibility:hidden}.fonts-loaded .font-heading,.fonts-loaded .font-body{visibility:visible}
[data-reveal]{opacity:0;transform:translateY(40px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1)}
[data-reveal].revealed{opacity:1;transform:none}
[data-reveal="left"]{opacity:0;transform:translateX(-40px)}[data-reveal="left"].revealed{opacity:1;transform:none}
[data-reveal="right"]{opacity:0;transform:translateX(40px)}[data-reveal="right"].revealed{opacity:1;transform:none}
[data-reveal="scale"]{opacity:0;transform:scale(.92)}[data-reveal="scale"].revealed{opacity:1;transform:none}
[data-reveal="fade"]{opacity:0;transform:none}[data-reveal="fade"].revealed{opacity:1}
#static-splash {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    background: hsl(var(--background));
    opacity: 1;
    transition: opacity 0.4s ease, visibility 0.4s ease;
}
#static-splash.hiding {
    opacity: 0;
    visibility: hidden;
}
.splash-content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2rem;
    text-align: center;
}
.logo-burst {
    position: relative;
    z-index: 10;
}
.dash-logo {
    width: 120px;
    height: auto;
    filter: drop-shadow(0 4px 12px hsl(var(--primary)/0.3));
}
.logo-burst-left,
.logo-burst-right {
    animation: logo-appear 0.6s ease-out forwards;
    transform-origin: center;
    opacity: 0;
}
.logo-burst-right {
    animation-delay: 0.1s;
}
@keyframes logo-appear {
    0% { transform: scale(0.8); opacity: 0; }
    100% { transform: scale(1); opacity: 1; }
}
.typewriter-container {
    display: flex;
    align-items: center;
    gap: 2px;
    font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', monospace;
    font-size: 1.5rem;
    font-weight: 600;
    color: hsl(var(--foreground));
    min-height: 2rem;
}
.typewriter-text {
    background: linear-gradient(135deg, hsl(var(--primary)), hsl(var(--accent)));
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}
.cursor {
    color: hsl(var(--primary));
    font-weight: 400;
    animation: cursor-blink 1s infinite;
}
@keyframes cursor-blink {
    0%, 50% { opacity: 1; }
    51%, 100% { opacity: 0; }
}
.loading-indicator {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    width: 200px;
}
.loading-bar {
    width: 100%;
    height: 2px;
    background: hsl(var(--muted));
    border-radius: 1px;
    overflow: hidden;
}
.loading-progress {
    height: 100%;
    background: linear-gradient(90deg, hsl(var(--primary)), hsl(var(--accent)));
    border-radius: 1px;
    width: 0%;
    animation: load-progress 1.5s ease-out forwards;
}
@keyframes load-progress {
    0% { width: 0%; }
    100% { width: 100%; }
}
.loading-text {
    font-size: 0.75rem;
    color: hsl(var(--muted-foreground));
    font-weight: 500;
}
@media (max-width: 768px) {
    .dash-logo { width: 100px; }
    .typewriter-container { font-size: 1.25rem; }
    .loading-indicator { width: 160px; }
}

.dashboard-layout-body-shell {
    max-width: 100vw;
    overflow-x: hidden;
}

.reveal-delay-100 { transition-delay: 0.1s; }
.reveal-delay-150 { transition-delay: 0.15s; }
.reveal-delay-200 { transition-delay: 0.2s; }
.reveal-delay-300 { transition-delay: 0.3s; }
.reveal-delay-400 { transition-delay: 0.4s; }
.reveal-delay-500 { transition-delay: 0.5s; }
.reveal-delay-600 { transition-delay: 0.6s; }

.anim-delay-50 { animation-delay: 50ms; }
.anim-delay-60 { animation-delay: 60ms; }
.anim-delay-80 { animation-delay: 80ms; }
.anim-delay-110 { animation-delay: 110ms; }
.anim-delay-150 { animation-delay: 150ms; }
.anim-delay-200 { animation-delay: 200ms; }
.anim-delay-220 { animation-delay: 220ms; }
.anim-delay-250 { animation-delay: 250ms; }
.anim-delay-300 { animation-delay: 300ms; }
.anim-delay-350 { animation-delay: 350ms; }
.anim-delay-400 { animation-delay: 400ms; }
.anim-delay-450 { animation-delay: 450ms; }
.anim-delay-500 { animation-delay: 500ms; }
.anim-delay-550 { animation-delay: 550ms; }
.anim-delay-600 { animation-delay: 600ms; }
.anim-delay-660 { animation-delay: 660ms; }
.anim-delay-720 { animation-delay: 720ms; }
.anim-delay-1000 { animation-delay: 1s; }

.maintenance-spinner {
    animation-duration: 3s;
}

.exchange-hero-orb--delayed {
    animation-delay: 1s;
}
