:root{--color-bg:#f4f6f8;--color-surface:#fff;--color-border:#e2e5ea;--color-text:#1c2430;--color-text-muted:#667085;--color-primary:#0f5c52;--color-primary-dark:#0a4038;--color-primary-light:#e6f2f0;--color-accent:#c98a2c;--color-accent-light:#fbf1e0;--color-danger:#d64545;--color-danger-light:#fbe9e9;--color-success:#1f9d55;--color-success-light:#e6f7ec;--color-warning:#d1a000;--color-warning-light:#fbf3d9;--color-info:#2b6cb0;--color-info-light:#e8f1fb;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-sm:0 1px 2px #1018280f;--shadow-md:0 4px 12px #10182814;--shadow-lg:0 12px 32px #1018281f;--sidebar-width:250px;--header-height:64px;font-synthesis:none}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:inherit;text-decoration:none}h1,h2,h3,h4,h5{letter-spacing:-.01em;margin:0;font-weight:700}p{margin:0}button,input,select,textarea{font-family:inherit;font-size:inherit}.container{max-width:1200px;margin:0 auto;padding:0 24px}.btn{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:14px;font-weight:600;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn-outline{border-color:var(--color-border);color:var(--color-text);background:0 0}.btn-outline:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){opacity:.9}.btn-ghost{color:var(--color-text-muted);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--color-border)}.btn-sm{padding:6px 12px;font-size:13px}.btn-block{width:100%}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.card-body{padding:20px}.card-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.badge{border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge-success{background:var(--color-success-light);color:var(--color-success)}.badge-danger{background:var(--color-danger-light);color:var(--color-danger)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning)}.badge-info{background:var(--color-info-light);color:var(--color-info)}.badge-neutral{background:var(--color-border);color:var(--color-text-muted)}.form-group{margin-bottom:16px}.form-label{color:var(--color-text-muted);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.form-control{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text);background:#fff;padding:10px 12px}.form-control:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light);outline:none}.form-error{color:var(--color-danger);margin-top:4px;font-size:12px}.form-row{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;display:grid}.table-wrap{overflow-x:auto}table.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th{text-align:left;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--color-border);white-space:nowrap;background:#f8f9fb;padding:10px 16px;font-size:12px;font-weight:600}.data-table td{border-bottom:1px solid var(--color-border);vertical-align:middle;padding:12px 16px}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#fafbfc}.table-toolbar{border-bottom:1px solid var(--color-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.data-table th.th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.data-table th.th-sortable:hover{color:var(--color-text)}.data-table .th-inner{align-items:center;gap:4px;display:inline-flex}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;gap:6px;padding:18px 20px;display:flex}.stat-card .stat-label{color:var(--color-text-muted);font-size:13px;font-weight:600}.stat-card .stat-value{font-size:26px;font-weight:700}.stat-card .stat-sub{color:var(--color-text-muted);font-size:12px}.app-shell{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);background:var(--color-primary-dark);color:#fff;z-index:20;flex-direction:column;flex-shrink:0;transition:transform .2s;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-brand{border-bottom:1px solid #ffffff1a;padding:20px;font-size:18px;font-weight:800}.sidebar-nav{flex:1;padding:12px;overflow-y:auto}.sidebar-link{border-radius:var(--radius-sm);color:#ffffffbf;align-items:center;gap:10px;margin-bottom:2px;padding:10px 14px;font-size:14px;font-weight:500;display:flex}.sidebar-link:hover{color:#fff;background:#ffffff14}.sidebar-link.active{background:var(--color-accent);color:#fff}.sidebar-footer{border-top:1px solid #ffffff1a;padding:16px;font-size:13px}.main-content{margin-left:var(--sidebar-width);flex:1;min-width:0}.topbar{height:var(--header-height);border-bottom:1px solid var(--color-border);z-index:10;background:#fff;justify-content:space-between;align-items:center;padding:0 24px;display:flex;position:sticky;top:0}.page{padding:24px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.grid{gap:16px;display:grid}.grid-cols-2{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.grid-cols-3{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.grid-cols-4{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.flex{display:flex}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-gap{align-items:center;gap:10px;display:flex}.text-muted{color:var(--color-text-muted)}.text-sm{font-size:13px}.mt-0{margin-top:0}.empty-state{text-align:center;color:var(--color-text-muted);padding:48px 20px}.mobile-only{display:none}@media (width<=900px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.main-content{margin-left:0}.mobile-only{display:inline-flex}}.table-footer{border-top:1px solid var(--color-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.desktop-only{display:inline-flex}.sidebar{transition:width .2s,transform .2s}.main-content{transition:margin-left .2s}.app-shell.sidebar-collapsed .sidebar{width:72px}.app-shell.sidebar-collapsed .main-content{margin-left:72px}.app-shell.sidebar-collapsed .sidebar-label,.app-shell.sidebar-collapsed .sidebar-footer{display:none}.app-shell.sidebar-collapsed .sidebar-brand{text-align:center;padding:20px 0}.app-shell.sidebar-collapsed .sidebar-link{justify-content:center;padding:12px}@media (width<=900px){.desktop-only{display:none}.app-shell.sidebar-collapsed .sidebar{width:var(--sidebar-width)}.app-shell.sidebar-collapsed .main-content{margin-left:0}.app-shell.sidebar-collapsed .sidebar-label,.app-shell.sidebar-collapsed .sidebar-footer{display:block}.app-shell.sidebar-collapsed .sidebar-link{justify-content:flex-start;padding:10px 14px}.app-shell.sidebar-collapsed .sidebar-brand{text-align:left;padding:20px}}.notif-wrap,.notif-bell{position:relative}.notif-badge{background:var(--color-danger);color:#fff;text-align:center;border-radius:999px;min-width:16px;padding:1px 5px;font-size:10px;font-weight:700;line-height:14px;position:absolute;top:-2px;right:-4px}.notif-panel{z-index:50;width:360px;max-width:calc(100vw - 32px);box-shadow:var(--shadow-lg);background:#fff;position:absolute;top:calc(100% + 8px);right:0}.notif-list{max-height:380px;overflow-y:auto}.notif-item{border-bottom:1px solid var(--color-border);cursor:pointer;padding:12px 16px}.notif-item:last-child{border-bottom:none}.notif-item:hover{background:#fafbfc}.notif-item.unread{background:var(--color-primary-light)}.notif-item.unread:hover{background:#dcebe8}
