:root {
    --color-primary: #409eff;
    --color-success: #67c23a;
    --color-warning: #e6a23c;
    --color-danger: #f56c6c;
    --color-gray: #909399;
    --color-purple: #722ed1;
    --color-yellow: #f7ba1e;
    --color-star: #ffd700;
    --bg-light: #f5f5f5;
    --bg-white: #fff;
    --text-primary: #333;
    --text-secondary: #666;
    --border-light: #f0f0f0;
    --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.02);
    --shadow-sm: 0 2px 5px rgba(0, 0, 0, 0.03);
    --shadow-md: 0 4px 15px rgba(0, 0, 0, 0.05);
    --shadow-lg: 0 8px 20px rgba(0, 0, 0, 0.1);
    --overlay-bg: rgba(0, 0, 0, 0.3);
    --toast-bg: rgba(0, 0, 0, 0.7);
    --sidebar-width: 260px;
    --border-radius-sm: 3px;
    --border-radius-md: 12px;
    --border-radius-lg: 20px;
    --border-radius-circle: 50%;
    --spacing-xxs: 2px;
    --spacing-xs: 4px;
    --spacing-sm: 8px;
    --spacing-md: 12px;
    --spacing-lg: 16px;
    --spacing-xl: 24px;
    --transition-fast: 0.2s ease;
    --transition-normal: 0.3s ease;
    --transition-slow: 0.5s ease;
    --icon-size: 50px;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Arial', 'Microsoft YaHei', sans-serif;
    transition: transform var(--transition-fast),
                opacity var(--transition-normal),
                box-shadow var(--transition-normal),
                background-color var(--transition-fast),
                color var(--transition-fast),
                border-color var(--transition-fast);
}

body {
    min-height: 100vh;
    background-color: var(--bg-light);
    padding-bottom: var(--spacing-lg);
    display: flex;
    overflow-x: hidden;
    color: var(--text-primary);
}

.hidden {
    opacity: 0 !important;
    pointer-events: none !important;
}

@keyframes spin { to { transform: rotate(360deg); } }