:root{--color-primary: #1677ff;--color-primary-hover: #4096ff;--color-primary-active: #0958d9;--color-primary-light: #e6f4ff;--color-primary-bg: #f0f7ff;--color-success: #52c41a;--color-warning: #faad14;--color-error: #ff4d4f;--color-text: #1f1f1f;--color-text-secondary: #595959;--color-text-tertiary: #8c8c8c;--color-border: #d9d9d9;--color-border-secondary: #f0f0f0;--color-bg-layout: #f5f7fa;--color-bg-container: #ffffff;--color-fill: #fafafa;--radius-sm: 6px;--radius-base: 8px;--radius-lg: 12px;--radius-xl: 16px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .12);--shadow-primary: 0 8px 24px rgba(22, 119, 255, .25);--t-fast: .15s ease;--t-base: .25s ease;--t-slow: .4s ease}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--color-bg-layout);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased}.page{padding:var(--spacing-lg);max-width:1200px;margin:0 auto}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes scaleIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-24px) rotate(6deg)}}@keyframes floatSlow{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(18px) rotate(-4deg)}}.page-enter{animation:fadeIn var(--t-base)}.card-enter{animation:slideUp var(--t-base) both}.modal-enter{animation:scaleIn var(--t-base)}.card-hover{transition:box-shadow var(--t-base),transform var(--t-base)}.card-hover:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}a{transition:color var(--t-fast)}@media (max-width: 576px){.page{padding:var(--spacing-md)}}@media (max-width: 768px){.login-brand{display:none!important}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
