Files
2026-05-09 18:27:47 +00:00

427 lines
25 KiB
HTML
Raw Permalink 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>HR Portal v4 — Employee Directory</title>
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #f8fafc; color: #0f172a; display: flex; min-height: 100vh; }
.sidebar { width: 240px; min-height: 100vh; background: #1e3a5f; display: flex; flex-direction: column; position: fixed; top: 0; left: 0; z-index: 100; }
.sidebar-logo { padding: 20px 20px 16px; border-bottom: 1px solid rgba(255,255,255,0.08); display: flex; align-items: center; gap: 10px; }
.sidebar-logo-icon { width: 36px; height: 36px; background: #2563eb; border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.sidebar-logo-text { font-size: 15px; font-weight: 700; color: #ffffff; }
.sidebar-logo-sub { font-size: 10px; color: #94a3b8; margin-top: 1px; }
.sidebar-nav { flex: 1; padding: 12px 0; overflow-y: auto; }
.nav-section-label { font-size: 10px; font-weight: 600; color: #64748b; letter-spacing: 0.8px; text-transform: uppercase; padding: 8px 20px 4px; }
.nav-item { display: flex; align-items: center; gap: 10px; padding: 9px 20px; color: #cbd5e1; font-size: 13.5px; font-weight: 500; cursor: pointer; transition: background 0.15s; border-left: 3px solid transparent; text-decoration: none; }
.nav-item:hover { background: rgba(255,255,255,0.07); color: #ffffff; }
.nav-item.active { background: rgba(37,99,235,0.25); color: #ffffff; border-left-color: #2563eb; }
.nav-badge { margin-left: auto; background: #2563eb; color: #fff; font-size: 10px; font-weight: 700; padding: 1px 6px; border-radius: 20px; }
.sidebar-footer { padding: 14px 16px; border-top: 1px solid rgba(255,255,255,0.08); display: flex; align-items: center; gap: 10px; }
.avatar { width: 34px; height: 34px; border-radius: 50%; background: #2563eb; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; color: #fff; flex-shrink: 0; }
.sidebar-user-name { font-size: 13px; font-weight: 600; color: #ffffff; }
.sidebar-user-role { font-size: 11px; color: #94a3b8; }
.main { margin-left: 240px; display: flex; flex-direction: column; flex: 1; }
.header { position: sticky; top: 0; z-index: 50; background: #ffffff; border-bottom: 1px solid #e2e8f0; padding: 0 28px; height: 60px; display: flex; align-items: center; gap: 16px; }
.header-title { font-size: 16px; font-weight: 700; color: #0f172a; flex: 1; }
.search-box { display: flex; align-items: center; gap: 8px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 8px 14px; width: 260px; }
.search-box input { border: none; background: transparent; font-size: 13px; color: #374151; outline: none; width: 100%; font-family: inherit; }
.header-actions { display: flex; align-items: center; gap: 8px; }
.icon-btn { width: 36px; height: 36px; border-radius: 8px; border: 1px solid #e2e8f0; background: #ffffff; display: flex; align-items: center; justify-content: center; cursor: pointer; position: relative; color: #64748b; }
.notif-badge { position: absolute; top: -4px; right: -4px; width: 16px; height: 16px; background: #dc2626; border-radius: 50%; font-size: 9px; font-weight: 700; color: #fff; display: flex; align-items: center; justify-content: center; border: 2px solid #fff; }
.header-avatar { width: 34px; height: 34px; border-radius: 50%; background: #1e3a5f; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; color: #fff; cursor: pointer; }
.content { padding: 28px; flex: 1; }
.page-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.page-title { font-size: 20px; font-weight: 700; color: #0f172a; }
.page-sub { font-size: 13px; color: #64748b; margin-top: 2px; }
.btn-primary { display: flex; align-items: center; gap: 6px; background: #2563eb; color: #fff; border: none; border-radius: 8px; padding: 9px 18px; font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit; transition: background 0.15s; }
.btn-primary:hover { background: #1d4ed8; }
.filter-bar { display: flex; align-items: center; gap: 12px; background: #fff; border: 1px solid #e2e8f0; border-radius: 10px; padding: 14px 20px; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.04); }
.filter-search { display: flex; align-items: center; gap: 8px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 8px; padding: 8px 12px; flex: 1; }
.filter-search input { border: none; background: transparent; font-size: 13px; color: #374151; outline: none; width: 100%; font-family: inherit; }
.filter-select { appearance: none; background: #f8fafc url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center; border: 1px solid #e2e8f0; border-radius: 8px; padding: 8px 32px 8px 12px; font-size: 13px; color: #374151; font-family: inherit; cursor: pointer; outline: none; min-width: 140px; }
.filter-select:focus { border-color: #2563eb; }
.table-card { background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); overflow: hidden; }
table { width: 100%; border-collapse: collapse; }
th { font-size: 11px; font-weight: 600; color: #64748b; text-transform: uppercase; letter-spacing: 0.5px; padding: 11px 16px; text-align: left; background: #f8fafc; border-bottom: 1px solid #e2e8f0; white-space: nowrap; }
td { padding: 13px 16px; font-size: 13px; color: #374151; border-bottom: 1px solid #f1f5f9; vertical-align: middle; }
tr:last-child td { border-bottom: none; }
tr:hover td { background: #fafbfd; }
.emp-cell { display: flex; align-items: center; gap: 10px; }
.emp-avatar { width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; color: #fff; flex-shrink: 0; }
.emp-name { font-size: 13px; font-weight: 600; color: #0f172a; }
.emp-code { font-size: 11px; color: #94a3b8; }
.badge { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 20px; font-size: 11px; font-weight: 600; white-space: nowrap; }
.badge-active { background: #f0fdf4; color: #16a34a; }
.badge-inactive { background: #f1f5f9; color: #64748b; }
.badge-probation { background: #fff7ed; color: #d97706; }
.action-btns { display: flex; align-items: center; gap: 6px; }
.btn-action { display: inline-flex; align-items: center; gap: 4px; padding: 5px 10px; border-radius: 6px; font-size: 12px; font-weight: 500; cursor: pointer; border: 1px solid; font-family: inherit; transition: background 0.15s; text-decoration: none; }
.btn-view { border-color: #e2e8f0; background: #f8fafc; color: #374151; }
.btn-view:hover { background: #f1f5f9; }
.btn-edit { border-color: #dbeafe; background: #eff6ff; color: #2563eb; }
.btn-edit:hover { background: #dbeafe; }
.pagination { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; border-top: 1px solid #f1f5f9; }
.page-info { font-size: 13px; color: #64748b; }
.page-btns { display: flex; align-items: center; gap: 4px; }
.page-btn { width: 32px; height: 32px; border-radius: 6px; border: 1px solid #e2e8f0; background: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 500; cursor: pointer; color: #374151; transition: all 0.15s; }
.page-btn:hover { border-color: #2563eb; color: #2563eb; }
.page-btn.active { background: #2563eb; border-color: #2563eb; color: #fff; }
.page-btn.disabled { opacity: 0.4; cursor: default; }
.dept-tag { font-size: 12px; color: #475569; }
.desig-text { font-size: 12px; color: #64748b; }
/* MOBILE RESPONSIVE */
.sidebar-overlay {
display: none;
position: fixed; inset: 0; background: rgba(0,0,0,0.5);
z-index: 99;
}
.hamburger {
display: none;
background: none; border: none; cursor: pointer;
padding: 4px; color: #0f172a;
}
@media (max-width: 768px) {
.sidebar {
transform: translateX(-100%);
transition: transform 0.25s ease;
}
.sidebar.open {
transform: translateX(0);
}
.sidebar-overlay.open {
display: block;
}
.main {
margin-left: 0 !important;
}
.hamburger {
display: flex;
align-items: center;
justify-content: center;
}
.search-box {
display: none;
}
.header {
padding: 0 16px;
}
.content {
padding: 16px !important;
}
/* Stack KPI cards on mobile */
.kpi-grid, .stats-row {
grid-template-columns: repeat(2, 1fr) !important;
}
/* Hide less important table columns on mobile */
.hide-mobile {
display: none !important;
}
}
@media (max-width: 480px) {
.kpi-grid, .stats-row {
grid-template-columns: 1fr 1fr !important;
}
}
</style>
</head>
<body>
<div class="sidebar-overlay" id="sidebarOverlay" onclick="closeSidebar()"></div>
<aside class="sidebar">
<div class="sidebar-logo">
<div class="sidebar-logo-icon">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2.2"><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="sidebar-logo-text">HR Portal v4</div>
<div class="sidebar-logo-sub">Admin Console</div>
</div>
</div>
<nav class="sidebar-nav">
<div class="nav-section-label">Main</div>
<a class="nav-item" href="02-admin-dashboard.html"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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 active" href="#"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>Employees</a>
<a class="nav-item" href="#"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>Departments</a>
<div class="nav-section-label" style="margin-top:8px;">Operations</div>
<a class="nav-item" href="04-leave-management.html"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2" ry="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 Management<span class="nav-badge">5</span></a>
<a class="nav-item" href="06-attendance.html"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>Attendance</a>
<a class="nav-item" href="05-payroll.html"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
<a class="nav-item" href="07-recruitment.html"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>Recruitment</a>
<a class="nav-item" href="#"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>Performance</a>
<div class="nav-section-label" style="margin-top:8px;">Analytics</div>
<a class="nav-item" href="#"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>Reports</a>
<a class="nav-item" href="#"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="3"/><path d="M19.07 4.93a10 10 0 0 1 0 14.14M4.93 4.93a10 10 0 0 0 0 14.14"/></svg>Settings</a>
</nav>
<div class="sidebar-footer">
<div class="avatar">AK</div>
<div>
<div class="sidebar-user-name">Arun Kumar</div>
<div class="sidebar-user-role">Super Admin</div>
</div>
</div>
</aside>
<div class="main">
<header class="header">
<button class="hamburger" onclick="toggleSidebar()" aria-label="Toggle menu">
<svg width="22" height="22" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"/>
</svg>
</button>
<div class="header-title">Employee Directory</div>
<div class="search-box">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2"><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...">
</div>
<div class="header-actions">
<div class="icon-btn"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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><span class="notif-badge">5</span></div>
<div class="header-avatar">AK</div>
</div>
</header>
<div class="content">
<div class="page-top">
<div>
<div class="page-title">Employees</div>
<div class="page-sub">247 total employees &bull; 8 departments</div>
</div>
<button class="btn-primary">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
Add Employee
</button>
</div>
<div class="filter-bar">
<div class="filter-search">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
<input type="text" placeholder="Search by name, code, email...">
</div>
<select class="filter-select">
<option>All Departments</option>
<option>Engineering</option>
<option>Product</option>
<option>Sales</option>
<option>Human Resources</option>
<option>Finance</option>
<option>Marketing</option>
</select>
<select class="filter-select">
<option>All Status</option>
<option>Active</option>
<option>Inactive</option>
<option>On Probation</option>
</select>
<select class="filter-select">
<option>All Types</option>
<option>Full-Time</option>
<option>Part-Time</option>
<option>Contract</option>
<option>Intern</option>
</select>
</div>
<div class="table-card">
<table>
<thead>
<tr>
<th>Employee</th>
<th>Department</th>
<th>Designation</th>
<th>Joining Date</th>
<th>Type</th>
<th>Status</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<div class="emp-cell">
<div class="emp-avatar" style="background:#7c3aed">PS</div>
<div><div class="emp-name">Priya Sharma</div><div class="emp-code">EMP-0041</div></div>
</div>
</td>
<td><div class="dept-tag">Engineering</div></td>
<td><div class="desig-text">Senior Software Engineer</div></td>
<td style="color:#64748b;font-size:13px">Mar 12, 2023</td>
<td><span style="font-size:12px;color:#475569">Full-Time</span></td>
<td><span class="badge badge-active">Active</span></td>
<td><div class="action-btns"><a class="btn-action btn-view" href="#">View</a><a class="btn-action btn-edit" href="#">Edit</a></div></td>
</tr>
<tr>
<td>
<div class="emp-cell">
<div class="emp-avatar" style="background:#0891b2">RV</div>
<div><div class="emp-name">Rahul Verma</div><div class="emp-code">EMP-0028</div></div>
</div>
</td>
<td><div class="dept-tag">Product</div></td>
<td><div class="desig-text">Product Manager</div></td>
<td style="color:#64748b;font-size:13px">Jan 5, 2022</td>
<td><span style="font-size:12px;color:#475569">Full-Time</span></td>
<td><span class="badge badge-active">Active</span></td>
<td><div class="action-btns"><a class="btn-action btn-view" href="#">View</a><a class="btn-action btn-edit" href="#">Edit</a></div></td>
</tr>
<tr>
<td>
<div class="emp-cell">
<div class="emp-avatar" style="background:#16a34a">AP</div>
<div><div class="emp-name">Anjali Patel</div><div class="emp-code">EMP-0055</div></div>
</div>
</td>
<td><div class="dept-tag">Human Resources</div></td>
<td><div class="desig-text">HR Executive</div></td>
<td style="color:#64748b;font-size:13px">Jun 1, 2024</td>
<td><span style="font-size:12px;color:#475569">Full-Time</span></td>
<td><span class="badge badge-probation">Probation</span></td>
<td><div class="action-btns"><a class="btn-action btn-view" href="#">View</a><a class="btn-action btn-edit" href="#">Edit</a></div></td>
</tr>
<tr>
<td>
<div class="emp-cell">
<div class="emp-avatar" style="background:#d97706">VS</div>
<div><div class="emp-name">Vikram Singh</div><div class="emp-code">EMP-0012</div></div>
</div>
</td>
<td><div class="dept-tag">Sales</div></td>
<td><div class="desig-text">Regional Sales Head</div></td>
<td style="color:#64748b;font-size:13px">Aug 14, 2020</td>
<td><span style="font-size:12px;color:#475569">Full-Time</span></td>
<td><span class="badge badge-active">Active</span></td>
<td><div class="action-btns"><a class="btn-action btn-view" href="#">View</a><a class="btn-action btn-edit" href="#">Edit</a></div></td>
</tr>
<tr>
<td>
<div class="emp-cell">
<div class="emp-avatar" style="background:#dc2626">MI</div>
<div><div class="emp-name">Meena Iyer</div><div class="emp-code">EMP-0033</div></div>
</div>
</td>
<td><div class="dept-tag">Finance</div></td>
<td><div class="desig-text">Finance Analyst</div></td>
<td style="color:#64748b;font-size:13px">Sep 20, 2022</td>
<td><span style="font-size:12px;color:#475569">Full-Time</span></td>
<td><span class="badge badge-active">Active</span></td>
<td><div class="action-btns"><a class="btn-action btn-view" href="#">View</a><a class="btn-action btn-edit" href="#">Edit</a></div></td>
</tr>
<tr>
<td>
<div class="emp-cell">
<div class="emp-avatar" style="background:#475569">DN</div>
<div><div class="emp-name">Deepak Nair</div><div class="emp-code">EMP-0019</div></div>
</div>
</td>
<td><div class="dept-tag">Engineering</div></td>
<td><div class="desig-text">DevOps Engineer</div></td>
<td style="color:#64748b;font-size:13px">Nov 3, 2021</td>
<td><span style="font-size:12px;color:#475569">Full-Time</span></td>
<td><span class="badge badge-inactive">Inactive</span></td>
<td><div class="action-btns"><a class="btn-action btn-view" href="#">View</a><a class="btn-action btn-edit" href="#">Edit</a></div></td>
</tr>
<tr>
<td>
<div class="emp-cell">
<div class="emp-avatar" style="background:#0e7490">NK</div>
<div><div class="emp-name">Neha Kapoor</div><div class="emp-code">EMP-0067</div></div>
</div>
</td>
<td><div class="dept-tag">Marketing</div></td>
<td><div class="desig-text">Marketing Manager</div></td>
<td style="color:#64748b;font-size:13px">Feb 14, 2023</td>
<td><span style="font-size:12px;color:#475569">Full-Time</span></td>
<td><span class="badge badge-active">Active</span></td>
<td><div class="action-btns"><a class="btn-action btn-view" href="#">View</a><a class="btn-action btn-edit" href="#">Edit</a></div></td>
</tr>
<tr>
<td>
<div class="emp-cell">
<div class="emp-avatar" style="background:#7c3aed">SG</div>
<div><div class="emp-name">Suresh Gupta</div><div class="emp-code">EMP-0008</div></div>
</div>
</td>
<td><div class="dept-tag">Engineering</div></td>
<td><div class="desig-text">Engineering Manager</div></td>
<td style="color:#64748b;font-size:13px">Apr 10, 2019</td>
<td><span style="font-size:12px;color:#475569">Full-Time</span></td>
<td><span class="badge badge-active">Active</span></td>
<td><div class="action-btns"><a class="btn-action btn-view" href="#">View</a><a class="btn-action btn-edit" href="#">Edit</a></div></td>
</tr>
<tr>
<td>
<div class="emp-cell">
<div class="emp-avatar" style="background:#b45309">TR</div>
<div><div class="emp-name">Tanvi Rao</div><div class="emp-code">EMP-0081</div></div>
</div>
</td>
<td><div class="dept-tag">Design</div></td>
<td><div class="desig-text">UI/UX Designer</div></td>
<td style="color:#64748b;font-size:13px">Jan 17, 2025</td>
<td><span style="font-size:12px;color:#475569">Contract</span></td>
<td><span class="badge badge-probation">Probation</span></td>
<td><div class="action-btns"><a class="btn-action btn-view" href="#">View</a><a class="btn-action btn-edit" href="#">Edit</a></div></td>
</tr>
<tr>
<td>
<div class="emp-cell">
<div class="emp-avatar" style="background:#166534">AM</div>
<div><div class="emp-name">Arjun Mehta</div><div class="emp-code">EMP-0092</div></div>
</div>
</td>
<td><div class="dept-tag">Sales</div></td>
<td><div class="desig-text">Sales Executive</div></td>
<td style="color:#64748b;font-size:13px">Apr 22, 2026</td>
<td><span style="font-size:12px;color:#475569">Full-Time</span></td>
<td><span class="badge badge-probation">Probation</span></td>
<td><div class="action-btns"><a class="btn-action btn-view" href="#">View</a><a class="btn-action btn-edit" href="#">Edit</a></div></td>
</tr>
</tbody>
</table>
<div class="pagination">
<div class="page-info">Showing 110 of 247 employees</div>
<div class="page-btns">
<div class="page-btn disabled">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="15 18 9 12 15 6"/></svg>
</div>
<div class="page-btn active">1</div>
<div class="page-btn">2</div>
<div class="page-btn">3</div>
<div style="padding:0 4px;color:#94a3b8;font-size:13px">...</div>
<div class="page-btn">25</div>
<div class="page-btn">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 18 15 12 9 6"/></svg>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function toggleSidebar() {
document.querySelector('.sidebar').classList.toggle('open');
document.getElementById('sidebarOverlay').classList.toggle('open');
}
function closeSidebar() {
document.querySelector('.sidebar').classList.remove('open');
document.getElementById('sidebarOverlay').classList.remove('open');
}
// Close sidebar on nav item click (mobile UX)
document.querySelectorAll('.nav-item').forEach(function(item) {
item.addEventListener('click', function() {
if (window.innerWidth <= 768) closeSidebar();
});
});
</script>
</body>
</html>