|
70 | 70 | .perf-table .alloc { color: var(--green); } |
71 | 71 |
|
72 | 72 | /* Security card */ |
| 73 | + .security-card { max-width: 720px; } |
| 74 | + .security-card.card:hover { transform: none; border-color: var(--border-card); } |
73 | 75 | .security-row { |
74 | | - display: flex; align-items: center; gap: 12px; |
| 76 | + display: grid; grid-template-columns: 56px 1fr 1fr; gap: 12px; |
75 | 77 | padding: 12px 0; border-bottom: 1px solid var(--border-subtle); |
76 | | - font-size: 14px; |
| 78 | + font-size: 14px; align-items: center; |
77 | 79 | } |
78 | 80 | .security-row:last-child { border-bottom: none; } |
| 81 | + .security-row .desc { color: var(--text-secondary); font-size: 13px; line-height: 1.5; } |
| 82 | + @media (max-width: 640px) { .security-row { grid-template-columns: 56px 1fr; } } |
79 | 83 | .badge { |
80 | 84 | display: inline-flex; align-items: center; |
81 | 85 | font-family: var(--font-mono); font-size: 10px; font-weight: 600; |
@@ -355,42 +359,42 @@ <h2>Zero-allocation distance<br>computation</h2> |
355 | 359 | <h2>Minimal attack surface</h2> |
356 | 360 | <p class="lead">Pure float32 math. No CGo, no syscalls, no I/O, no network. Every edge case returns zero/nil — the library never panics.</p> |
357 | 361 |
|
358 | | - <div class="card" style="max-width: 720px;"> |
| 362 | + <div class="card security-card"> |
359 | 363 | <div class="security-row"> |
360 | 364 | <span class="badge g">SAFE</span> |
361 | 365 | <span style="flex: 1;">Attack surface</span> |
362 | | - <span style="color: var(--text-secondary);">Pure float32 operations — no injection, no deserialization, no file access</span> |
| 366 | + <span class="desc">Pure float32 operations — no injection, no deserialization, no file access</span> |
363 | 367 | </div> |
364 | 368 | <div class="security-row"> |
365 | 369 | <span class="badge g">SAFE</span> |
366 | 370 | <span style="flex: 1;">Panic-free</span> |
367 | | - <span style="color: var(--text-secondary);">All edge cases (mismatched lengths, zero vectors, empty stores) return zero/nil</span> |
| 371 | + <span class="desc">All edge cases (mismatched lengths, zero vectors, empty stores) return zero/nil</span> |
368 | 372 | </div> |
369 | 373 | <div class="security-row"> |
370 | 374 | <span class="badge g">SAFE</span> |
371 | 375 | <span style="flex: 1;">Memory hygiene</span> |
372 | | - <span style="color: var(--text-secondary);">Store outputs are always cloned. Internal state never leaks.</span> |
| 376 | + <span class="desc">Store outputs are always cloned. Internal state never leaks.</span> |
373 | 377 | </div> |
374 | 378 | <div class="security-row"> |
375 | 379 | <span class="badge y">AWARE</span> |
376 | 380 | <span style="flex: 1;">Float32 overflow</span> |
377 | | - <span style="color: var(--text-secondary);">Dot products of large vectors (>10⁵ dims with large magnitudes) can overflow. Normalize first.</span> |
| 381 | + <span class="desc">Dot products of large vectors (>10⁵ dims with large magnitudes) can overflow. Normalize first.</span> |
378 | 382 | </div> |
379 | 383 | <div class="security-row"> |
380 | 384 | <span class="badge y">AWARE</span> |
381 | 385 | <span style="flex: 1;">Thread safety</span> |
382 | | - <span style="color: var(--text-secondary);">Store is read-safe but not write-safe concurrently. Guard with <code>sync.Mutex</code>.</span> |
| 386 | + <span class="desc">Store is read-safe but not write-safe concurrently. Guard with <code>sync.Mutex</code>.</span> |
383 | 387 | </div> |
384 | 388 | </div> |
385 | 389 | </div> |
386 | 390 | </section> |
387 | 391 |
|
388 | 392 | <!-- Install --> |
389 | 393 | <section class="section" id="install" style="padding-top: 0;"> |
390 | | - <div class="container"> |
| 394 | + <div class="container" style="text-align: center;"> |
391 | 395 | <div class="section-label">Get Started</div> |
392 | 396 | <h2>Install</h2> |
393 | | - <p class="lead">One import. Zero dependencies.</p> |
| 397 | + <p class="lead" style="margin: 16px auto 0;">One import. Zero dependencies.</p> |
394 | 398 |
|
395 | 399 | <div class="install-box"> |
396 | 400 | <span class="prompt">$</span> |
|
0 commit comments