:root{--background:#0b1326;--surface:#0b1326cc;--surface-bright:#31394d;--on-surface:#dae2fd;--on-surface-variant:#b9cacb;--outline:#849495;--primary:#dbfcff;--on-primary:#00363a;--surface-tint:#00dbe9;--success:#10b981;--warning:#f59e0b;--error:#ef4444;--font-heading:"Space Grotesk", sans-serif;--font-body:"Inter", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--base-unit:4px;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:48px;--radius-sm:.125rem;--radius-md:.25rem;--radius-lg:.5rem;--glass-blur:blur(12px);--glass-border:1px solid #ffffff26;--glass-bg:#ffffff0d}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--background);color:var(--on-surface);font-family:var(--font-body);min-height:100vh;padding-bottom:0;overflow-x:hidden}@media (width<=768px){body{padding-bottom:80px}}h1,h2,h3,h4,.label-caps{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.05em}.app-layout{min-height:100vh;display:flex}.main-content{padding:var(--space-lg);flex:1;width:100%;overflow-y:auto}@media (width<=768px){.app-layout{flex-direction:column}.main-content{padding:var(--space-md);padding-top:calc(var(--space-md) + 30px)}}.label-caps{color:var(--on-surface-variant);font-size:.75rem;font-weight:700}.glass-card{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);border:var(--glass-border);border-radius:var(--radius-lg);padding:var(--space-lg);position:relative;overflow:hidden}.glass-nav{-webkit-backdrop-filter:blur(20px);border-top:var(--glass-border);z-index:1000;height:70px;padding:0 var(--space-md);background:#0b1326b3;justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}.glass-card:before{content:"";background:linear-gradient(90deg,#0000,#fff3,#0000);height:1px;position:absolute;top:0;left:0;right:0}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--background)}::-webkit-scrollbar-thumb{background:var(--surface-bright);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--outline)}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}.animate-slide-left{animation:.3s cubic-bezier(.4,0,.2,1) forwards slideInLeft}.animate-slide-right{animation:.3s cubic-bezier(.4,0,.2,1) forwards slideInRight}.animate-fade{animation:.3s cubic-bezier(.4,0,.2,1) forwards fadeIn}.spinning{animation:2s linear infinite spin}.status-dot{border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.status-dot.active{background-color:var(--success);box-shadow:0 0 8px var(--success);animation:2s infinite pulse}.desktop-only{display:block}.mobile-only{display:none}@media (width<=768px){.desktop-only{display:none!important}.mobile-only{display:block!important}.grid-responsive{grid-template-columns:1fr!important}}.update-spinner{animation:1.2s linear infinite spin}.update-pulse{animation:1.5s ease-in-out infinite updatePulse}@keyframes updatePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.15)}}.update-bounce{animation:.8s ease-in-out infinite updateBounce}@keyframes updateBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.update-progress-bar{background:linear-gradient(90deg, var(--primary) 0%, var(--surface-tint) 50%, var(--primary) 100%);background-size:200% 100%;animation:1.5s ease-in-out infinite progressShimmer}@keyframes progressShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.update-glow{pointer-events:none;background:radial-gradient(#f59e0b14 0%,#0000 70%);width:200%;height:200%;animation:2.5s ease-in-out infinite glowPulse;position:absolute;top:-50%;left:-50%}@keyframes glowPulse{0%,to{opacity:.5}50%{opacity:1}}.update-card{position:relative}.update-card .label-caps{z-index:1;position:relative}
