*{box-sizing:border-box;margin:0;padding:0}body{background-color:#f9fafb;color:#1f2329;font-family:Inter,system-ui,sans-serif;min-height:100vh}:root{--primary:#165dff;--primary-light:#e8f3ff;--primary-dark:#0e42d2;--success:#52c41a;--success-light:#f6ffed;--danger:#ff4d4f;--danger-light:#fff2f0;--border-color:#e5e7eb;--text-gray:#6b7280;--text-light:#9ca3af;--bg-white:#fff;--bg-gray:#f3f4f6;--radius:6px;--shadow:0 2px 8px rgba(0,0,0,.08);--transition:all 0.2s ease}.btn{align-items:center;border:none;border-radius:var(--radius);cursor:pointer;display:inline-flex;font-size:14px;font-weight:500;gap:6px;justify-content:center;padding:8px 16px;transition:var(--transition)}.btn-primary{background-color:var(--primary);color:#fff}.btn-primary:active,.btn-primary:hover{background-color:var(--primary-dark)}.btn-primary:active{box-shadow:0 2px 4px rgba(14,66,210,.2)}.btn-primary:disabled{background-color:var(--primary-light);cursor:not-allowed}.btn-default{background-color:var(--bg-white);border:1px solid var(--border-color);color:#4b5563}.btn-default:hover{background-color:var(--bg-gray)}.btn-default:active{background-color:#e5e7eb}.btn-danger{background-color:var(--bg-white);border:1px solid var(--danger);color:var(--danger)}.btn-danger:hover{background-color:var(--danger-light)}.form-group{margin-bottom:16px}.form-label{color:#4b5563;display:block;font-size:14px;font-weight:500;margin-bottom:6px}.form-control,input[type=date],input[type=datetime-local],select.form-control{border:1px solid var(--border-color);border-radius:var(--radius);font-size:14px;padding:8px 12px;transition:var(--transition);width:100%}textarea.form-control{line-height:1.5;min-height:80px;resize:vertical}.form-control:focus,input[type=date]:focus,input[type=datetime-local]:focus,select.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(22,93,255,.1);outline:none}.form-control:disabled,input[type=date]:disabled,input[type=datetime-local]:disabled,select.form-control:disabled{background-color:var(--bg-gray);cursor:not-allowed}.form-hint{color:var(--text-light);font-size:12px;margin-top:4px}.card{background-color:var(--bg-white);border:1px solid #f3f4f6;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.card-header{background-color:#fafafa;border-bottom:1px solid var(--border-color);padding:16px 24px}.card-header h3{color:#1f2937;font-size:18px;font-weight:600}.card-body{padding:24px}.toast{align-items:center;border-radius:var(--radius);box-shadow:0 4px 12px rgba(0,0,0,.1);display:flex;font-size:14px;gap:8px;opacity:0;padding:12px 16px;position:fixed;right:16px;top:16px;transform:translateY(-20px);transition:all .3s ease;z-index:1000}.toast.show{opacity:1;transform:translateY(0)}.toast-success{background-color:var(--success-light);border:1px solid rgba(82,196,26,.2);color:var(--success)}.toast-error{background-color:var(--danger-light);border:1px solid rgba(255,77,79,.2);color:var(--danger)}.nav-item{align-items:center;border-radius:var(--radius);color:#4b5563;cursor:pointer;display:flex;font-size:14px;gap:8px;padding:10px 12px;transition:var(--transition)}.nav-item:hover{background-color:var(--bg-gray)}.nav-item.active{background-color:var(--primary-light);color:var(--primary);font-weight:500}.table{border-collapse:collapse;width:100%}.table td,.table th{border-bottom:1px solid var(--border-color);font-size:14px;padding:14px 16px;text-align:left}.table th{background-color:#fafafa;color:var(--text-gray);font-weight:600}.table tbody tr:hover{background-color:rgba(243,244,246,.5);transition:var(--transition)}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-1{flex:1}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.p-4{padding:16px}.p-6{padding:24px}.text-center{text-align:center}.text-danger{color:var(--danger)}.text-primary{color:var(--primary)}.text-sm{font-size:14px}.text-gray-500{color:var(--text-gray)}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-auto{overflow-x:auto}.min-h-screen{min-height:100vh}.h-14{height:3.5rem}.w-full{width:100%}.max-w-md{max-width:28rem}.border-b{border-bottom:1px solid var(--border-color)}.border-t{border-top:1px solid var(--border-color)}.border-r{border-right:1px solid var(--border-color)}.md\:col-span-2{grid-column:span 2}@media (max-width:768px){.grid-cols-1,.md\:grid-cols-2,.md\:grid-cols-3{grid-template-columns:1fr}.min-w-\[200px\]{min-width:100%}.card-body,.card-header{padding:16px}.table td,.table th{padding:12px 8px}.w-64{width:100%}.md\:col-span-2{grid-column:span 1}}@media (min-width:769px){.md\:grid-cols-2{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}.md\:grid-cols-3{display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}.min-w-\[200px\]{min-width:200px}.w-64{width:16rem}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-spinner{animation:spin 1s linear infinite}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:#f3f4f6}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#9ca3af}.table-scroll-container{box-sizing:border-box;height:calc(100vh - 256px);max-height:600px;min-height:300px;overflow-x:auto;overflow-y:auto;width:100%}.table-scroll-container thead th{background-color:#f9fafb;border-bottom:2px solid #e5e7eb;position:sticky;top:0;z-index:10}.table-scroll-container table{border-collapse:collapse;table-layout:fixed}.table-scroll-container th:first-child,.table-scroll-container th:nth-child(2),.table-scroll-container th:nth-child(3){width:100px}.table-scroll-container th:nth-child(4){width:180px}.table-scroll-container th:nth-child(5){width:160px}.table-scroll-container th:nth-child(10),.table-scroll-container th:nth-child(6){width:120px}.table-scroll-container th:nth-child(7),.table-scroll-container th:nth-child(8),.table-scroll-container th:nth-child(9){width:90px}.table-scroll-container td{border-bottom:1px solid #e5e7eb;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-body{overflow:hidden}