style: shop settings cards stay --surface-dim gray (drop white override)

Last batch promoted .shop-settings.well to a content-card and along
the way overrode the background to --surface-base (white) — fox
prefers the familiar light-gray slab. Drop the background-color +
border + dark-mode overrides; .well already sets --surface-dim and
its dark-mode rule, both of which I'm now letting through unchanged.

Kept: the rhythm + shape upgrades that actually fixed the "wells
butting together" problem — radius-lg, elevation-1 shadow,
var(--space-5) padding, var(--space-5) margin-bottom between
sections. Styleguide entry note updated to match.
This commit is contained in:
russell@unturf.com 2026-05-15 15:31:50 -04:00
parent 5aa6d1e756
commit 41d525aa1d
No known key found for this signature in database
9 changed files with 572 additions and 71 deletions

View file

@ -492,6 +492,21 @@ filters on no-JS. With JS, `static/js/tag_filter.js` intercepts clicks
and filters the grid in place via `data-tag-slugs` attribute on
`.serp-item`, zero network cost, fewer clicks to purchase.
**Tag-detail facet sidebar.** `shop_tag.j2` renders a left
`.facet-nav` (220px column ≥800px viewport, hidden below) wrapping a
single `<form method="get">` with three sections: Sort dropdown, Price
range (`?price_min=` / `?price_max=`, parsed by
`_price_range_from_request()` → cents, filtered by
`_filter_by_price_range()`), and full Categories list
(`ctx["facet_tags"]` = `tags_by_popularity(...)` with no limit).
Mobile (<800px) hides the sidebar and keeps the horizontal
`.tag-chip-strip-mobile` so phones still have one-tap tag switching.
SERP rows render `product.excerpt_sentences(6)` instead of the
char-based excerpt — six sentences, markdown-stripped, with a
1500-char safety cap for descriptions that lack terminators.
`Product.excerpt()` and `Product.excerpt_sentences()` both consume
the module-level `_strip_markdown()` helper for one source of truth.
Phase 2 (shipped): deterministic title-plus-description auto-tagger
in `lib/tag_suggest.py`. Title tokens weight × 3, description × 1
(capped at 100 unique tokens per product). Pipeline: tokenize →