*{box-sizing:border-box;margin:0;padding:0}:root{--sidebar-width: 220px;--primary: #3b5bdb;--primary-dark: #2f4ac7;--bg: #f4f6fb;--sidebar-bg: #1e293b;--sidebar-text: #cbd5e1;--sidebar-active: #3b5bdb;--card-bg: #ffffff;--border: #e2e8f0;--text: #1e293b;--text-muted: #64748b;--success: #22c55e;--danger: #ef4444;--warning: #f59e0b}body{font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);font-size:14px}.admin-wrapper{display:flex;height:100vh;overflow:hidden}.admin-sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);display:flex;flex-direction:column;flex-shrink:0}.sidebar-brand{padding:20px 16px;display:flex;align-items:center;gap:10px;border-bottom:1px solid #334155;color:#fff;font-size:16px;font-weight:600}.brand-icon{font-size:22px}.sidebar-nav{list-style:none;padding:12px 0;flex:1}.nav-link{display:flex;align-items:center;gap:10px;padding:11px 18px;color:var(--sidebar-text);text-decoration:none;border-left:3px solid transparent;transition:all .2s}.nav-link:hover,.nav-link.active{background:#3b5bdb26;color:#fff;border-left-color:var(--sidebar-active)}.sidebar-footer{padding:16px;border-top:1px solid #334155}.admin-info{display:flex;align-items:center;gap:8px;color:var(--sidebar-text);margin-bottom:10px;font-size:13px}.btn-logout{width:100%;padding:8px;background:transparent;border:1px solid #475569;color:var(--sidebar-text);border-radius:6px;cursor:pointer;font-size:13px;transition:all .2s}.btn-logout:hover{background:var(--danger);border-color:var(--danger);color:#fff}.admin-main{flex:1;display:flex;flex-direction:column;overflow:hidden}.admin-header{background:var(--card-bg);padding:14px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.page-title{font-size:16px;font-weight:600;color:var(--text)}.header-time{color:var(--text-muted);font-size:13px}.admin-content{flex:1;overflow-y:auto;padding:24px}.page-section{max-width:1200px}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.section-title{font-size:20px;font-weight:600;color:var(--text);margin-bottom:20px}.section-subtitle{font-size:16px;font-weight:600;margin:20px 0 12px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:24px}.stat-card{background:var(--card-bg);border-radius:10px;padding:20px;display:flex;align-items:center;gap:16px;box-shadow:0 1px 4px #0000000f;border:1px solid var(--border)}.stat-card--wide{grid-column:span 2}.stat-icon{font-size:32px}.stat-label{font-size:12px;color:var(--text-muted);margin-bottom:4px}.stat-value{font-size:22px;font-weight:700;color:var(--text)}.table-container{background:var(--card-bg);border-radius:10px;border:1px solid var(--border);overflow:auto;box-shadow:0 1px 4px #0000000f}.data-table{width:100%;border-collapse:collapse}.data-table th{padding:12px 16px;background:#f8fafc;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);text-align:left;border-bottom:1px solid var(--border)}.data-table td{padding:12px 16px;border-bottom:1px solid var(--border);color:var(--text)}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#f8fafc}.empty-row{text-align:center;color:var(--text-muted);padding:32px!important}.badge{display:inline-block;padding:3px 10px;border-radius:99px;font-size:12px;font-weight:500}.badge-active{background:#dcfce7;color:#166534}.badge-inactive{background:#fee2e2;color:#991b1b}.badge-role{background:#dbeafe;color:#1e40af}.badge-pending{background:#fef9c3;color:#854d0e}.badge-paid{background:#dbeafe;color:#1e40af}.badge-completed{background:#dcfce7;color:#166534}.badge-cancelled{background:#fee2e2;color:#991b1b}.badge-delivering{background:#e0f2fe;color:#075985}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:all .2s;text-decoration:none}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-outline{background:transparent;border-color:var(--border);color:var(--text)}.btn-outline:hover{background:var(--bg)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#dc2626}.btn-sm{padding:4px 10px;font-size:12px;margin-right:4px}.form-wrap{margin-bottom:16px}.form-label{display:block;font-size:13px;font-weight:500;color:var(--text-muted);margin-bottom:6px}.form-input,.form-select{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;color:var(--text);background:#fff;outline:none;transition:border-color .2s}.form-input:focus,.form-select:focus{border-color:var(--primary)}.filter-bar{display:flex;gap:12px}.filter-bar .form-select{width:160px}.modal-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:999}.modal-box{background:#fff;border-radius:12px;padding:28px;width:460px;max-width:95vw;box-shadow:0 8px 32px #0000002e}.modal-title{font-size:18px;font-weight:600;margin-bottom:20px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e293b,#3b5bdb)}.card{background:#fff;border-radius:12px;overflow:hidden;width:400px;box-shadow:0 20px 60px #0003}.card-header{padding:24px;background:var(--primary);color:#fff;text-align:center}.card-header h4{font-size:20px;font-weight:600}.card-body{padding:28px}.button-block{width:100%;justify-content:center;padding:10px}.button-primary{background:var(--primary);border-color:var(--primary);color:#fff}.button-primary:hover{background:var(--primary-dark)}.button-primary:disabled{opacity:.6;cursor:not-allowed}.mt-2{margin-top:8px}.mt-4{margin-top:16px}.mb-4{margin-bottom:16px}.alert{padding:10px 14px;border-radius:6px;font-size:13px}.alert-danger{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.loading-state{padding:40px;text-align:center;color:var(--text-muted)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}
