@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=Inter:wght@300;400;500;600&display=swap');

/* ============================================================
   4LABS Admin CSS v2
   ============================================================ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:       #f0f4f8;
  --surface:  #ffffff;
  --border:   #dde3ef;
  --brand:    #0b1120;
  --teal:     #00c2b3;
  --text:     #1a2538;
  --muted:    #6b7280;
  --danger:   #dc2626;
  --success:  #059669;
  --warn:     #d97706;
  --info:     #2563eb;
  --side-w:   210px;
  --top-h:    56px;
  --fh:       'IBM Plex Sans',sans-serif;
  --fb:       'Inter',sans-serif;
  --r:        8px;
  --r-lg:     12px;
  --shadow:   0 1px 4px rgba(11,17,32,.07),0 4px 16px rgba(11,17,32,.05);
}
html{font-size:15px}
body.admin{font-family:var(--fb);background:var(--bg);color:var(--text);min-height:100vh;display:grid;grid-template-columns:var(--side-w) 1fr;-webkit-font-smoothing:antialiased}

/* ── Sidebar ──────────────────────────────────────────────── */
.admin-sidebar{
  background:var(--brand);
  display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;
  overflow-y:auto;padding:0 0 24px;
}
.admin-brand{
  padding:20px 20px 18px;
  font-family:var(--fh);font-size:1.1rem;font-weight:700;
  color:#fff;letter-spacing:-.02em;
  border-bottom:1px solid rgba(255,255,255,.07);
  margin-bottom:10px;
}
.admin-brand span{
  display:inline-block;margin-left:6px;
  font-size:9px;font-weight:700;text-transform:uppercase;
  letter-spacing:.1em;color:var(--teal);
  border:1px solid rgba(0,194,179,.3);padding:2px 7px;border-radius:99px;
  vertical-align:middle;
}
.admin-sidebar nav{flex:1;padding:0 10px}
.admin-sidebar nav a{
  display:flex;align-items:center;gap:8px;
  padding:9px 12px;border-radius:var(--r);
  font-size:.83rem;font-weight:500;
  color:rgba(255,255,255,.55);
  text-decoration:none;transition:all .15s;
  margin-bottom:2px;position:relative;
}
.admin-sidebar nav a:hover{color:#fff;background:rgba(255,255,255,.06)}
.admin-sidebar nav a.active{color:#fff;background:rgba(0,194,179,.12);color:var(--teal)}
.nav-badge{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--danger);color:#fff;
  font-size:10px;font-weight:700;
  min-width:18px;height:18px;border-radius:99px;
  padding:0 4px;margin-left:auto;
}
.admin-user{
  padding:14px 20px 0;
  border-top:1px solid rgba(255,255,255,.07);
  margin-top:10px;
}
.admin-user .who{font-size:.78rem;color:rgba(255,255,255,.45);margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-user .signout{font-size:.75rem;color:rgba(255,255,255,.3);text-decoration:none;transition:color .15s}
.admin-user .signout:hover{color:rgba(255,255,255,.7)}

/* ── Main ─────────────────────────────────────────────────── */
.admin-main{display:flex;flex-direction:column;min-height:100vh;min-width:0}
.admin-topbar{
  position:sticky;top:0;z-index:100;
  height:var(--top-h);
  background:var(--surface);
  border-bottom:1px solid var(--border);
  padding:0 28px;
  display:flex;align-items:center;gap:16px;
  box-shadow:var(--shadow);
}
.admin-topbar h1{font-family:var(--fh);font-size:1.05rem;font-weight:700;flex:1}
.topbar-alert{
  display:inline-flex;align-items:center;gap:6px;
  background:#fef3c7;color:#92400e;
  border:1px solid #fde68a;
  font-size:.75rem;font-weight:600;
  padding:4px 12px;border-radius:99px;
  text-decoration:none;transition:all .15s;
}
.topbar-alert:hover{background:#fde68a}
.admin-content{flex:1;padding:24px 28px 48px}

/* ── Stats grid ───────────────────────────────────────────── */
.grid.stats{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(160px,1fr));
  gap:12px;
  margin-bottom:28px;
}
.card{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  padding:18px 20px;
  display:flex;flex-direction:column;gap:4px;
  box-shadow:var(--shadow);
  position:relative;
}
.card span{font-size:.75rem;color:var(--muted);font-weight:500;text-transform:uppercase;letter-spacing:.04em}
.card b{font-family:var(--fh);font-size:1.8rem;font-weight:700;color:var(--text);line-height:1}
.card.card-warn{border-color:#fde68a;background:#fffbeb}
.card.card-warn b{color:var(--warn)}
.card.card-alert{border-color:#fca5a5;background:#fef2f2}
.card.card-alert b{color:var(--danger)}
.card-action{
  font-size:.72rem;color:var(--brand);font-weight:600;
  text-decoration:none;margin-top:4px;
  display:inline-flex;align-items:center;gap:3px;
}
.card-action:hover{color:var(--teal)}

/* ── Tables ───────────────────────────────────────────────── */
h2{font-family:var(--fh);font-size:1rem;font-weight:700;margin:24px 0 12px}
table.data{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);font-size:.82rem}
table.data thead tr{background:#f8fafc;border-bottom:1px solid var(--border)}
table.data th{padding:10px 14px;text-align:left;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);white-space:nowrap}
table.data td{padding:10px 14px;border-bottom:1px solid #f0f4f8;vertical-align:middle}
table.data tr:last-child td{border-bottom:none}
table.data tr:hover td{background:#f8faff}
table.data tr.row-suspended td{opacity:.65}
a{color:var(--brand);text-decoration:none}
a:hover{color:var(--teal);text-decoration:underline}
.text-link{color:var(--info);font-size:.78rem}

/* ── Filter bar ───────────────────────────────────────────── */
.filterbar{
  display:flex;align-items:center;gap:10px;
  margin-bottom:16px;flex-wrap:wrap;
}
.filter-input{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r);
  padding:7px 12px;font-family:var(--fb);font-size:.82rem;color:var(--text);
  outline:none;width:260px;transition:border-color .15s;
}
.filter-input:focus{border-color:var(--teal)}
.filter-select{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r);
  padding:7px 10px;font-family:var(--fb);font-size:.82rem;color:var(--text);
  cursor:pointer;outline:none;
}
.filter-count{font-size:.78rem;color:var(--muted);margin-left:auto}
.filter-pill{
  padding:5px 12px;border-radius:99px;font-size:.75rem;font-weight:600;
  border:1px solid var(--border);color:var(--muted);text-decoration:none;
  transition:all .15s;
}
.filter-pill:hover{border-color:var(--brand);color:var(--brand);text-decoration:none}
.filter-pill.active{background:var(--brand);color:#fff;border-color:var(--brand)}

/* ── Buttons ──────────────────────────────────────────────── */
.btn-primary{background:var(--brand);color:#fff;border:none;padding:7px 16px;border-radius:var(--r);font-family:var(--fb);font-size:.8rem;font-weight:600;cursor:pointer;transition:all .15s}
.btn-primary:hover{background:#1a2d4f}
.btn-secondary{background:#f0f4f8;color:var(--text);border:1px solid var(--border);padding:6px 14px;border-radius:var(--r);font-family:var(--fb);font-size:.78rem;font-weight:600;cursor:pointer;transition:all .15s}
.btn-secondary:hover{border-color:var(--brand)}
.btn-success{background:#d1fae5;color:#065f46;border:1px solid #a7f3d0;padding:6px 14px;border-radius:var(--r);font-family:var(--fb);font-size:.78rem;font-weight:600;cursor:pointer;transition:all .15s}
.btn-success:hover{background:#a7f3d0}
.btn-danger{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;padding:6px 14px;border-radius:var(--r);font-family:var(--fb);font-size:.78rem;font-weight:600;cursor:pointer;transition:all .15s}
.btn-danger:hover{background:#fca5a5}
.btn-warning{background:#fef3c7;color:#92400e;border:1px solid #fde68a;padding:6px 14px;border-radius:var(--r);font-family:var(--fb);font-size:.78rem;font-weight:600;cursor:pointer;transition:all .15s}
.btn-warning:hover{background:#fde68a}
.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border);padding:6px 14px;border-radius:var(--r);font-family:var(--fb);font-size:.78rem;font-weight:500;cursor:pointer;transition:all .15s;text-decoration:none;display:inline-block}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand);text-decoration:none}
.btn-xs{padding:3px 9px;font-size:.72rem;border-radius:6px}

/* ── Badges ───────────────────────────────────────────────── */
.plan-badge{display:inline-block;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:99px}
.plan-scholar{background:#e0f2fe;color:#0369a1}
.plan-investigator{background:#e0e7ff;color:#3730a3}
.plan-laboratory{background:#fce7f3;color:#9d174d}

.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;flex-shrink:0}
.status-active{background:var(--success)}
.status-suspended{background:var(--danger)}

.badge,.badge-active,.badge-warn,.badge-new,.badge-total{display:inline-flex;align-items:center;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:99px;text-transform:uppercase;letter-spacing:.04em}
.badge{background:#f0f4f8;color:var(--muted)}
.badge.active,.badge-active{background:#d1fae5;color:#065f46}
.badge.pending,.badge-warn{background:#fef3c7;color:#92400e;text-decoration:none}
.badge-warn:hover{background:#fde68a;text-decoration:none}
.badge-new{background:#fee2e2;color:#991b1b}
.badge-total{background:#f0f4f8;color:var(--muted)}
.email-sent-badge{display:inline-flex;align-items:center;font-size:.65rem;font-weight:600;padding:2px 7px;border-radius:99px;background:#d1fae5;color:#065f46;white-space:nowrap}

/* ── Request summary strip ────────────────────────────────── */
.req-summary{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  gap:10px;
  margin-bottom:20px;
}
.req-sum-card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-lg);padding:14px 16px;
  text-decoration:none;transition:all .15s;
  display:flex;flex-direction:column;gap:6px;
}
.req-sum-card:hover{border-color:var(--brand);box-shadow:var(--shadow);text-decoration:none}
.req-sum-card.active{border-color:var(--brand);background:#f8faff}
.req-sum-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.req-sum-counts{display:flex;gap:5px;flex-wrap:wrap}

/* ── Request cards ────────────────────────────────────────── */
.req-list{display:flex;flex-direction:column;gap:10px}
.req-card{
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-lg);padding:18px 20px;
  transition:box-shadow .15s;
}
.req-card:hover{box-shadow:var(--shadow)}
.req-card-new{border-left:3px solid var(--danger)}
.req-card-compact{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;flex-wrap:wrap;
}
.req-card-compact .req-title{flex:1;font-size:.82rem}
.req-card-compact .req-time{font-size:.72rem;color:var(--muted);margin-left:auto}

.req-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px;flex-wrap:wrap}
.req-card-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.req-card-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.req-title{font-size:.9rem;font-weight:700;color:var(--text)}
.req-time{font-size:.72rem;color:var(--muted);white-space:nowrap}

.req-type-badge{display:inline-block;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:99px;white-space:nowrap}
.type-domain{background:#dbeafe;color:#1d4ed8}
.type-addon{background:#d1fae5;color:#065f46}
.type-signup{background:#fce7f3;color:#9d174d}
.type-contact{background:#f3f4f6;color:#374151}
.type-pfcontact{background:#ede9fe;color:#5b21b6}

.req-status-badge{display:inline-block;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:99px}
.status-new{background:#fee2e2;color:#991b1b}
.status-read{background:#e0f2fe;color:#0369a1}
.status-actioned{background:#d1fae5;color:#065f46}
.status-dismissed{background:#f3f4f6;color:#9ca3af}

.req-user-row{display:flex;align-items:center;gap:8px;font-size:.78rem;color:var(--muted);margin-bottom:8px;flex-wrap:wrap}
.req-user-link{color:var(--brand);font-weight:500;text-decoration:none}
.req-user-link:hover{color:var(--teal);text-decoration:underline}
.req-site-link{font-size:.72rem;color:var(--info);text-decoration:none;padding:1px 7px;border:1px solid #bfdbfe;border-radius:99px}
.req-site-link:hover{background:#dbeafe}

.req-body{font-size:.82rem;color:#4a5568;line-height:1.65;margin-bottom:10px;padding:10px 12px;background:#f8fafc;border-radius:var(--r);white-space:pre-wrap}
.req-detail{font-size:.78rem;margin-bottom:10px;display:flex;flex-direction:column;gap:5px}
.req-detail-row{display:flex;gap:8px;align-items:center;color:var(--muted)}
.req-detail-row span:first-child{min-width:120px;color:var(--muted)}
.req-detail-row strong{color:var(--text)}

.req-actions{padding-top:10px;border-top:1px solid #f0f4f8;margin-top:6px}
.req-action-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.req-action-form-inline{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.req-notes-input{
  flex:1;min-width:180px;max-width:340px;
  background:#f8fafc;border:1px solid var(--border);border-radius:var(--r);
  padding:5px 10px;font-family:var(--fb);font-size:.78rem;color:var(--text);outline:none;
}
.req-notes-input:focus{border-color:var(--teal)}

/* ── Empty state ──────────────────────────────────────────── */
.empty-state{
  text-align:center;padding:60px 24px;
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-lg);color:var(--muted);font-size:.88rem;
}
.empty-icon{font-size:2rem;margin-bottom:10px;color:#a3b0c4}

/* ── Action group ─────────────────────────────────────────── */
.action-group{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.action-group form{display:flex;gap:5px;align-items:center;flex-wrap:wrap}

/* ── Pagination ───────────────────────────────────────────── */
.pagination{display:flex;gap:4px;margin-top:20px}
.pagination a{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--r);border:1px solid var(--border);font-size:.8rem;color:var(--muted);text-decoration:none;transition:all .15s}
.pagination a:hover{border-color:var(--brand);color:var(--brand);text-decoration:none}
.pagination a.active{background:var(--brand);color:#fff;border-color:var(--brand)}

/* ── Responsive ───────────────────────────────────────────── */
@media(max-width:900px){
  body.admin{grid-template-columns:1fr}
  .admin-sidebar{display:none}
  .grid.stats{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  .admin-content{padding:16px}
  .grid.stats{grid-template-columns:1fr 1fr}
  .req-summary{grid-template-columns:1fr 1fr}
  table.data{font-size:.75rem}
  table.data th,table.data td{padding:8px 10px}
}
