body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#333;background-color:#f5f5f5}.app-container{min-height:100vh;position:relative}.notifications-container{position:fixed;top:20px;right:20px;z-index:9999;max-width:400px}.notification{padding:12px 16px;margin-bottom:10px;border-radius:4px;box-shadow:0 2px 12px #0000001a;display:flex;justify-content:space-between;align-items:center;animation:slideIn .3s ease-out}.notification.success{background-color:#f0f9eb;color:#67c23a;border:1px solid #e1f3d8}.notification.error{background-color:#fef0f0;color:#f56c6c;border:1px solid #fde2e2}.notification.warning{background-color:#fdf6ec;color:#e6a23c;border:1px solid #faecd8}.notification.info{background-color:#edf2fc;color:#909399;border:1px solid #ebeef5}.notification .close-btn{background:none;border:none;font-size:18px;cursor:pointer;padding:0;margin-left:10px;color:inherit;opacity:.6}.notification .close-btn:hover{opacity:1}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#555}:root{--primary-color: #409eff;--success-color: #67c23a;--warning-color: #e6a23c;--danger-color: #f56c6c;--info-color: #909399;--text-primary: #303133;--text-regular: #606266;--text-secondary: #909399;--text-placeholder: #c0c4cc;--border-base: #dcdfe6;--border-light: #e4e7ed;--border-lighter: #ebeef5;--border-extra-light: #f2f6fc;--bg-color: #f5f7fa;--bg-color-page: #ffffff;--bg-color-overlay: rgba(0, 0, 0, .5);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--border-radius-base: 4px;--border-radius-small: 2px;--border-radius-medium: 6px;--border-radius-large: 8px;--box-shadow-base: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);--box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, .1);--font-size-extra-small: 12px;--font-size-small: 13px;--font-size-base: 14px;--font-size-medium: 16px;--font-size-large: 18px;--font-size-extra-large: 20px;--line-height-base: 1;--line-height-small: 1.2;--line-height-regular: 1.5;--line-height-large: 1.8}*{margin:0;padding:0;box-sizing:border-box}html{font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif;color:var(--text-primary);background-color:var(--bg-color);font-size:var(--font-size-base);line-height:var(--line-height-regular)}a{color:var(--primary-color);text-decoration:none;transition:color .3s ease}a:hover{color:#66b1ff}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--border-lighter);border-radius:var(--border-radius-base)}::-webkit-scrollbar-thumb{background:var(--text-placeholder);border-radius:var(--border-radius-base);transition:background .3s ease}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.mt-1{margin-top:var(--spacing-xs)}.mt-2{margin-top:var(--spacing-sm)}.mt-3{margin-top:var(--spacing-md)}.mt-4{margin-top:var(--spacing-lg)}.mt-5{margin-top:var(--spacing-xl)}.mb-1{margin-bottom:var(--spacing-xs)}.mb-2{margin-bottom:var(--spacing-sm)}.mb-3{margin-bottom:var(--spacing-md)}.mb-4{margin-bottom:var(--spacing-lg)}.mb-5{margin-bottom:var(--spacing-xl)}.ml-1{margin-left:var(--spacing-xs)}.ml-2{margin-left:var(--spacing-sm)}.ml-3{margin-left:var(--spacing-md)}.ml-4{margin-left:var(--spacing-lg)}.ml-5{margin-left:var(--spacing-xl)}.mr-1{margin-right:var(--spacing-xs)}.mr-2{margin-right:var(--spacing-sm)}.mr-3{margin-right:var(--spacing-md)}.mr-4{margin-right:var(--spacing-lg)}.mr-5{margin-right:var(--spacing-xl)}.p-1{padding:var(--spacing-xs)}.p-2{padding:var(--spacing-sm)}.p-3{padding:var(--spacing-md)}.p-4{padding:var(--spacing-lg)}.p-5{padding:var(--spacing-xl)}.card{background-color:var(--bg-color-page);border-radius:var(--border-radius-medium);box-shadow:var(--box-shadow-base);padding:var(--spacing-lg);margin-bottom:var(--spacing-md)}.page-container{min-height:100vh;padding:var(--spacing-lg)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading{display:inline-block;animation:spin 1s linear infinite}@media(max-width:768px){.page-container,.card{padding:var(--spacing-md)}}
