/* XCTOY 会员分析系统 - 赛博二次元暗色主题 */

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    background: linear-gradient(135deg, #0f0c29 0%, #1a1a2e 50%, #16213e 100%);
    min-height: 100vh;
}

.stat-card, .chart-container {
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
}
.stat-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 25px rgba(139, 92, 246, 0.15);
}
.chart-container:hover {
    border-color: rgba(139, 92, 246, 0.3);
    box-shadow: 0 8px 25px rgba(139, 92, 246, 0.1);
}

table tbody tr { transition: background-color 0.2s ease; }
table tbody tr:hover { background-color: rgba(139, 92, 246, 0.1); }

::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: rgba(31, 41, 55, 0.5); border-radius: 4px; }
::-webkit-scrollbar-thumb { background: rgba(139, 92, 246, 0.5); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: rgba(139, 92, 246, 0.7); }

button { transition: all 0.2s ease; }
button:active { transform: scale(0.98); }

@keyframes pulse-glow {
    0%, 100% { box-shadow: 0 0 5px rgba(139, 92, 246, 0.3); }
    50% { box-shadow: 0 0 20px rgba(139, 92, 246, 0.6); }
}
.syncing { animation: pulse-glow 1.5s infinite; }

.grade-badge {
    display: inline-block; padding: 2px 8px; border-radius: 9999px;
    font-size: 11px; font-weight: 500;
}
.grade-1 { background: rgba(107, 114, 128, 0.3); color: #9ca3af; }
.grade-2 { background: rgba(59, 130, 246, 0.3); color: #60a5fa; }
.grade-3 { background: rgba(245, 158, 11, 0.3); color: #fbbf24; }

.loading {
    display: inline-block; width: 16px; height: 16px;
    border: 2px solid rgba(139, 92, 246, 0.3);
    border-top-color: #8b5cf6;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* 同步进度面板 */
#sync-panel {
    animation: slideIn 0.3s ease-out;
}
@keyframes slideIn {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
}
.progress-bar {
    transition: width 0.5s ease-in-out;
}
