Files
blackroad-io-site/cards.html
Claude a28e41c1a0 Add cards component library for BlackRoad OS design system
Includes metric cards, agent cards, project cards, feature cards,
notification cards, and pricing cards with responsive grid layouts.
2026-01-25 02:37:40 +00:00

1331 lines
46 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cards — BlackRoad OS</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet">
<style>
:root {
--gray-0: #000000;
--gray-1: #09090b;
--gray-2: #0f0f12;
--gray-3: #18181d;
--gray-4: #222229;
--gray-5: #2d2d36;
--gray-6: #3c3c47;
--gray-7: #505062;
--gray-8: #6b6b7d;
--gray-9: #8b8b9e;
--gray-10: #ababba;
--gray-11: #d1d1db;
--gray-12: #ffffff;
--font-display: 'Space Grotesk', sans-serif;
--font-body: 'Inter', sans-serif;
--font-mono: 'JetBrains Mono', monospace;
--radius-sm: 6px;
--radius-md: 10px;
--radius-lg: 14px;
--radius-xl: 18px;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: var(--font-body);
background: var(--gray-1);
color: var(--gray-10);
font-size: 14px;
line-height: 1.6;
-webkit-font-smoothing: antialiased;
padding: 48px 24px;
}
.container {
max-width: 1200px;
margin: 0 auto;
}
/* Section */
.section {
margin-bottom: 64px;
}
.section-header {
margin-bottom: 24px;
}
.section-title {
font-family: var(--font-display);
font-size: 20px;
font-weight: 700;
color: var(--gray-12);
letter-spacing: -0.3px;
margin-bottom: 4px;
}
.section-desc {
font-size: 14px;
color: var(--gray-7);
}
/* Grid Layouts */
.grid-4 {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
}
.grid-3 {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
.grid-2 {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
}
@media (max-width: 1024px) {
.grid-4 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
.grid-4, .grid-3, .grid-2 { grid-template-columns: 1fr; }
}
/* ==================== */
/* METRIC CARDS */
/* ==================== */
.metric-card {
background: var(--gray-2);
border: 1px solid var(--gray-3);
border-radius: var(--radius-lg);
padding: 20px;
transition: all 0.15s;
}
.metric-card:hover {
border-color: var(--gray-4);
background: var(--gray-3);
}
.metric-label {
font-size: 12px;
font-weight: 500;
color: var(--gray-7);
margin-bottom: 8px;
display: flex;
align-items: center;
gap: 6px;
}
.metric-label svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
.metric-value {
font-family: var(--font-mono);
font-size: 28px;
font-weight: 600;
color: var(--gray-12);
letter-spacing: -1px;
margin-bottom: 8px;
}
.metric-change {
display: inline-flex;
align-items: center;
gap: 4px;
font-family: var(--font-mono);
font-size: 12px;
padding: 3px 8px;
border-radius: 4px;
background: var(--gray-4);
color: var(--gray-9);
}
.metric-change.up {
color: var(--gray-10);
}
.metric-change svg {
width: 12px;
height: 12px;
stroke: currentColor;
}
.metric-sparkline {
height: 32px;
margin-top: 16px;
display: flex;
align-items: flex-end;
gap: 3px;
}
.spark-bar {
flex: 1;
background: var(--gray-5);
border-radius: 2px;
transition: background 0.15s;
}
.metric-card:hover .spark-bar {
background: var(--gray-6);
}
.spark-bar:last-child {
background: var(--gray-8);
}
/* ==================== */
/* AGENT CARDS */
/* ==================== */
.agent-card {
background: var(--gray-2);
border: 1px solid var(--gray-3);
border-radius: var(--radius-xl);
padding: 24px;
transition: all 0.2s;
position: relative;
overflow: hidden;
}
.agent-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: linear-gradient(90deg, var(--gray-5) 0%, var(--gray-7) 50%, var(--gray-5) 100%);
opacity: 0;
transition: opacity 0.2s;
}
.agent-card:hover {
border-color: var(--gray-5);
transform: translateY(-2px);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}
.agent-card:hover::before {
opacity: 1;
}
.agent-header {
display: flex;
align-items: flex-start;
gap: 16px;
margin-bottom: 16px;
}
.agent-avatar {
width: 48px;
height: 48px;
background: linear-gradient(135deg, var(--gray-5) 0%, var(--gray-4) 100%);
border-radius: 14px;
display: flex;
align-items: center;
justify-content: center;
font-family: var(--font-mono);
font-size: 14px;
font-weight: 600;
color: var(--gray-8);
flex-shrink: 0;
}
.agent-info {
flex: 1;
min-width: 0;
}
.agent-name {
font-family: var(--font-display);
font-size: 16px;
font-weight: 600;
color: var(--gray-12);
margin-bottom: 2px;
}
.agent-id {
font-family: var(--font-mono);
font-size: 11px;
color: var(--gray-6);
}
.agent-status-dot {
width: 10px;
height: 10px;
border-radius: 50%;
background: var(--gray-6);
flex-shrink: 0;
margin-top: 4px;
}
.agent-status-dot.online {
background: var(--gray-9);
box-shadow: 0 0 10px var(--gray-8);
}
.agent-status-dot.busy {
background: var(--gray-7);
animation: pulse 2s infinite;
}
@keyframes pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
.agent-stats {
display: flex;
gap: 20px;
margin-bottom: 16px;
}
.agent-stat {
display: flex;
flex-direction: column;
}
.agent-stat-value {
font-family: var(--font-mono);
font-size: 16px;
font-weight: 600;
color: var(--gray-11);
}
.agent-stat-label {
font-size: 11px;
color: var(--gray-7);
}
.agent-capabilities {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.cap-badge {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 500;
padding: 4px 10px;
background: var(--gray-4);
color: var(--gray-9);
border-radius: 4px;
}
.agent-actions {
display: flex;
gap: 8px;
margin-top: 16px;
padding-top: 16px;
border-top: 1px solid var(--gray-4);
}
.agent-btn {
flex: 1;
padding: 8px 12px;
background: var(--gray-4);
border: none;
border-radius: var(--radius-sm);
font-family: var(--font-body);
font-size: 12px;
font-weight: 500;
color: var(--gray-9);
cursor: pointer;
transition: all 0.15s;
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
}
.agent-btn:hover {
background: var(--gray-5);
color: var(--gray-11);
}
.agent-btn svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
/* ==================== */
/* PROJECT CARDS */
/* ==================== */
.project-card {
background: var(--gray-2);
border: 1px solid var(--gray-3);
border-radius: var(--radius-xl);
overflow: hidden;
transition: all 0.2s;
}
.project-card:hover {
border-color: var(--gray-5);
transform: translateY(-2px);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}
.project-cover {
height: 120px;
background: linear-gradient(135deg, var(--gray-4) 0%, var(--gray-3) 100%);
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.project-cover-icon {
width: 48px;
height: 48px;
background: var(--gray-5);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
}
.project-cover-icon svg {
width: 24px;
height: 24px;
stroke: var(--gray-8);
}
.project-body {
padding: 20px;
}
.project-title {
font-family: var(--font-display);
font-size: 17px;
font-weight: 600;
color: var(--gray-12);
margin-bottom: 6px;
}
.project-desc {
font-size: 13px;
color: var(--gray-8);
line-height: 1.5;
margin-bottom: 16px;
}
.project-meta {
display: flex;
align-items: center;
gap: 16px;
font-size: 12px;
color: var(--gray-7);
}
.project-meta-item {
display: flex;
align-items: center;
gap: 5px;
}
.project-meta-item svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
.project-progress {
margin-top: 16px;
}
.progress-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.progress-label {
font-size: 11px;
color: var(--gray-7);
}
.progress-value {
font-family: var(--font-mono);
font-size: 11px;
color: var(--gray-9);
}
.progress-bar {
height: 4px;
background: var(--gray-4);
border-radius: 2px;
overflow: hidden;
}
.progress-fill {
height: 100%;
background: linear-gradient(90deg, var(--gray-7) 0%, var(--gray-9) 100%);
border-radius: 2px;
}
/* ==================== */
/* FEATURE CARDS */
/* ==================== */
.feature-card {
background: var(--gray-2);
border: 1px solid var(--gray-3);
border-radius: var(--radius-xl);
padding: 28px;
transition: all 0.2s;
}
.feature-card:hover {
border-color: var(--gray-5);
background: var(--gray-3);
}
.feature-icon {
width: 44px;
height: 44px;
background: var(--gray-4);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 20px;
}
.feature-icon svg {
width: 22px;
height: 22px;
stroke: var(--gray-9);
}
.feature-title {
font-family: var(--font-display);
font-size: 17px;
font-weight: 600;
color: var(--gray-12);
margin-bottom: 8px;
}
.feature-desc {
font-size: 14px;
color: var(--gray-8);
line-height: 1.6;
}
.feature-link {
display: inline-flex;
align-items: center;
gap: 6px;
margin-top: 16px;
font-size: 13px;
font-weight: 500;
color: var(--gray-9);
text-decoration: none;
transition: color 0.15s;
}
.feature-link:hover {
color: var(--gray-11);
}
.feature-link svg {
width: 14px;
height: 14px;
stroke: currentColor;
}
/* ==================== */
/* NOTIFICATION CARDS */
/* ==================== */
.notif-card {
background: var(--gray-2);
border: 1px solid var(--gray-3);
border-radius: var(--radius-lg);
padding: 16px 20px;
display: flex;
align-items: flex-start;
gap: 14px;
transition: all 0.15s;
}
.notif-card:hover {
background: var(--gray-3);
border-color: var(--gray-4);
}
.notif-card.unread {
border-left: 3px solid var(--gray-8);
}
.notif-icon {
width: 36px;
height: 36px;
background: var(--gray-4);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.notif-icon svg {
width: 18px;
height: 18px;
stroke: var(--gray-8);
}
.notif-content {
flex: 1;
min-width: 0;
}
.notif-title {
font-size: 14px;
font-weight: 500;
color: var(--gray-11);
margin-bottom: 2px;
}
.notif-card.unread .notif-title {
color: var(--gray-12);
}
.notif-message {
font-size: 13px;
color: var(--gray-8);
line-height: 1.5;
}
.notif-time {
font-family: var(--font-mono);
font-size: 11px;
color: var(--gray-6);
margin-top: 8px;
}
.notif-actions {
display: flex;
gap: 8px;
flex-shrink: 0;
}
.notif-btn {
width: 32px;
height: 32px;
background: transparent;
border: none;
border-radius: var(--radius-sm);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.15s;
}
.notif-btn svg {
width: 16px;
height: 16px;
stroke: var(--gray-7);
}
.notif-btn:hover {
background: var(--gray-4);
}
.notif-btn:hover svg {
stroke: var(--gray-10);
}
/* ==================== */
/* PRICING CARDS */
/* ==================== */
.pricing-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
align-items: start;
}
@media (max-width: 900px) {
.pricing-grid { grid-template-columns: 1fr; max-width: 400px; margin: 0 auto; }
}
.pricing-card {
background: var(--gray-2);
border: 1px solid var(--gray-3);
border-radius: var(--radius-xl);
padding: 32px;
transition: all 0.2s;
}
.pricing-card:hover {
border-color: var(--gray-5);
}
.pricing-card.featured {
background: var(--gray-3);
border-color: var(--gray-5);
position: relative;
}
.pricing-card.featured::before {
content: 'Popular';
position: absolute;
top: -12px;
left: 50%;
transform: translateX(-50%);
font-family: var(--font-mono);
font-size: 10px;
font-weight: 600;
padding: 4px 12px;
background: var(--gray-12);
color: var(--gray-1);
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.pricing-name {
font-family: var(--font-display);
font-size: 18px;
font-weight: 600;
color: var(--gray-11);
margin-bottom: 4px;
}
.pricing-desc {
font-size: 13px;
color: var(--gray-7);
margin-bottom: 20px;
}
.pricing-amount {
display: flex;
align-items: baseline;
gap: 4px;
margin-bottom: 24px;
}
.pricing-currency {
font-size: 20px;
font-weight: 500;
color: var(--gray-8);
}
.pricing-value {
font-family: var(--font-display);
font-size: 48px;
font-weight: 700;
color: var(--gray-12);
letter-spacing: -2px;
line-height: 1;
}
.pricing-period {
font-size: 14px;
color: var(--gray-7);
}
.pricing-features {
list-style: none;
margin-bottom: 28px;
}
.pricing-features li {
display: flex;
align-items: flex-start;
gap: 10px;
padding: 10px 0;
font-size: 14px;
color: var(--gray-9);
border-bottom: 1px solid var(--gray-4);
}
.pricing-features li:last-child {
border-bottom: none;
}
.pricing-features svg {
width: 16px;
height: 16px;
stroke: var(--gray-8);
flex-shrink: 0;
margin-top: 2px;
}
.pricing-btn {
width: 100%;
padding: 14px 20px;
background: var(--gray-4);
border: none;
border-radius: var(--radius-md);
font-family: var(--font-body);
font-size: 14px;
font-weight: 600;
color: var(--gray-10);
cursor: pointer;
transition: all 0.15s;
}
.pricing-btn:hover {
background: var(--gray-5);
color: var(--gray-12);
}
.pricing-card.featured .pricing-btn {
background: var(--gray-12);
color: var(--gray-1);
}
.pricing-card.featured .pricing-btn:hover {
background: var(--gray-11);
}
/* Stack for notifications */
.notif-stack {
display: flex;
flex-direction: column;
gap: 12px;
}
</style>
</head>
<body>
<div class="container">
<!-- Metric Cards -->
<section class="section">
<div class="section-header">
<h2 class="section-title">Metrics</h2>
<p class="section-desc">KPI cards with sparklines and change indicators</p>
</div>
<div class="grid-4">
<div class="metric-card">
<div class="metric-label">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0z"/></svg>
Active Agents
</div>
<div class="metric-value">1,247</div>
<span class="metric-change up">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 15l7-7 7 7"/></svg>
+12.5%
</span>
<div class="metric-sparkline">
<div class="spark-bar" style="height: 45%;"></div>
<div class="spark-bar" style="height: 60%;"></div>
<div class="spark-bar" style="height: 40%;"></div>
<div class="spark-bar" style="height: 70%;"></div>
<div class="spark-bar" style="height: 55%;"></div>
<div class="spark-bar" style="height: 80%;"></div>
<div class="spark-bar" style="height: 100%;"></div>
</div>
</div>
<div class="metric-card">
<div class="metric-label">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"/></svg>
Tasks Today
</div>
<div class="metric-value">8,942</div>
<span class="metric-change up">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 15l7-7 7 7"/></svg>
+24.1%
</span>
<div class="metric-sparkline">
<div class="spark-bar" style="height: 30%;"></div>
<div class="spark-bar" style="height: 50%;"></div>
<div class="spark-bar" style="height: 45%;"></div>
<div class="spark-bar" style="height: 65%;"></div>
<div class="spark-bar" style="height: 85%;"></div>
<div class="spark-bar" style="height: 70%;"></div>
<div class="spark-bar" style="height: 95%;"></div>
</div>
</div>
<div class="metric-card">
<div class="metric-label">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13 10V3L4 14h7v7l9-11h-7z"/></svg>
Avg Latency
</div>
<div class="metric-value">2.3ms</div>
<span class="metric-change">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/></svg>
-8.2%
</span>
<div class="metric-sparkline">
<div class="spark-bar" style="height: 80%;"></div>
<div class="spark-bar" style="height: 60%;"></div>
<div class="spark-bar" style="height: 70%;"></div>
<div class="spark-bar" style="height: 50%;"></div>
<div class="spark-bar" style="height: 45%;"></div>
<div class="spark-bar" style="height: 35%;"></div>
<div class="spark-bar" style="height: 30%;"></div>
</div>
</div>
<div class="metric-card">
<div class="metric-label">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
Success Rate
</div>
<div class="metric-value">99.2%</div>
<span class="metric-change up">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 15l7-7 7 7"/></svg>
+0.3%
</span>
<div class="metric-sparkline">
<div class="spark-bar" style="height: 90%;"></div>
<div class="spark-bar" style="height: 92%;"></div>
<div class="spark-bar" style="height: 88%;"></div>
<div class="spark-bar" style="height: 95%;"></div>
<div class="spark-bar" style="height: 93%;"></div>
<div class="spark-bar" style="height: 97%;"></div>
<div class="spark-bar" style="height: 99%;"></div>
</div>
</div>
</div>
</section>
<!-- Agent Cards -->
<section class="section">
<div class="section-header">
<h2 class="section-title">Agents</h2>
<p class="section-desc">Agent profiles with status, stats, and capabilities</p>
</div>
<div class="grid-3">
<div class="agent-card">
<div class="agent-header">
<div class="agent-avatar">L7</div>
<div class="agent-info">
<div class="agent-name">Lucidia-7</div>
<div class="agent-id">agt_7x9k2m4n</div>
</div>
<div class="agent-status-dot online"></div>
</div>
<div class="agent-stats">
<div class="agent-stat">
<span class="agent-stat-value">2,847</span>
<span class="agent-stat-label">Tasks</span>
</div>
<div class="agent-stat">
<span class="agent-stat-value">99.2%</span>
<span class="agent-stat-label">Success</span>
</div>
<div class="agent-stat">
<span class="agent-stat-value">4.2ms</span>
<span class="agent-stat-label">Avg Time</span>
</div>
</div>
<div class="agent-capabilities">
<span class="cap-badge">reasoning</span>
<span class="cap-badge">memory</span>
<span class="cap-badge">trinary</span>
</div>
<div class="agent-actions">
<button class="agent-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"/></svg>
View
</button>
<button class="agent-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/></svg>
Configure
</button>
</div>
</div>
<div class="agent-card">
<div class="agent-header">
<div class="agent-avatar">L9</div>
<div class="agent-info">
<div class="agent-name">Lucidia-9</div>
<div class="agent-id">agt_l9m3n7px</div>
</div>
<div class="agent-status-dot busy"></div>
</div>
<div class="agent-stats">
<div class="agent-stat">
<span class="agent-stat-value">1,423</span>
<span class="agent-stat-label">Tasks</span>
</div>
<div class="agent-stat">
<span class="agent-stat-value">98.7%</span>
<span class="agent-stat-label">Success</span>
</div>
<div class="agent-stat">
<span class="agent-stat-value">5.1ms</span>
<span class="agent-stat-label">Avg Time</span>
</div>
</div>
<div class="agent-capabilities">
<span class="cap-badge">reasoning</span>
<span class="cap-badge">trinary</span>
</div>
<div class="agent-actions">
<button class="agent-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"/></svg>
View
</button>
<button class="agent-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/></svg>
Configure
</button>
</div>
</div>
<div class="agent-card">
<div class="agent-header">
<div class="agent-avatar">AL</div>
<div class="agent-info">
<div class="agent-name">Alice</div>
<div class="agent-id">node_alice_k3s</div>
</div>
<div class="agent-status-dot online"></div>
</div>
<div class="agent-stats">
<div class="agent-stat">
<span class="agent-stat-value"></span>
<span class="agent-stat-label">Tasks</span>
</div>
<div class="agent-stat">
<span class="agent-stat-value">100%</span>
<span class="agent-stat-label">Uptime</span>
</div>
<div class="agent-stat">
<span class="agent-stat-value">0.8ms</span>
<span class="agent-stat-label">Latency</span>
</div>
</div>
<div class="agent-capabilities">
<span class="cap-badge">k3s</span>
<span class="cap-badge">traefik</span>
<span class="cap-badge">redis</span>
</div>
<div class="agent-actions">
<button class="agent-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"/></svg>
View
</button>
<button class="agent-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/></svg>
Configure
</button>
</div>
</div>
</div>
</section>
<!-- Project Cards -->
<section class="section">
<div class="section-header">
<h2 class="section-title">Projects</h2>
<p class="section-desc">Project cards with cover, description, and progress</p>
</div>
<div class="grid-3">
<div class="project-card">
<div class="project-cover">
<div class="project-cover-icon">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/></svg>
</div>
</div>
<div class="project-body">
<h3 class="project-title">Lucidia Core</h3>
<p class="project-desc">Recursive AI system with trinary logic and paraconsistent reasoning capabilities.</p>
<div class="project-meta">
<span class="project-meta-item">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
Updated 2h ago
</span>
<span class="project-meta-item">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0z"/></svg>
12 agents
</span>
</div>
<div class="project-progress">
<div class="progress-header">
<span class="progress-label">Progress</span>
<span class="progress-value">78%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 78%;"></div>
</div>
</div>
</div>
</div>
<div class="project-card">
<div class="project-cover">
<div class="project-cover-icon">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"/></svg>
</div>
</div>
<div class="project-body">
<h3 class="project-title">Prism Console</h3>
<p class="project-desc">Enterprise operations dashboard for agent orchestration and monitoring.</p>
<div class="project-meta">
<span class="project-meta-item">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
Updated 5h ago
</span>
<span class="project-meta-item">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0z"/></svg>
8 agents
</span>
</div>
<div class="project-progress">
<div class="progress-header">
<span class="progress-label">Progress</span>
<span class="progress-value">45%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 45%;"></div>
</div>
</div>
</div>
</div>
<div class="project-card">
<div class="project-cover">
<div class="project-cover-icon">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"/></svg>
</div>
</div>
<div class="project-body">
<h3 class="project-title">RoadChain</h3>
<p class="project-desc">Blockchain infrastructure for immutable agent memory and audit trails.</p>
<div class="project-meta">
<span class="project-meta-item">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
Updated 1d ago
</span>
<span class="project-meta-item">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0z"/></svg>
3 agents
</span>
</div>
<div class="project-progress">
<div class="progress-header">
<span class="progress-label">Progress</span>
<span class="progress-value">22%</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 22%;"></div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Feature Cards -->
<section class="section">
<div class="section-header">
<h2 class="section-title">Features</h2>
<p class="section-desc">Feature highlight cards with icons and descriptions</p>
</div>
<div class="grid-3">
<div class="feature-card">
<div class="feature-icon">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"/></svg>
</div>
<h3 class="feature-title">Trinary Logic</h3>
<p class="feature-desc">Move beyond binary with 1/0/-1 states for nuanced reasoning and uncertainty handling.</p>
<a href="#" class="feature-link">
Learn more
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"/></svg>
</a>
</div>
<div class="feature-card">
<div class="feature-icon">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4"/></svg>
</div>
<h3 class="feature-title">Persistent Memory</h3>
<p class="feature-desc">PS-SHA∞ hashing ensures immutable, verifiable memory across all agent interactions.</p>
<a href="#" class="feature-link">
Learn more
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"/></svg>
</a>
</div>
<div class="feature-card">
<div class="feature-icon">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"/></svg>
</div>
<h3 class="feature-title">Event Bus</h3>
<p class="feature-desc">NATS-powered pub/sub messaging for real-time agent coordination at scale.</p>
<a href="#" class="feature-link">
Learn more
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"/></svg>
</a>
</div>
</div>
</section>
<!-- Notification Cards -->
<section class="section">
<div class="section-header">
<h2 class="section-title">Notifications</h2>
<p class="section-desc">Alert and notification card variants</p>
</div>
<div class="notif-stack" style="max-width: 600px;">
<div class="notif-card unread">
<div class="notif-icon">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
</div>
<div class="notif-content">
<div class="notif-title">Batch inference completed</div>
<div class="notif-message">Lucidia-7 finished processing 2,847 items with 99.2% success rate.</div>
<div class="notif-time">2 minutes ago</div>
</div>
<div class="notif-actions">
<button class="notif-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 13l4 4L19 7"/></svg>
</button>
<button class="notif-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M6 18L18 6M6 6l12 12"/></svg>
</button>
</div>
</div>
<div class="notif-card unread">
<div class="notif-icon">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/></svg>
</div>
<div class="notif-content">
<div class="notif-title">Contradiction detected</div>
<div class="notif-message">Conflicting location data quarantined for review. Human-in-loop required.</div>
<div class="notif-time">15 minutes ago</div>
</div>
<div class="notif-actions">
<button class="notif-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 13l4 4L19 7"/></svg>
</button>
<button class="notif-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M6 18L18 6M6 6l12 12"/></svg>
</button>
</div>
</div>
<div class="notif-card">
<div class="notif-icon">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0z"/></svg>
</div>
<div class="notif-content">
<div class="notif-title">New agent registered</div>
<div class="notif-message">Lucidia-9 has joined the fleet with reasoning and trinary capabilities.</div>
<div class="notif-time">1 hour ago</div>
</div>
<div class="notif-actions">
<button class="notif-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M5 13l4 4L19 7"/></svg>
</button>
<button class="notif-btn">
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M6 18L18 6M6 6l12 12"/></svg>
</button>
</div>
</div>
</div>
</section>
<!-- Pricing Cards -->
<section class="section">
<div class="section-header">
<h2 class="section-title">Pricing</h2>
<p class="section-desc">Tiered pricing cards with feature lists</p>
</div>
<div class="pricing-grid">
<div class="pricing-card">
<div class="pricing-name">Starter</div>
<div class="pricing-desc">For individual developers</div>
<div class="pricing-amount">
<span class="pricing-currency">$</span>
<span class="pricing-value">0</span>
<span class="pricing-period">/month</span>
</div>
<ul class="pricing-features">
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
Up to 10 agents
</li>
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
1GB memory storage
</li>
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
Community support
</li>
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
Basic analytics
</li>
</ul>
<button class="pricing-btn">Get Started</button>
</div>
<div class="pricing-card featured">
<div class="pricing-name">Pro</div>
<div class="pricing-desc">For growing teams</div>
<div class="pricing-amount">
<span class="pricing-currency">$</span>
<span class="pricing-value">49</span>
<span class="pricing-period">/month</span>
</div>
<ul class="pricing-features">
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
Up to 100 agents
</li>
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
50GB memory storage
</li>
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
Priority support
</li>
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
Advanced analytics
</li>
</ul>
<button class="pricing-btn">Start Free Trial</button>
</div>
<div class="pricing-card">
<div class="pricing-name">Enterprise</div>
<div class="pricing-desc">For large organizations</div>
<div class="pricing-amount">
<span class="pricing-currency">$</span>
<span class="pricing-value">299</span>
<span class="pricing-period">/month</span>
</div>
<ul class="pricing-features">
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
Unlimited agents
</li>
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
Unlimited storage
</li>
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
24/7 dedicated support
</li>
<li>
<svg fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/></svg>
Custom integrations
</li>
</ul>
<button class="pricing-btn">Contact Sales</button>
</div>
</div>
</section>
</div>
</body>
</html>