.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; background-color: #f4f5f7; }
.dark body { background-color: #0a0c10; }

.sidebar-banner { background-image: var(--bg-light, url('https://images.unsplash.com/photo-1506744626753-1fa44df14d28?q=80&w=2000&auto=format&fit=crop')) !important; }
.dark .sidebar-banner { background-image: var(--bg-dark, url('https://images.unsplash.com/photo-1497215848143-433db9b07185?q=80&w=2000&auto=format&fit=crop')) !important; }

.cat-btn.active { background-color: #eff6ff !important; color: #3b82f6 !important; border-color: #bfdbfe !important; font-weight: bold; }
.dark .cat-btn.active { background-color: #1e3a8a !important; color: #60a5fa !important; border-color: #1e3a8a !important; }

.engine-btn.active { font-weight: bold; color: #ffffff; position: relative; }
.dark .engine-btn.active { color: #ffffff; }
.engine-btn.active::after {
    content: ''; position: absolute; bottom: -8px; left: 50%; transform: translateX(-50%);
    border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid #ffffff;
}

.grid-animating { opacity: 0; transform: translateY(10px); transition: all 0.3s ease-out; }
.grid-visible { opacity: 1; transform: translateY(0); transition: all 0.3s ease-out; }

.loader-spin { border: 4px solid rgba(59, 130, 246, 0.2); border-top-color: #3b82f6; border-radius: 50%; width: 40px; height: 40px; animation: spin 1s linear infinite; }
@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }

.tab-fade-in { animation: fadeIn 0.3s ease-in-out forwards; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }

/* 图片磨玻璃特效 */
.glass-loader {
    position: absolute; inset: 0; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
    background: rgba(255, 255, 255, 0.4); z-index: 10; transition: opacity 0.4s ease;
}
.dark .glass-loader { background: rgba(0, 0, 0, 0.4); }