*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:#f0f2f5;color:#333}
.sidebar{width:250px;background:#001529;color:#fff;position:fixed;top:0;left:0;bottom:0;overflow-y:auto;overflow-x:hidden;z-index:100;transition:width .25s ease}
.sidebar.collapsed{width:60px}
.sidebar.collapsed .sidebar-text{display:none}
.sidebar.collapsed .nav-group-title{text-align:center;font-size:.65rem;padding:12px 4px 4px}
.sidebar.collapsed .sidebar-nav li a{justify-content:center;padding:12px 0;font-size:1rem}
.sidebar-header{padding:12px 16px;font-size:1rem;font-weight:700;border-bottom:1px solid rgba(255,255,255,.1);background:#002140;text-align:center;white-space:nowrap}
.sidebar.collapsed .sidebar-header{padding:14px 8px;font-size:1.1rem}
.sidebar-nav{list-style:none;padding:0}
.sidebar-nav li a{display:flex;align-items:center;gap:8px;padding:6px 20px;color:rgba(255,255,255,.65);text-decoration:none;font-size:.82rem;transition:all .2s;white-space:nowrap}
.sidebar.collapsed .sidebar-nav li a{gap:0}
.sidebar-nav li a:hover{color:#fff;background:rgba(255,255,255,.08)}
.sidebar-nav li a.active{color:#fff;background:#1890ff}
.sidebar-nav .nav-group-title{padding:10px 20px 4px;font-size:.7rem;color:rgba(255,255,255,.45);text-transform:uppercase;letter-spacing:1px;white-space:nowrap;transition:all .25s}
.main-content{margin-left:250px;min-height:100vh;transition:margin-left .25s ease}
.main-content.expanded{margin-left:60px}
.burger-btn{background:none;border:none;color:#333;font-size:1.3rem;cursor:pointer;padding:4px 8px;border-radius:4px;line-height:1;transition:background .2s}
.burger-btn:hover{background:#f0f0f0}
.topbar{background:#fff;padding:0 24px;height:56px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 4px rgba(0,0,0,.08);position:sticky;top:0;z-index:50}
.topbar h4{font-size:1rem;font-weight:600;margin:0}
.topbar .user-info{display:flex;align-items:center;gap:12px;font-size:.85rem}
.topbar .user-info .badge{background:#1890ff;color:#fff;padding:2px 8px;border-radius:10px;font-size:.7rem}
.topbar .btn-sm{padding:4px 12px;font-size:.8rem}
.page-content{padding:24px}
.card{background:#fff;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.06);margin-bottom:16px}
.card-header{padding:16px 24px;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;align-items:center}
.card-header h5{font-size:1rem;font-weight:600;margin:0}
.card-body{padding:24px}
table{width:100%;border-collapse:separate;border-spacing:0;border:1px solid #e8e8e8;border-radius:8px;overflow:hidden}
table th{padding:6px 12px;text-align:left;font-size:.78rem;font-weight:600;color:#555;background:#fafafa;border-bottom:2px solid #e8e8e8}
table td{padding:6px 12px;font-size:.80rem;color:#333;border-bottom:1px solid #f0f0f0}
table tbody tr:nth-child(even) td{background:#f9fafb}
table tbody tr:hover td{background:#e6f7ff}
table td:first-child,table th:first-child{padding-left:18px}
table td:last-child,table th:last-child{padding-right:18px}
.table-wrapper{overflow-x:auto;border-radius:8px}
.table-wrapper table{border-radius:0;border:none}
.table-wrapper table td:first-child,.table-wrapper table th:first-child{border-radius:0}
.btn{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:500;transition:all .2s;text-decoration:none;display:inline-block}
.btn-primary{background:#1890ff;color:#fff}.btn-primary:hover{background:#40a9ff}
.btn-danger{background:#ff4d4f;color:#fff}.btn-danger:hover{background:#ff7875}
.btn-success{background:#52c41a;color:#fff}.btn-success:hover{background:#73d13d}
.btn-warning{background:#faad14;color:#fff}.btn-warning:hover{background:#ffc53d}
.btn-sm{padding:4px 10px;font-size:.78rem}
.btn-xs{padding:2px 8px;font-size:.72rem}
.form-group{margin-bottom:16px}
.form-group label{display:block;margin-bottom:4px;font-weight:500;font-size:.85rem;color:#555}
.form-control{width:100%;padding:8px 12px;border:1px solid #d9d9d9;border-radius:4px;font-size:.85rem;transition:border .2s}
.form-control:focus{border-color:#1890ff;outline:none;box-shadow:0 0 0 2px rgba(24,144,255,.2)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
.alert{padding:12px 16px;border-radius:4px;margin-bottom:16px;font-size:.85rem}
.alert-info{background:#e6f7ff;border:1px solid #91d5ff;color:#0050b3}
.alert-error{background:#fff2f0;border:1px solid #ffccc7;color:#a8071a}
.alert-success{background:#f6ffed;border:1px solid #b7eb8f;color:#389e0d}
.text-center{text-align:center}.text-right{text-align:right}
.flex-between{display:flex;justify-content:space-between;align-items:center}
.modal-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:1000;align-items:center;justify-content:center}
.modal-overlay.active{display:flex}
.modal{background:#fff;border-radius:8px;width:90%;max-width:700px;max-height:85vh;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,.15)}
.modal-sm{max-width:400px}
.modal-header{padding:16px 24px;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;align-items:center}
.modal-header h5{font-size:1rem;margin:0}
.modal-body{padding:24px}
.modal-footer{padding:12px 24px;border-top:1px solid #f0f0f0;display:flex;justify-content:flex-end;gap:8px}
.close-btn{background:none;border:none;font-size:1.2rem;cursor:pointer;color:#999;padding:0;line-height:1}.close-btn:hover{color:#333}
.spinner{border:2px solid #f3f3f3;border-top:2px solid #1890ff;border-radius:50%;width:16px;height:16px;animation:spin .6s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,.7);z-index:9999;align-items:center;justify-content:center}
.loading-overlay.active{display:flex}
.table-bar{display:flex;justify-content:space-between;align-items:center;margin:0 0 8px 0;flex-wrap:wrap;gap:8px}
.pg-btn{padding:4px 10px;border:1px solid #d9d9d9;background:#fff;border-radius:4px;cursor:pointer;font-size:.75rem;color:#555;transition:all .15s}
.pg-btn:hover:not(:disabled){border-color:#1890ff;color:#1890ff}
.pg-btn.active{background:#1890ff;color:#fff;border-color:#1890ff}
.pg-btn:disabled{opacity:.4;cursor:default}
.pg-btn-export{background:#217346;color:#fff;border-color:#217346}.pg-btn-export:hover{background:#2e9e5e;color:#fff;border-color:#2e9e5e}
.pg-btn-import{background:#1677ff;color:#fff;border-color:#1677ff}.pg-btn-import:hover{background:#4096ff;color:#fff;border-color:#4096ff}
.progress-bar-wrap{width:100%;height:8px;background:#f0f0f0;border-radius:4px;overflow:hidden;margin:0 auto;max-width:280px}
.progress-bar-fill{height:100%;width:0%;background:linear-gradient(90deg,#1677ff,#4096ff);border-radius:4px;transition:width .4s ease}
.login-box{max-width:400px;margin:100px auto;padding:40px;background:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.1)}
.login-box h2{text-align:center;margin-bottom:8px;font-size:1.4rem}
.login-box .subtitle{text-align:center;color:#999;margin-bottom:24px;font-size:.85rem}
