${esc(r.name || "(no name)")}
${esc(displaySku(sku))}
-
+
+
+
${esc(kind)}
${storeBadge}
+
+
${esc(priceLine)}
@@ -197,6 +238,8 @@ export function renderSearch($app) {
const listings = Array.isArray(idx.items) ? idx.items : [];
allAgg = aggregateBySku(listings, rules.canonicalSku);
aggBySku = new Map(allAgg.map((x) => [String(x.sku || ""), x]));
+ URL_BY_SKU_STORE = buildUrlMap(listings, rules.canonicalSku);
+
indexReady = true;
$q.focus();
diff --git a/viz/style.css b/viz/style.css
index 51017d6..080cdc3 100644
--- a/viz/style.css
+++ b/viz/style.css
@@ -19,8 +19,9 @@ body {
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
-/* NEW: don't underline badge-links on hover */
-a.badge:hover { text-decoration: none; }
+/* Make badge-links look like badges (not accent-blue) + clearly clickable */
+a.badge { color: var(--muted); }
+a.badge:hover { text-decoration: underline; cursor: pointer; }
.container {
max-width: 980px;
@@ -128,16 +129,19 @@ a.badge:hover { text-decoration: none; }
}
.badge {
- font-size: 12px;
+ font-size: 13px;
color: var(--muted);
border: 1px solid var(--border);
- padding: 2px 8px;
+ padding: 3px 10px;
border-radius: 999px;
white-space: nowrap;
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
}
.meta {
- margin-top: 6px;
+ margin-top: 8px;
display: flex;
gap: 10px;
flex-wrap: wrap;