{# T48.1 -- shared "Start new eval" modal partial. Replaces the original ``window.prompt()`` chain (scan / model / prompts) with a single Tailwind modal that has client-side validation, a model dropdown, prompt multi-select checkboxes, and a today-vs-cap progress bar. Two modes, picked by the caller via ``{% with mode=... %}``: * ``mode="select-scan"`` -- the modal includes a scan-search input driven by ``GET /admin/scans/search?q=...``. Used from the ``/admin/evals`` index page where the operator hasn't picked a scan yet. * ``mode="fixed-scan"`` -- scan id is pre-set via ``fixed_scan_id``; the picker is hidden. Used from the per-scan matrix's "+ Add column" button + from the debug-page Evals tab where the scan context is already obvious. Caller threads ``today_usd`` + ``cap_usd`` (already passed to every matrix-rendering route) so the cap bar shows accurate state on first paint without an extra round-trip. Open-trigger contract: any element with ``data-action="open-eval-modal"`` on the page opens this modal. The matrix partial + the evals index page both use that attribute on their "+ Add column" / "Start new eval" buttons. XSS contract: every Jinja value below is autoescaped (the env is configured with ``select_autoescape(["html", "htm"])``). The inline ``