<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Server Deployments Table</title>
<style>
:root {
color-scheme: light;
--page: #eef1f4;
--surface: #ffffff;
--line: #e2e7ec;
--line-strong: #d5dce3;
--text: #1f2933;
--muted: #6b7785;
--subtle: #8a96a3;
--selected: #f0f6ff;
--hovered: #f8fafc;
--blue: #2e6fd0;
--green: #23845b;
--amber: #a56608;
--red: #bd3d3d;
--gray: #687581;
}
* {
box-sizing: border-box;
}
body {
margin: 0;
min-width: 960px;
min-height: 100vh;
display: flex;
align-items: flex-start;
justify-content: center;
padding: 88px 48px;
background: var(--page);
color: var(--text);
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
font-size: 13px;
line-height: 1.4;
}
.table-card {
width: 1080px;
background: var(--surface);
border: 1px solid var(--line-strong);
border-radius: 9px;
box-shadow: 0 8px 22px rgba(30, 42, 55, 0.06);
overflow: hidden;
}
.table-heading {
height: 70px;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 22px;
border-bottom: 1px solid var(--line);
}
.heading-title {
margin: 0;
font-size: 15px;
font-weight: 650;
letter-spacing: -0.01em;
}
.heading-meta {
margin-top: 3px;
color: var(--muted);
font-size: 12px;
}
.heading-count {
color: var(--muted);
font-size: 12px;
font-variant-numeric: tabular-nums;
}
table {
width: 100%;
border-collapse: collapse;
table-layout: fixed;
}
col.status { width: 17%; }
col.service { width: 22%; }
col.region { width: 15%; }
col.deployed { width: 17%; }
col.duration { width: 13%; }
col.timestamp { width: 16%; }
thead {
background: #fafbfc;
}
th {
height: 43px;
padding: 0 20px;
color: var(--muted);
border-bottom: 1px solid var(--line);
text-align: left;
font-size: 11px;
font-weight: 650;
letter-spacing: 0.045em;
text-transform: uppercase;
white-space: nowrap;
}
th:last-child,
td:last-child {
padding-right: 24px;
}
.sort-button {
display: inline-flex;
align-items: center;
gap: 7px;
padding: 0;
border: 0;
background: transparent;
color: inherit;
font: inherit;
letter-spacing: inherit;
text-transform: inherit;
cursor: pointer;
}
.sort-button[aria-sort="ascending"] {
color: var(--text);
}
.sort-arrow {
display: inline-flex;
align-items: center;
justify-content: center;
width: 15px;
height: 15px;
border: 1px solid #cbd4dd;
border-radius: 3px;
color: var(--blue);
font-size: 11px;
line-height: 1;
background: #fff;
}
tbody tr {
height: 60px;
border-bottom: 1px solid var(--line);
transition: background 120ms ease;
}
tbody tr:last-child {
border-bottom: 0;
}
tbody tr.is-selected {
background: var(--selected);
}
tbody tr.is-hovered {
background: var(--hovered);
}
tbody tr.is-selected td:first-child {
box-shadow: inset 3px 0 0 var(--blue);
}
tbody tr.is-hovered td:first-child {
box-shadow: inset 3px 0 0 #aeb9c5;
}
td {
padding: 0 20px;
color: var(--text);
vertical-align: middle;
white-space: nowrap;
}
.service-name {
font-weight: 600;
letter-spacing: -0.01em;
}
.service-id {
margin-top: 2px;
color: var(--subtle);
font-size: 11px;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.status-badge {
display: inline-flex;
align-items: center;
gap: 8px;
min-width: 92px;
color: var(--text);
font-size: 12px;
font-weight: 560;
}
.status-dot {
width: 8px;
height: 8px;
flex: 0 0 8px;
border-radius: 50%;
border: 2px solid currentColor;
background: transparent;
}
.status-badge.success { color: var(--green); }
.status-badge.success .status-dot { background: currentColor; }
.status-badge.progress { color: var(--blue); }
.status-badge.progress .status-dot {
border-radius: 2px;
background: currentColor;
}
.status-badge.warning { color: var(--amber); }
.status-badge.warning .status-dot { background: currentColor; }
.status-badge.failed { color: var(--red); }
.status-badge.failed .status-dot {
border-radius: 2px;
background: linear-gradient(135deg, transparent 38%, currentColor 39%, currentColor 61%, transparent 62%);
}
.status-badge.neutral { color: var(--gray); }
.status-badge.neutral .status-dot {
border-style: dashed;
}
.region,
.duration,
.timestamp {
color: #4f5d6b;
font-variant-numeric: tabular-nums;
}
.region {
display: flex;
align-items: center;
gap: 8px;
}
.region-code {
color: var(--muted);
font-size: 11px;
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.deployer {
display: flex;
align-items: center;
gap: 9px;
}
.avatar {
width: 25px;
height: 25px;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 50%;
background: #e7edf3;
color: #516170;
font-size: 10px;
font-weight: 700;
letter-spacing: .02em;
}
.avatar.blue { background: #dfeafb; color: #3767a7; }
.avatar.green { background: #e1f0e9; color: #357456; }
.avatar.gold { background: #f5ecd9; color: #86651f; }
.avatar.purple { background: #ece7f5; color: #68568c; }
.duration {
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
font-size: 12px;
}
.timestamp {
font-size: 12px;
}
.table-footer {
height: 42px;
display: flex;
align-items: center;
padding: 0 22px;
border-top: 1px solid var(--line);
color: var(--muted);
font-size: 11px;
}
.legend {
display: inline-flex;
align-items: center;
gap: 6px;
}
.legend::before {
content: "";
width: 7px;
height: 7px;
border-radius: 2px;
background: var(--blue);
}
</style>
</head>
<body>
<section class="table-card" aria-labelledby="deployments-title">
<header class="table-heading">
<div>
<h1 class="heading-title" id="deployments-title">Server deployments</h1>
<div class="heading-meta">Production deployment activity</div>
</div>
<div class="heading-count">8 records</div>
</header>
<table aria-label="Server deployment records">
<colgroup>
<col class="status">
<col class="service">
<col class="region">
<col class="deployed">
<col class="duration">
<col class="timestamp">
</colgroup>
<thead>
<tr>
<th scope="col">Status</th>
<th scope="col">Service name</th>
<th scope="col">Region</th>
<th scope="col">Deployed by</th>
<th scope="col">Duration</th>
<th scope="col" aria-sort="ascending">
<button class="sort-button" type="button" aria-label="Timestamp, sorted ascending" aria-sort="ascending">
Timestamp <span class="sort-arrow" aria-hidden="true">↑</span>
</button>
</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="status-badge success"><span class="status-dot"></span>Deployed</span></td>
<td><div class="service-name">payments-api</div><div class="service-id">svc_8f2a1c</div></td>
<td><div class="region">US East <span class="region-code">us-east-1</span></div></td>
<td><div class="deployer"><span class="avatar blue">MC</span> Maya Chen</div></td>
<td class="duration">4m 18s</td>
<td class="timestamp">Today, 10:42:18</td>
</tr>
<tr class="is-selected" aria-selected="true">
<td><span class="status-badge progress"><span class="status-dot"></span>In progress</span></td>
<td><div class="service-name">catalog-worker</div><div class="service-id">svc_31bc77</div></td>
<td><div class="region">EU West <span class="region-code">eu-west-1</span></div></td>
<td><div class="deployer"><span class="avatar green">JR</span> Jonah Reed</div></td>
<td class="duration">2m 51s</td>
<td class="timestamp">Today, 10:39:04</td>
</tr>
<tr>
<td><span class="status-badge success"><span class="status-dot"></span>Deployed</span></td>
<td><div class="service-name">identity-gateway</div><div class="service-id">svc_5d09e4</div></td>
<td><div class="region">Asia Pacific <span class="region-code">ap-southeast-1</span></div></td>
<td><div class="deployer"><span class="avatar purple">AN</span> Aiko Nakamura</div></td>
<td class="duration">5m 07s</td>
<td class="timestamp">Today, 10:31:46</td>
</tr>
<tr class="is-hovered">
<td><span class="status-badge failed"><span class="status-dot"></span>Failed</span></td>
<td><div class="service-name">notifications</div><div class="service-id">svc_0a7c2e</div></td>
<td><div class="region">US West <span class="region-code">us-west-2</span></div></td>
<td><div class="deployer"><span class="avatar gold">DP</span> Dev Patel</div></td>
<td class="duration">1m 26s</td>
<td class="timestamp">Today, 10:24:11</td>
</tr>
<tr>
<td><span class="status-badge success"><span class="status-dot"></span>Deployed</span></td>
<td><div class="service-name">search-indexer</div><div class="service-id">svc_6e12bd</div></td>
<td><div class="region">EU Central <span class="region-code">eu-central-1</span></div></td>
<td><div class="deployer"><span class="avatar blue">MC</span> Maya Chen</div></td>
<td class="duration">8m 42s</td>
<td class="timestamp">Today, 10:16:53</td>
</tr>
<tr>
<td><span class="status-badge neutral"><span class="status-dot"></span>Queued</span></td>
<td><div class="service-name">reporting-service</div><div class="service-id">svc_93aa40</div></td>
<td><div class="region">US East <span class="region-code">us-east-1</span></div></td>
<td><div class="deployer"><span class="avatar green">JR</span> Jonah Reed</div></td>
<td class="duration">—</td>
<td class="timestamp">Today, 10:08:29</td>
</tr>
<tr>
<td><span class="status-badge warning"><span class="status-dot"></span>Rolled back</span></td>
<td><div class="service-name">media-transcoder</div><div class="service-id">svc_47d8f1</div></td>
<td><div class="region">Asia Pacific <span class="region-code">ap-northeast-1</span></div></td>
<td><div class="deployer"><span class="avatar purple">AN</span> Aiko Nakamura</div></td>
<td class="duration">3m 33s</td>
<td class="timestamp">Today, 09:57:06</td>
</tr>
<tr>
<td><span class="status-badge success"><span class="status-dot"></span>Deployed</span></td>
<td><div class="service-name">billing-webhooks</div><div class="service-id">svc_b2c118</div></td>
<td><div class="region">US West <span class="region-code">us-west-2</span></div></td>
<td><div class="deployer"><span class="avatar gold">DP</span> Dev Patel</div></td>
<td class="duration">2m 09s</td>
<td class="timestamp">Today, 09:48:37</td>
</tr>
</tbody>
</table>
<footer class="table-footer">
<span class="legend">Selected deployment</span>
</footer>
</section>
</body>
</html>