*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--accent: #4caf50;--accent-dark: #4caf50;--accent-soft: rgba(109, 74, 255, .08);--ink: #16161d;--ink-2: #4b4b57;--ink-3: #8b8b96;--line: #e9e9ef;--bg: #f6f6f9;--card: #ffffff;--green: #16a34a;--green-soft: #ecfdf3;--red: #dc2626;--red-soft: #fef2f2;--amber: #d97706;--amber-soft: #fffbeb;--blue: #2563eb;--blue-soft: #eff6ff;--radius: 14px;--shadow-sm: 0 1px 2px rgba(16, 16, 24, .04), 0 1px 6px rgba(16, 16, 24, .04);--shadow-md: 0 4px 20px rgba(16, 16, 24, .07)}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100vh}#app{min-height:100vh}a{text-decoration:none;color:inherit}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit}.page{padding:32px 36px 48px;max-width:1240px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:26px;flex-wrap:wrap}.page-title{font-size:24px;font-weight:800;letter-spacing:-.4px}.page-sub{font-size:13.5px;color:var(--ink-3);margin-top:5px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-pad{padding:22px 24px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:10px;padding:0 18px;height:40px;font-size:13.5px;font-weight:600;transition:all .16s ease;white-space:nowrap}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 3px 14px #6d4aff47}.btn-primary:hover:not(:disabled){background:var(--accent-dark);transform:translateY(-1px);box-shadow:0 5px 18px #6d4aff5c}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-ghost{background:transparent;color:var(--ink-2);border:1.5px solid var(--line)}.btn-ghost:hover:not(:disabled){border-color:#d5d5de;background:#fafafc;color:var(--ink)}.btn-danger{background:var(--red-soft);color:var(--red)}.btn-danger:hover:not(:disabled){background:#fee2e2}.btn-sm{height:32px;padding:0 12px;font-size:12.5px;border-radius:8px}.badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;letter-spacing:.2px;padding:4px 10px;border-radius:999px}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge-green{background:var(--green-soft);color:var(--green)}.badge-red{background:var(--red-soft);color:var(--red)}.badge-amber{background:var(--amber-soft);color:var(--amber)}.badge-blue{background:var(--blue-soft);color:var(--blue)}.badge-gray{background:#f1f1f5;color:var(--ink-2)}.badge-purple{background:var(--accent-soft);color:var(--accent)}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse;font-size:13.5px}.table thead th{text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--ink-3);padding:12px 16px;border-bottom:1px solid var(--line);background:#fafafc}.table tbody td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle}.table tbody tr{transition:background .12s}.table tbody tr:hover{background:#fafaff}.table tbody tr:last-child td{border-bottom:none}.field{display:flex;flex-direction:column;gap:7px}.field-label{font-size:13px;font-weight:600;color:var(--ink)}.field-input{height:44px;border:1.5px solid var(--line);border-radius:10px;padding:0 14px;font-size:14px;color:var(--ink);background:#fbfbfd;outline:none;transition:border-color .16s,box-shadow .16s,background .16s;width:100%}.field-input:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px var(--accent-soft)}.field-input.has-error{border-color:var(--red);box-shadow:0 0 0 3px #dc262612}.field-error{font-size:12px;color:var(--red)}.field-hint{font-size:12px;color:var(--ink-3)}.empty-state{padding:56px 24px;text-align:center;color:var(--ink-3);font-size:14px}.skeleton{background:linear-gradient(90deg,#efeff4 25%,#f7f7fa 50%,#efeff4 75%);background-size:200% 100%;animation:shimmer 1.3s infinite;border-radius:8px}@keyframes shimmer{to{background-position:-200% 0}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(16,16,24,.45);display:flex;align-items:center;justify-content:center;z-index:500;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);padding:20px}.modal{background:#fff;border-radius:16px;width:100%;max-width:460px;padding:26px 26px 24px;box-shadow:0 20px 60px #0003;animation:modal-in .18s ease}@keyframes modal-in{0%{opacity:0;transform:translateY(10px) scale(.98)}}.modal-title{font-size:17px;font-weight:800;margin-bottom:4px;letter-spacing:-.2px}.modal-sub{font-size:13px;color:var(--ink-3);margin-bottom:18px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.fade-enter-active,.fade-leave-active{transition:opacity .15s}.fade-enter-from,.fade-leave-to{opacity:0}
