*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary: #FF6B9D;--primary-light: #FFE0ED;--primary-dark: #E05A8A;--secondary: #7C5CBF;--success: #52C41A;--warning: #FAAD14;--danger: #FF4D4F;--info: #1890FF;--text-primary: #1a1a2e;--text-secondary: #666;--text-light: #999;--bg-main: #F5F6FA;--bg-card: #FFFFFF;--border: #E8E8E8;--shadow: 0 2px 12px rgba(0,0,0,.08);--shadow-hover: 0 4px 20px rgba(0,0,0,.12);--radius: 12px;--radius-sm: 8px}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg-main);color:var(--text-primary);line-height:1.6;min-height:100vh}#app{min-height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#aaa}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:500;transition:all .2s;text-decoration:none}.btn:hover{opacity:.88;transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--primary);color:#fff}.btn-secondary{background:var(--secondary);color:#fff}.btn-success{background:var(--success);color:#fff}.btn-warning{background:var(--warning);color:#fff}.btn-danger{background:var(--danger);color:#fff}.btn-outline{background:transparent;border:1px solid var(--primary);color:var(--primary)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-sm{padding:5px 10px;font-size:12px}.btn-lg{padding:12px 24px;font-size:16px}.card{background:var(--bg-card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.tag{display:inline-flex;align-items:center;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:500}.tag-success{background:#f6ffed;color:var(--success);border:1px solid #B7EB8F}.tag-warning{background:#fffbe6;color:var(--warning);border:1px solid #FFE58F}.tag-danger{background:#fff2f0;color:var(--danger);border:1px solid #FFCCC7}.tag-info{background:#e6f7ff;color:var(--info);border:1px solid #91D5FF}.tag-default{background:#fafafa;color:var(--text-secondary);border:1px solid var(--border)}.tag-primary{background:var(--primary-light);color:var(--primary);border:1px solid #FFB3D1}.input{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:14px;outline:none;transition:border-color .2s;background:#fff;color:var(--text-primary)}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #ff6b9d1a}.input::placeholder{color:var(--text-light)}select.input{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23999' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.pagination{display:flex;align-items:center;gap:6px;justify-content:center;padding:16px 0}.page-btn{width:32px;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .2s}.page-btn:hover{border-color:var(--primary);color:var(--primary)}.page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.page-btn:disabled{opacity:.4;cursor:not-allowed}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter-from,.fade-leave-to{opacity:0}.slide-up-enter-active,.slide-up-leave-active{transition:all .3s}.slide-up-enter-from{transform:translateY(20px);opacity:0}.slide-up-leave-to{transform:translateY(-20px);opacity:0}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--text-light);gap:12px}.empty-state .empty-icon{font-size:48px}.empty-state p{font-size:15px}.loading-spinner{width:32px;height:32px;border:3px solid var(--primary-light);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
