.cluster-dashboard { max-width: 1200px; margin: 0 auto; padding: 2rem 1.5rem; } .cluster-header { display: flex; align-items: center; gap: 1rem; margin-bottom: 1.5rem; } .cluster-header h1 { margin: 0; font-size: 1.5rem; color: var(--text-primary, #111); } .cluster-status { font-size: 0.85rem; color: var(--text-secondary, #666); background: var(--bg-secondary, #f3f4f6); padding: 0.25rem 0.75rem; border-radius: 999px; } .cluster-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1rem; } .cluster-card { background: var(--bg-primary, #fff); border: 1px solid var(--border, #e5e7eb); border-radius: 8px; padding: 1.25rem; } .card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem; } .node-id { font-weight: 600; font-size: 0.9rem; font-family: var(--font-mono, monospace); color: var(--text-primary, #111); } .heartbeat-badge { font-size: 0.75rem; color: var(--text-secondary, #666); background: var(--bg-secondary, #f3f4f6); padding: 0.15rem 0.5rem; border-radius: 4px; } .node-endpoint { font-size: 0.8rem; color: var(--text-secondary, #666); margin-bottom: 0.75rem; font-family: var(--font-mono, monospace); } .card-stats { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0.5rem; } .stat { display: flex; flex-direction: column; gap: 0.15rem; } .stat-label { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.03em; color: var(--text-secondary, #999); } .stat-value { font-size: 0.9rem; font-weight: 500; font-family: var(--font-mono, monospace); color: var(--text-primary, #111); } .cluster-empty { color: var(--text-secondary, #666); text-align: center; padding: 3rem 1rem; }