:root{
  --bg:#f7f7fb;
  --fg:#111827;
  --muted:#6b7280;
  --primary:#2563eb;
  --bd:#e5e7eb;
  --card:#fff;
}

*{box-sizing:border-box}
body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial;
}

.shell{max-width:1400px;margin:0 auto}

.topbar{
  position:sticky;top:0;z-index:10;
  display:flex;justify-content:space-between;align-items:center;
  padding:12px 16px;background:#fff;border-bottom:1px solid var(--bd);
  gap:12px;
}
.brand{display:flex;flex-direction:column;gap:2px}
.muted{color:var(--muted)}
.tag{display:inline-block;padding:2px 8px;border-radius:999px;border:1px solid var(--bd);font-size:12px;color:var(--muted)}
.right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.user{white-space:nowrap;max-width:40vw;overflow:hidden;text-overflow:ellipsis}

.card{
  margin:18px 16px;
  background:var(--card);
  border:1px solid var(--bd);
  border-radius:12px;
  box-shadow:0 1px 1px rgba(0,0,0,.03);
  padding:16px;
}

h1{margin:0 0 10px 0;font-size:22px}

.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}

.btn{
  appearance:none;
  border-radius:999px;
  padding:8px 14px;
  font-size:14px;
  border:1px solid var(--bd);
  background:#fff;
  cursor:pointer;
  text-decoration:none;
  color:inherit;
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.btn.primary{
  background:var(--primary);
  border-color:var(--primary);
  color:white;
}
															  
.btn.danger{
  background:#dc2626;
  border-color:#dc2626;
  color:#fff;
}

.select{
  border:1px solid var(--bd);
  border-radius:10px;
  padding:8px 10px;
  font-size:14px;
  background:#fff;
}

.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.tab{
  border:1px solid var(--bd);
  background:#fff;
  padding:8px 12px;
  border-radius:999px;
  cursor:pointer;
}
.tab.active{
  background:var(--primary);
  border-color:var(--primary);
  color:white;
}

.toolbar{
  display:flex;gap:10px;align-items:center;flex-wrap:wrap;
  margin-bottom:12px;
}
.search{
  flex:1;min-width:260px;
  display:flex;align-items:center;gap:8px;
  border:1px solid var(--bd);
  border-radius:999px;
  padding:7px 12px;
  background:#fff;
}
.search input{border:none;outline:none;flex:1;font-size:14px}

.col-menu-wrapper{position:relative}
.col-menu{
  display:none;
  position:absolute;right:0;top:110%;
  background:#fff;border:1px solid var(--bd);
  border-radius:10px;
  box-shadow:0 10px 25px rgba(0,0,0,.08);
  padding:10px 12px;
  min-width:220px;
  max-height:320px;
  overflow:auto;
  font-size:13px;
  z-index:20;
}
.col-menu.show{display:block}
.col-menu h4{margin:0 0 6px 0;font-size:13px}
.col-menu label{display:flex;align-items:center;gap:8px;margin-bottom:6px;cursor:pointer}

.table-wrap{
  border-radius:10px;
  border:1px solid var(--bd);
  overflow:auto;
  max-height:72vh;
  background:#fff;
}
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{
  position:sticky;top:0;
  background:#f9fafb;
  border-bottom:1px solid var(--bd);
  padding:8px;
  text-align:left;
  font-weight:600;
  cursor:pointer;
  white-space:nowrap;
}
thead th.sort-asc::after{content:" ▲";font-size:11px}
thead th.sort-desc::after{content:" ▼";font-size:11px}

thead tr.filter-row th{
  position:sticky;top:36px;
  background:#f3f4f6;
  cursor:default;
}
thead tr.filter-row input{
  width:100%;
  padding:4px 6px;
  font-size:12px;
  border:1px solid var(--bd);
  border-radius:6px;
}
tbody td{
  border-top:1px solid var(--bd);
  padding:7px 8px;
  white-space:nowrap;
}
tbody tr:nth-child(2n){background:#fafafa}
tbody tr:hover{background:#eff6ff}

.empty{padding:16px;color:var(--muted);text-align:center}

.footer{
  margin:0 16px 18px 16px;
  padding:12px;
  display:flex;gap:10px;justify-content:center;align-items:center;
  border-top:1px solid var(--bd);
  background:#fff;border-radius:12px;
}
.footer img{height:26px;opacity:.9}
																																	
.layout{
  display:flex;
  gap:14px;
  padding:18px 16px;
}

.sidebar{
  width:230px;
  background:#fff;
  border:1px solid var(--bd);
  border-radius:12px;
  box-shadow:0 1px 1px rgba(0,0,0,.03);
  padding:12px;
  height:calc(100vh - 120px);
  position:sticky;
  top:66px;
}

.sidebar-title{
  font-weight:700;
  margin-bottom:10px;
}

.menu-item{
  width:100%;
  text-align:left;
  border:1px solid var(--bd);
  background:#fff;
  padding:10px 12px;
  border-radius:10px;
  cursor:pointer;
  margin-bottom:8px;
}
.menu-item.active{
  background:var(--primary);
  border-color:var(--primary);
  color:#fff;
}

.content.card{
  margin:0;
  flex:1;
}