Files
2026-05-04 15:56:20 +00:00

311 lines
19 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>HR Portal — Reimbursements</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;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; color: #0F172A; display: flex; min-height: 100vh; }
.sidebar { width: 240px; min-height: 100vh; background: #1E293B; display: flex; flex-direction: column; flex-shrink: 0; position: fixed; top: 0; left: 0; bottom: 0; }
.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: #4F46E5; border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.sidebar-logo-text { font-size: 15px; font-weight: 700; color: #fff; }
.sidebar-logo-sub { font-size: 11px; color: #94A3B8; margin-top: 1px; }
.sidebar-nav { padding: 16px 0; flex: 1; }
.nav-section-label { font-size: 10px; font-weight: 600; color: #475569; text-transform: uppercase; letter-spacing: 0.8px; padding: 12px 20px 6px; }
.nav-item { display: flex; align-items: center; gap: 10px; padding: 10px 20px; font-size: 14px; font-weight: 500; color: #94A3B8; cursor: pointer; border-left: 3px solid transparent; text-decoration: none; }
.nav-item:hover { color: #fff; background: rgba(255,255,255,0.05); }
.nav-item.active { color: #818CF8; background: rgba(79,70,229,0.15); border-left-color: #4F46E5; font-weight: 600; }
.nav-item svg { width: 18px; height: 18px; flex-shrink: 0; }
.sidebar-footer { padding: 16px 20px; border-top: 1px solid rgba(255,255,255,0.08); }
.sidebar-user { display: flex; align-items: center; gap: 10px; }
.avatar-sm { width: 34px; height: 34px; border-radius: 50%; background: #4F46E5; 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: #E2E8F0; }
.sidebar-user-role { font-size: 11px; color: #64748B; }
.main { margin-left: 240px; flex: 1; display: flex; flex-direction: column; }
.topbar { height: 64px; background: #fff; border-bottom: 1px solid #E2E8F0; display: flex; align-items: center; justify-content: space-between; padding: 0 28px; position: sticky; top: 0; z-index: 10; }
.topbar-title { font-size: 16px; font-weight: 600; color: #0F172A; }
.topbar-right { display: flex; align-items: center; gap: 16px; }
.icon-btn { width: 38px; height: 38px; border-radius: 8px; background: #F1F5F9; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; position: relative; }
.icon-btn svg { width: 18px; height: 18px; color: #64748B; }
.notif-dot { position: absolute; top: 8px; right: 8px; width: 8px; height: 8px; background: #EF4444; border-radius: 50%; border: 2px solid #fff; }
.topbar-user { display: flex; align-items: center; gap: 10px; }
.avatar { width: 38px; height: 38px; border-radius: 50%; background: #4F46E5; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 700; color: #fff; flex-shrink: 0; }
.topbar-user-name { font-size: 14px; font-weight: 600; color: #0F172A; }
.topbar-user-id { font-size: 12px; color: #64748B; }
.content { padding: 28px; flex: 1; }
.page-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px; }
.page-title { font-size: 20px; font-weight: 700; color: #0F172A; }
.page-subtitle { font-size: 13px; color: #64748B; margin-top: 3px; }
.btn-primary { background: #4F46E5; color: #fff; border: none; border-radius: 8px; padding: 10px 18px; font-size: 13px; font-weight: 600; cursor: pointer; font-family: 'Inter', sans-serif; display: flex; align-items: center; gap: 8px; }
.btn-primary svg { width: 16px; height: 16px; }
/* STATS ROW */
.stats-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 24px; }
.stat-card { background: #fff; border-radius: 12px; padding: 18px 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.07); border: 1px solid #F1F5F9; }
.stat-label { font-size: 11px; font-weight: 700; color: #64748B; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 8px; }
.stat-value { font-size: 22px; font-weight: 800; color: #0F172A; }
.stat-sub { font-size: 11px; color: #94A3B8; margin-top: 4px; }
/* CLAIM FORM */
.form-card { background: #fff; border-radius: 12px; padding: 24px; box-shadow: 0 1px 3px rgba(0,0,0,0.07); border: 1px solid #F1F5F9; margin-bottom: 24px; }
.form-title { font-size: 14px; font-weight: 700; color: #0F172A; margin-bottom: 18px; display: flex; align-items: center; gap: 8px; }
.form-title svg { width: 18px; height: 18px; color: #4F46E5; }
.form-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 16px; }
.form-group { display: flex; flex-direction: column; gap: 6px; }
.form-group.full { grid-column: 1 / -1; }
.form-group.two-cols { grid-column: span 2; }
label { font-size: 12px; font-weight: 600; color: #374151; }
input, select, textarea { padding: 9px 12px; border: 1.5px solid #E2E8F0; border-radius: 8px; font-size: 13px; font-family: 'Inter', sans-serif; color: #0F172A; background: #fff; outline: none; width: 100%; }
input:focus, select:focus, textarea:focus { border-color: #4F46E5; }
textarea { resize: vertical; min-height: 70px; }
.upload-zone { border: 2px dashed #E2E8F0; border-radius: 8px; padding: 20px; text-align: center; cursor: pointer; background: #F8FAFC; }
.upload-zone:hover { border-color: #4F46E5; background: #EEF2FF; }
.upload-zone svg { width: 24px; height: 24px; color: #94A3B8; margin-bottom: 6px; }
.upload-zone p { font-size: 12px; color: #64748B; }
.upload-zone strong { color: #4F46E5; }
.form-actions { display: flex; gap: 10px; justify-content: flex-end; }
.btn-outline { background: #fff; color: #64748B; border: 1.5px solid #E2E8F0; border-radius: 8px; padding: 9px 18px; font-size: 13px; font-weight: 600; cursor: pointer; font-family: 'Inter', sans-serif; }
.btn-submit { background: #4F46E5; color: #fff; border: none; border-radius: 8px; padding: 9px 20px; font-size: 13px; font-weight: 600; cursor: pointer; font-family: 'Inter', sans-serif; }
/* TABLE */
.table-card { background: #fff; border-radius: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.07); border: 1px solid #F1F5F9; overflow: hidden; }
.table-header { padding: 16px 20px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #F1F5F9; }
.table-title { font-size: 14px; font-weight: 700; color: #0F172A; }
table { width: 100%; border-collapse: collapse; }
thead th { background: #F8FAFC; padding: 11px 16px; text-align: left; font-size: 11px; font-weight: 700; color: #64748B; text-transform: uppercase; letter-spacing: 0.5px; border-bottom: 1px solid #E2E8F0; }
tbody td { padding: 13px 16px; font-size: 13px; color: #374151; border-bottom: 1px solid #F1F5F9; vertical-align: middle; }
tbody tr:last-child td { border-bottom: none; }
tbody tr:hover { background: #FAFBFC; }
.badge { display: inline-flex; align-items: center; padding: 3px 9px; border-radius: 999px; font-size: 11px; font-weight: 600; }
.badge-green { background: #ECFDF5; color: #059669; }
.badge-amber { background: #FFFBEB; color: #D97706; }
.badge-red { background: #FEF2F2; color: #DC2626; }
.badge-blue { background: #EFF6FF; color: #2563EB; }
.badge-indigo { background: #EEF2FF; color: #4F46E5; }
.cat-badge { font-size: 12px; font-weight: 600; }
.view-link { font-size: 12px; color: #4F46E5; font-weight: 600; cursor: pointer; text-decoration: none; }
.view-link:hover { text-decoration: underline; }
.amount-col { font-weight: 700; color: #0F172A; }
</style>
</head>
<body>
<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="white" stroke-width="2.5" 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="sidebar-logo-text">TechCorp HR</div>
<div class="sidebar-logo-sub">Employee Portal</div>
</div>
</div>
<nav class="sidebar-nav">
<div class="nav-section-label">Main Menu</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"><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="#"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>My Profile</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"><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>Attendance</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="M9 11l3 3L22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg>Leave</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"><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>Payslips</a>
<a class="nav-item active" href="#"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/></svg>Reimbursements</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="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></svg>Tax &amp; Form 16</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="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>Announcements</a>
</nav>
<div class="sidebar-footer">
<div class="sidebar-user">
<div class="avatar-sm">RS</div>
<div>
<div class="sidebar-user-name">Rahul Sharma</div>
<div class="sidebar-user-role">EMP-00247 · Engineering</div>
</div>
</div>
</div>
</aside>
<div class="main">
<header class="topbar">
<div class="topbar-title">Reimbursements</div>
<div class="topbar-right">
<button 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><span class="notif-dot"></span></button>
<div class="topbar-user">
<div><div class="topbar-user-name">Rahul Sharma</div><div class="topbar-user-id">EMP-00247</div></div>
<div class="avatar">RS</div>
</div>
</div>
</header>
<div class="content">
<div class="page-header">
<div>
<div class="page-title">My Reimbursements</div>
<div class="page-subtitle">Submit expense claims and track approval status</div>
</div>
<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>
Submit Claim
</button>
</div>
<!-- STATS ROW -->
<div class="stats-row">
<div class="stat-card">
<div class="stat-label">Total Claimed (FY)</div>
<div class="stat-value">₹24,500</div>
<div class="stat-sub">Across all categories</div>
</div>
<div class="stat-card">
<div class="stat-label">Approved</div>
<div class="stat-value" style="color:#10B981;">₹18,000</div>
<div class="stat-sub">8 claims approved</div>
</div>
<div class="stat-card">
<div class="stat-label">Pending</div>
<div class="stat-value" style="color:#F59E0B;">₹4,500</div>
<div class="stat-sub">2 claims awaiting</div>
</div>
<div class="stat-card">
<div class="stat-label">Rejected</div>
<div class="stat-value" style="color:#EF4444;">₹2,000</div>
<div class="stat-sub">1 claim rejected</div>
</div>
</div>
<!-- SUBMIT FORM -->
<div class="form-card">
<div class="form-title">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/></svg>
Submit New Claim
</div>
<div class="form-grid">
<div class="form-group">
<label>Category</label>
<select>
<option>Travel</option>
<option>Food &amp; Meals</option>
<option>Medical</option>
<option>Internet / WFH</option>
<option>Stationery</option>
<option>Other</option>
</select>
</div>
<div class="form-group">
<label>Expense Date</label>
<input type="date" value="2026-05-03" />
</div>
<div class="form-group">
<label>Amount (₹)</label>
<input type="number" placeholder="0.00" value="3200" />
</div>
<div class="form-group two-cols">
<label>Description</label>
<input type="text" placeholder="Brief description of the expense..." value="Cab fare to client office — Bandra to Nariman Point (return trip)" />
</div>
<div class="form-group">
<label>Receipt / Bill</label>
<div class="upload-zone">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>
<p><strong>Click to upload</strong> or drag &amp; drop<br/>JPG, PNG, PDF up to 5 MB</p>
</div>
</div>
<div class="form-group full" style="display:flex;gap:10px;justify-content:flex-end;align-items:flex-end;">
<button class="btn-outline">Cancel</button>
<button class="btn-submit">Submit Claim</button>
</div>
</div>
</div>
<!-- CLAIMS TABLE -->
<div class="table-card">
<div class="table-header">
<div class="table-title">Claim History</div>
<select style="width:auto;padding:6px 12px;font-size:12px;">
<option>All Categories</option>
<option>Travel</option>
<option>Food</option>
<option>Medical</option>
</select>
</div>
<table>
<thead>
<tr>
<th>Date</th>
<th>Category</th>
<th>Amount</th>
<th>Description</th>
<th>Status</th>
<th>Receipt</th>
</tr>
</thead>
<tbody>
<tr>
<td>May 3, 2026</td>
<td><span class="badge badge-blue">Travel</span></td>
<td class="amount-col">₹3,200</td>
<td>Cab fare — Bandra to Nariman Point (return)</td>
<td><span class="badge badge-amber">Pending</span></td>
<td><a href="#" class="view-link">View</a></td>
</tr>
<tr>
<td>Apr 28, 2026</td>
<td><span class="badge badge-green">Medical</span></td>
<td class="amount-col">₹1,800</td>
<td>Pharmacy bill — cold &amp; flu medication</td>
<td><span class="badge badge-amber">Pending</span></td>
<td><a href="#" class="view-link">View</a></td>
</tr>
<tr>
<td>Apr 15, 2026</td>
<td><span class="badge badge-blue">Travel</span></td>
<td class="amount-col">₹5,400</td>
<td>Train tickets — Mumbai to Pune (client visit, 2 persons)</td>
<td><span class="badge badge-green">Approved</span></td>
<td><a href="#" class="view-link">View</a></td>
</tr>
<tr>
<td>Apr 10, 2026</td>
<td><span class="badge" style="background:#FFF7ED;color:#C2410C;">Food</span></td>
<td class="amount-col">₹2,400</td>
<td>Team lunch — sprint retrospective (8 members)</td>
<td><span class="badge badge-green">Approved</span></td>
<td><a href="#" class="view-link">View</a></td>
</tr>
<tr>
<td>Mar 22, 2026</td>
<td><span class="badge badge-blue">Travel</span></td>
<td class="amount-col">₹8,200</td>
<td>Flight — Mumbai to Bangalore (quarterly review)</td>
<td><span class="badge badge-green">Approved</span></td>
<td><a href="#" class="view-link">View</a></td>
</tr>
<tr>
<td>Mar 5, 2026</td>
<td><span class="badge" style="background:#F5F3FF;color:#7C3AED;">Internet</span></td>
<td class="amount-col">₹2,000</td>
<td>Home broadband upgrade for WFH — March</td>
<td><span class="badge badge-red">Rejected</span></td>
<td><a href="#" class="view-link">View</a></td>
</tr>
<tr>
<td>Feb 18, 2026</td>
<td><span class="badge" style="background:#FFF7ED;color:#C2410C;">Food</span></td>
<td class="amount-col">₹1,800</td>
<td>Client dinner — product demo at Taj</td>
<td><span class="badge badge-green">Approved</span></td>
<td><a href="#" class="view-link">View</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>