Files
betterhuman/designs/02-dashboard.html
T
2026-05-05 22:28:19 +00:00

697 lines
31 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BetterHuman — Dashboard</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Sora:wght@600;700&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Inter', sans-serif; background: #F8FAFC; display: flex; min-height: 100vh; font-size: 14px; color: #0F172A; }
/* SIDEBAR */
.sidebar {
width: 240px; background: #0F172A; min-height: 100vh;
display: flex; flex-direction: column;
position: fixed; top: 0; left: 0; bottom: 0; z-index: 10;
overflow-y: auto;
}
.sidebar-logo {
padding: 20px 20px 16px;
display: flex; align-items: center; gap: 10px;
border-bottom: 1px solid rgba(255,255,255,0.06);
}
.logo-icon {
width: 36px; height: 36px;
background: linear-gradient(135deg, #6366F1 0%, #8B5CF6 100%);
border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.logo-icon svg { width: 20px; height: 20px; }
.logo-name { font-family: 'Sora', sans-serif; font-size: 16px; font-weight: 700; color: #FFFFFF; }
.logo-company { font-size: 11px; color: #475569; font-weight: 500; }
.sidebar-search {
padding: 12px 16px;
border-bottom: 1px solid rgba(255,255,255,0.06);
}
.sidebar-search input {
width: 100%; padding: 7px 10px 7px 32px;
background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.08);
border-radius: 6px; color: #94A3B8; font-size: 12px; font-family: 'Inter', sans-serif;
outline: none;
}
.sidebar-search input::placeholder { color: #475569; }
.search-wrap { position: relative; }
.search-wrap svg { position: absolute; left: 8px; top: 50%; transform: translateY(-50%); width: 14px; height: 14px; color: #475569; }
.sidebar-nav { padding: 8px 0; flex: 1; }
.nav-section-label {
font-size: 10px; font-weight: 600; letter-spacing: 0.08em;
color: #334155; padding: 16px 20px 6px; text-transform: uppercase;
}
.nav-item {
display: flex; align-items: center; gap: 10px;
padding: 8px 16px; margin: 1px 8px; border-radius: 7px;
color: #64748B; font-size: 13px; font-weight: 500; cursor: pointer;
transition: all 0.15s; text-decoration: none;
}
.nav-item:hover { background: #1E293B; color: #CBD5E1; }
.nav-item.active { background: #6366F1; color: #FFFFFF; }
.nav-item svg { width: 16px; height: 16px; flex-shrink: 0; }
.nav-badge {
margin-left: auto; background: #EF4444; color: white;
font-size: 10px; font-weight: 700; padding: 1px 6px; border-radius: 9999px;
}
.sidebar-footer {
padding: 12px 16px; border-top: 1px solid rgba(255,255,255,0.06);
display: flex; align-items: center; gap: 10px;
}
.avatar-sm {
width: 32px; height: 32px; border-radius: 50%;
background: linear-gradient(135deg, #6366F1, #8B5CF6);
display: flex; align-items: center; justify-content: center;
font-size: 12px; font-weight: 700; color: white; flex-shrink: 0;
}
.footer-name { font-size: 12px; font-weight: 600; color: #CBD5E1; }
.footer-role { font-size: 11px; color: #475569; }
/* MAIN LAYOUT */
.main { margin-left: 240px; flex: 1; min-height: 100vh; display: flex; flex-direction: column; }
/* TOP BAR */
.topbar {
height: 64px; background: #FFFFFF; border-bottom: 1px solid #E2E8F0;
display: flex; align-items: center; justify-content: space-between;
padding: 0 32px; position: sticky; top: 0; z-index: 5;
}
.topbar-left { display: flex; flex-direction: column; }
.page-title { font-family: 'Sora', sans-serif; font-size: 18px; font-weight: 700; color: #0F172A; }
.page-breadcrumb { font-size: 12px; color: #94A3B8; }
.topbar-right { display: flex; align-items: center; gap: 16px; }
.topbar-search {
position: relative; display: flex; align-items: center;
}
.topbar-search input {
padding: 8px 12px 8px 36px; border: 1.5px solid #E2E8F0; border-radius: 8px;
font-family: 'Inter', sans-serif; font-size: 13px; color: #0F172A;
background: #F8FAFC; width: 220px; outline: none;
}
.topbar-search svg { position: absolute; left: 10px; width: 16px; height: 16px; color: #94A3B8; }
.icon-btn {
width: 36px; height: 36px; border-radius: 8px; border: 1.5px solid #E2E8F0;
background: #FFFFFF; display: flex; align-items: center; justify-content: center;
cursor: pointer; position: relative;
}
.icon-btn svg { width: 18px; height: 18px; color: #64748B; }
.notif-dot {
position: absolute; top: 6px; right: 6px; width: 8px; height: 8px;
background: #EF4444; border-radius: 50%; border: 2px solid #FFFFFF;
}
.topbar-avatar {
width: 36px; height: 36px; border-radius: 50%;
background: linear-gradient(135deg, #6366F1, #8B5CF6);
display: flex; align-items: center; justify-content: center;
font-size: 13px; font-weight: 700; color: white; cursor: pointer;
}
/* CONTENT */
.content { padding: 32px; flex: 1; }
/* QUICK ACTIONS */
.quick-actions { display: flex; gap: 12px; margin-bottom: 28px; }
.btn-primary {
display: flex; align-items: center; gap: 8px;
padding: 9px 18px; background: #6366F1; color: #FFFFFF;
border: none; border-radius: 8px; font-family: 'Inter', sans-serif;
font-size: 13px; font-weight: 600; cursor: pointer;
}
.btn-primary svg { width: 15px; height: 15px; }
.btn-secondary {
display: flex; align-items: center; gap: 8px;
padding: 9px 18px; background: #FFFFFF; color: #0F172A;
border: 1.5px solid #E2E8F0; border-radius: 8px; font-family: 'Inter', sans-serif;
font-size: 13px; font-weight: 500; cursor: pointer;
}
.btn-secondary svg { width: 15px; height: 15px; color: #64748B; }
/* METRIC CARDS */
.metrics-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 16px; }
.metrics-row-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; margin-bottom: 24px; }
.metric-card {
background: #FFFFFF; border-radius: 12px; padding: 20px 24px;
box-shadow: 0 1px 3px rgba(0,0,0,0.08);
display: flex; align-items: flex-start; justify-content: space-between;
}
.metric-label { font-size: 12px; color: #64748B; font-weight: 500; margin-bottom: 8px; }
.metric-value { font-family: 'Sora', sans-serif; font-size: 28px; font-weight: 700; color: #0F172A; }
.metric-delta { font-size: 12px; color: #10B981; margin-top: 4px; }
.metric-delta.down { color: #EF4444; }
.metric-icon {
width: 44px; height: 44px; border-radius: 10px;
display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.metric-icon svg { width: 22px; height: 22px; }
.icon-indigo { background: linear-gradient(135deg, #EEF2FF, #C7D2FE); }
.icon-indigo svg { color: #6366F1; }
.icon-green { background: linear-gradient(135deg, #ECFDF5, #A7F3D0); }
.icon-green svg { color: #10B981; }
.icon-amber { background: linear-gradient(135deg, #FFFBEB, #FDE68A); }
.icon-amber svg { color: #F59E0B; }
.icon-red { background: linear-gradient(135deg, #FEF2F2, #FECACA); }
.icon-red svg { color: #EF4444; }
.icon-blue { background: linear-gradient(135deg, #EFF6FF, #BFDBFE); }
.icon-blue svg { color: #3B82F6; }
.icon-purple { background: linear-gradient(135deg, #F5F3FF, #DDD6FE); }
.icon-purple svg { color: #8B5CF6; }
/* MAIN GRID */
.main-grid { display: grid; grid-template-columns: 1fr 320px; gap: 24px; }
/* CHART CARD */
.card { background: #FFFFFF; border-radius: 12px; padding: 24px; box-shadow: 0 1px 3px rgba(0,0,0,0.08); }
.card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.card-title { font-family: 'Sora', sans-serif; font-size: 15px; font-weight: 700; color: #0F172A; }
.card-action { font-size: 12px; color: #6366F1; font-weight: 500; cursor: pointer; }
/* BAR CHART */
.bar-chart { display: flex; flex-direction: column; gap: 12px; }
.bar-row { display: flex; align-items: center; gap: 12px; }
.bar-label { font-size: 12px; color: #64748B; width: 90px; text-align: right; flex-shrink: 0; }
.bar-track { flex: 1; height: 28px; background: #F1F5F9; border-radius: 6px; overflow: hidden; position: relative; }
.bar-fill { height: 100%; border-radius: 6px; display: flex; align-items: center; padding-left: 10px; }
.bar-fill.indigo { background: linear-gradient(90deg, #6366F1, #818CF8); }
.bar-fill.green { background: linear-gradient(90deg, #10B981, #34D399); }
.bar-fill.amber { background: linear-gradient(90deg, #F59E0B, #FCD34D); }
.bar-fill.blue { background: linear-gradient(90deg, #3B82F6, #60A5FA); }
.bar-fill.purple { background: linear-gradient(90deg, #8B5CF6, #A78BFA); }
.bar-fill.teal { background: linear-gradient(90deg, #14B8A6, #2DD4BF); }
.bar-count { font-size: 12px; font-weight: 700; color: white; }
.bar-num { font-size: 12px; color: #64748B; width: 30px; flex-shrink: 0; text-align: right; }
/* SIDE CARDS */
.side-cards { display: flex; flex-direction: column; gap: 16px; }
.list-item { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid #F1F5F9; }
.list-item:last-child { border-bottom: none; padding-bottom: 0; }
.list-item:first-child { padding-top: 0; }
.avatar { width: 36px; height: 36px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; color: white; }
.av-1 { background: linear-gradient(135deg, #6366F1, #8B5CF6); }
.av-2 { background: linear-gradient(135deg, #10B981, #059669); }
.av-3 { background: linear-gradient(135deg, #F59E0B, #D97706); }
.av-4 { background: linear-gradient(135deg, #EF4444, #DC2626); }
.av-5 { background: linear-gradient(135deg, #3B82F6, #2563EB); }
.list-name { font-size: 13px; font-weight: 600; color: #0F172A; }
.list-sub { font-size: 11px; color: #94A3B8; }
.list-right { margin-left: auto; text-align: right; }
.list-date { font-size: 11px; color: #64748B; }
.badge { padding: 2px 10px; border-radius: 9999px; font-size: 11px; font-weight: 500; }
.badge-green { background: #ECFDF5; color: #059669; }
.badge-amber { background: #FFFBEB; color: #D97706; }
.badge-blue { background: #EFF6FF; color: #2563EB; }
.badge-red { background: #FEF2F2; color: #DC2626; }
.badge-indigo { background: #EEF2FF; color: #6366F1; }
.pending-item { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid #F1F5F9; }
.pending-item:last-child { border-bottom: none; }
.pending-info { flex: 1; }
.pending-name { font-size: 13px; font-weight: 600; color: #0F172A; }
.pending-detail { font-size: 11px; color: #94A3B8; margin-top: 1px; }
.pending-actions { display: flex; gap: 6px; }
.btn-xs-green {
padding: 4px 10px; background: #ECFDF5; color: #059669;
border: none; border-radius: 6px; font-size: 11px; font-weight: 600; cursor: pointer;
}
.btn-xs-red {
padding: 4px 10px; background: #FEF2F2; color: #DC2626;
border: none; border-radius: 6px; font-size: 11px; font-weight: 600; cursor: pointer;
}
.birthday-icon { font-size: 18px; margin-left: auto; }
</style>
</head>
<body>
<!-- SIDEBAR -->
<aside class="sidebar">
<div class="sidebar-logo">
<div class="logo-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/>
<path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>
</svg>
</div>
<div>
<div class="logo-name">BetterHuman</div>
<div class="logo-company">TechCorp India Pvt. Ltd.</div>
</div>
</div>
<div class="sidebar-search">
<div class="search-wrap">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/>
</svg>
<input type="text" placeholder="Search people, docs...">
</div>
</div>
<nav class="sidebar-nav">
<div class="nav-section-label">Main</div>
<a class="nav-item active" href="02-dashboard.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/>
<rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/>
</svg>
Dashboard
</a>
<a class="nav-item" href="03-people.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/>
<path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>
</svg>
People
</a>
<a class="nav-item" href="#">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/>
</svg>
Org Chart
</a>
<div class="nav-section-label">Workforce</div>
<a class="nav-item" href="07-recruitment.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="2" y="7" width="20" height="14" rx="2"/><path d="M16 7V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2"/>
</svg>
Recruitment
</a>
<a class="nav-item" href="#">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/>
<rect x="8" y="2" width="8" height="4" rx="1" ry="1"/>
</svg>
Onboarding
</a>
<a class="nav-item" href="#">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/>
</svg>
Attendance
</a>
<a class="nav-item" href="05-leave.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="4" width="18" height="18" rx="2"/><line x1="16" y1="2" x2="16" y2="6"/>
<line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/>
</svg>
Leave
<span class="nav-badge">5</span>
</a>
<a class="nav-item" href="06-payroll.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/>
</svg>
Payroll
</a>
<div class="nav-section-label">Talent</div>
<a class="nav-item" href="08-performance.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="10"/><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>
</svg>
Performance
</a>
<a class="nav-item" href="#">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/>
</svg>
Learning
</a>
<a class="nav-item" href="#">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/>
</svg>
Benefits
</a>
<div class="nav-section-label">Culture</div>
<a class="nav-item" href="#">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>
</svg>
Engagement
</a>
<a class="nav-item" href="#">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="8" r="6"/><path d="M15.477 12.89L17 22l-5-3-5 3 1.523-9.11"/>
</svg>
Recognition
</a>
<div class="nav-section-label">Insights</div>
<a class="nav-item" href="09-analytics.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/>
<line x1="6" y1="20" x2="6" y2="14"/>
</svg>
Analytics
</a>
<div class="nav-section-label">Admin</div>
<a class="nav-item" href="10-settings.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="3"/>
<path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>
</svg>
Settings
</a>
</nav>
<div class="sidebar-footer">
<div class="avatar-sm">PS</div>
<div>
<div class="footer-name">Priya Sharma</div>
<div class="footer-role">HR Admin</div>
</div>
</div>
</aside>
<!-- MAIN -->
<div class="main">
<!-- TOP BAR -->
<header class="topbar">
<div class="topbar-left">
<span class="page-title">Dashboard</span>
<span class="page-breadcrumb">Good morning, Priya — Monday, 5 May 2026</span>
</div>
<div class="topbar-right">
<div class="topbar-search">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/>
</svg>
<input type="text" placeholder="Search employees, reports...">
</div>
<div class="icon-btn">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 0 1-3.46 0"/>
</svg>
<div class="notif-dot"></div>
</div>
<div class="topbar-avatar">PS</div>
</div>
</header>
<!-- CONTENT -->
<div class="content">
<!-- Quick Actions -->
<div class="quick-actions">
<button class="btn-primary">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
<line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/>
</svg>
Add Employee
</button>
<button class="btn-secondary">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/>
</svg>
Run Payroll
</button>
<button class="btn-secondary">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/>
<line x1="6" y1="20" x2="6" y2="14"/>
</svg>
View Reports
</button>
</div>
<!-- Metrics Row 1 -->
<div class="metrics-row">
<div class="metric-card">
<div>
<div class="metric-label">Total Employees</div>
<div class="metric-value">247</div>
<div class="metric-delta">+8 this month</div>
</div>
<div class="metric-icon icon-indigo">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/>
<path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>
</svg>
</div>
</div>
<div class="metric-card">
<div>
<div class="metric-label">Open Positions</div>
<div class="metric-value">12</div>
<div class="metric-delta">3 urgent</div>
</div>
<div class="metric-icon icon-amber">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="2" y="7" width="20" height="14" rx="2"/><path d="M16 7V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2"/>
</svg>
</div>
</div>
<div class="metric-card">
<div>
<div class="metric-label">On Leave Today</div>
<div class="metric-value">8</div>
<div class="metric-delta" style="color:#64748B">3.2% of workforce</div>
</div>
<div class="metric-icon icon-blue">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="4" width="18" height="18" rx="2"/><line x1="16" y1="2" x2="16" y2="6"/>
<line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/>
</svg>
</div>
</div>
<div class="metric-card">
<div>
<div class="metric-label">Pending Approvals</div>
<div class="metric-value">5</div>
<div class="metric-delta down">2 overdue</div>
</div>
<div class="metric-icon icon-red">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/>
<polyline points="22 4 12 14.01 9 11.01"/>
</svg>
</div>
</div>
</div>
<!-- Metrics Row 2 -->
<div class="metrics-row-2">
<div class="metric-card">
<div>
<div class="metric-label">Monthly Payroll — May 2026</div>
<div class="metric-value">₹48.2L</div>
<div class="metric-delta">+2.4% vs last month</div>
</div>
<div class="metric-icon icon-green">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/>
</svg>
</div>
</div>
<div class="metric-card">
<div>
<div class="metric-label">Avg Engagement Score</div>
<div class="metric-value">78%</div>
<div class="metric-delta">+3pts from last survey</div>
</div>
<div class="metric-icon icon-purple">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>
</svg>
</div>
</div>
</div>
<!-- Main grid -->
<div class="main-grid">
<!-- Left: Chart -->
<div style="display:flex;flex-direction:column;gap:16px;">
<div class="card">
<div class="card-header">
<span class="card-title">Headcount by Department</span>
<span class="card-action">View All</span>
</div>
<div class="bar-chart">
<div class="bar-row">
<div class="bar-label">Engineering</div>
<div class="bar-track">
<div class="bar-fill indigo" style="width:89%"><span class="bar-count">89</span></div>
</div>
<div class="bar-num">89</div>
</div>
<div class="bar-row">
<div class="bar-label">Sales</div>
<div class="bar-track">
<div class="bar-fill green" style="width:45%"><span class="bar-count">45</span></div>
</div>
<div class="bar-num">45</div>
</div>
<div class="bar-row">
<div class="bar-label">Operations</div>
<div class="bar-track">
<div class="bar-fill teal" style="width:35%"><span class="bar-count">35</span></div>
</div>
<div class="bar-num">35</div>
</div>
<div class="bar-row">
<div class="bar-label">Product</div>
<div class="bar-track">
<div class="bar-fill amber" style="width:28%"><span class="bar-count">28</span></div>
</div>
<div class="bar-num">28</div>
</div>
<div class="bar-row">
<div class="bar-label">Finance</div>
<div class="bar-track">
<div class="bar-fill blue" style="width:18%"><span class="bar-count">18</span></div>
</div>
<div class="bar-num">18</div>
</div>
<div class="bar-row">
<div class="bar-label">HR</div>
<div class="bar-track">
<div class="bar-fill purple" style="width:12%"><span class="bar-count">12</span></div>
</div>
<div class="bar-num">12</div>
</div>
</div>
</div>
<!-- Pending Leave Approvals -->
<div class="card">
<div class="card-header">
<span class="card-title">Pending Leave Approvals</span>
<span class="card-action">View All (5)</span>
</div>
<div class="pending-item">
<div class="avatar av-2">AK</div>
<div class="pending-info">
<div class="pending-name">Ananya Krishnan</div>
<div class="pending-detail">Annual Leave · May 812 · 5 days · Engineering</div>
</div>
<div class="pending-actions">
<button class="btn-xs-green">Approve</button>
<button class="btn-xs-red">Reject</button>
</div>
</div>
<div class="pending-item">
<div class="avatar av-3">VS</div>
<div class="pending-info">
<div class="pending-name">Vikram Singh</div>
<div class="pending-detail">Sick Leave · May 6 · 1 day · Sales</div>
</div>
<div class="pending-actions">
<button class="btn-xs-green">Approve</button>
<button class="btn-xs-red">Reject</button>
</div>
</div>
<div class="pending-item">
<div class="avatar av-5">RD</div>
<div class="pending-info">
<div class="pending-name">Rohan Das</div>
<div class="pending-detail">Compensatory Off · May 9 · 1 day · Product</div>
</div>
<div class="pending-actions">
<button class="btn-xs-green">Approve</button>
<button class="btn-xs-red">Reject</button>
</div>
</div>
</div>
</div>
<!-- Right: Side cards -->
<div class="side-cards">
<!-- Upcoming Birthdays -->
<div class="card">
<div class="card-header">
<span class="card-title">Upcoming Birthdays</span>
<span class="card-action">This Month</span>
</div>
<div class="list-item">
<div class="avatar av-1">MN</div>
<div>
<div class="list-name">Meera Nair</div>
<div class="list-sub">Engineering · May 7</div>
</div>
<span class="birthday-icon">🎂</span>
</div>
<div class="list-item">
<div class="avatar av-3">KP</div>
<div>
<div class="list-name">Karan Patel</div>
<div class="list-sub">Sales · May 11</div>
</div>
<span class="birthday-icon">🎂</span>
</div>
<div class="list-item">
<div class="avatar av-4">SR</div>
<div>
<div class="list-name">Sanya Reddy</div>
<div class="list-sub">Product · May 18</div>
</div>
<span class="birthday-icon">🎂</span>
</div>
</div>
<!-- Recent Hires -->
<div class="card">
<div class="card-header">
<span class="card-title">Recent Hires</span>
<span class="card-action">This Month</span>
</div>
<div class="list-item">
<div class="avatar av-2">AR</div>
<div>
<div class="list-name">Arjun Rao</div>
<div class="list-sub">Backend Engineer · May 1</div>
</div>
<div class="list-right">
<span class="badge badge-green">Active</span>
</div>
</div>
<div class="list-item">
<div class="avatar av-5">PJ</div>
<div>
<div class="list-name">Pooja Joshi</div>
<div class="list-sub">Sales Executive · May 2</div>
</div>
<div class="list-right">
<span class="badge badge-blue">Probation</span>
</div>
</div>
<div class="list-item">
<div class="avatar av-3">NB</div>
<div>
<div class="list-name">Nikhil Bhat</div>
<div class="list-sub">DevOps Engineer · May 3</div>
</div>
<div class="list-right">
<span class="badge badge-blue">Probation</span>
</div>
</div>
<div class="list-item">
<div class="avatar av-4">DK</div>
<div>
<div class="list-name">Divya Kumar</div>
<div class="list-sub">UX Designer · May 5</div>
</div>
<div class="list-right">
<span class="badge badge-blue">Probation</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>