{# /opportunities filter controls. Two rows: - Row 1: narrow Search input only. - Row 2: Per-column filters in TABLE-COLUMN ORDER — Dataset → Author → Issue → Workload → Suggestions. Matches the header sequence in _table.html so users find each filter where they expect. Audit-specific simplifications vs the cloud filter set: - No Status: audit is read-only; every row is ``active``. - No Smart View: severity buckets aren't well-calibrated in audit and there's no resolved state. Quick Wins / Chronic / Unaddressed don't add signal. - Workload is binary (Build / Consumption) — no Unclassified. - Suggestions is binary (With / Without) — no With-diff / None subdivisions. #}
{# Fixed 640px via inline style. The input itself has ``ui-control`` → ``width: 100%`` so the wrapper width is what bounds the rendered input. We use inline ``style`` rather than a Tailwind arbitrary class (``w-[640px]``) because the audit's compiled CSS bundle is generated out-of-band — only a fixed set of ``w-[NNNpx]`` widths are baked in, and 640 isn't one of them. Inline style sidesteps the build pipeline entirely. Widened from the previous 320px so the search bar carries more visual weight as the primary filter on the page. #}
{# Top row carries Search + every table-column filter EXCEPT Dataset and Author. The flex container wraps gracefully on narrow viewports, so on wide screens everything sits inline; on narrower screens the per-column controls flow under the search. #}
{# Spec 148 — partition / cluster recommendation availability. Same Any / With / Without grammar as the Suggestions filter. #}
{# Second-row filters: Dataset + Author (the noisiest, least-frequently toggled dropdowns). #}
{# Sort + direction are submitted as hidden fields so the column headers' anchors (which round-trip through ?sort=&direction=) don't get clobbered when the user changes a filter. #}