{% extends "base.html" %} {% block title %}{{ _('Advanced Search') }} — MediaForge{% endblock %} {% block styles %} {# settings_rows.css is NOT loaded globally by base.html — every page that uses .settings-container / .settings-tabs links it itself (settings.html, integrations.html, notifications.html, monitoring.html, ...). It carries the container's max-width, centering and page padding; without it the whole page ran edge to edge at full window width. #} {% endblock %} {% block content %} {# Advanced Search — reworked July 2026. Structure follows the Settings / Integrations / Monitoring / Notifications pages: one .has-floating-menu shell with a sticky floating side menu that switches filter groups client-side (advanced_search.js's switchAdvTab), plus the Quick Presets as a second menu section. On mobile the menu becomes the off-canvas drawer base.html injects for every .floating-side-menu — nothing page-specific needed for that. Unlike the settings pages the results are NOT inside a .settings-tab-panel: they live in .adv-main below the filter card so they stay visible no matter which filter group is open. All behaviour lives in static/advanced_search.js (it used to be ~1100 lines inside the shared app.js, which every page of the app loads). #}
{{ _('Quick Presets') }}
{{ _('Media type') }}
{{ _('Genres') }}
{{ _('Exclude genres') }}
{{ _('Results must not contain any of these genres.') }}
0 – 10
{# No .mf-token-input here on purpose: number_input.js wraps every in its own .num-input-wrap stepper pill, which brings its own border/background/sizing. #} {{ _('Filters out titles with barely any ratings — recommended when sorting by rating.') }}
{{ _('Release year') }}
{{ _('Runtime (minutes)') }}
{{ _('For series this is the runtime of a single episode.') }}
{{ _('Required for provider filters') }}
{{ _('Status') }}
{# TMDB with_status codes — 0 Returning, 1 Planned, 2 In Production, 3 Ended, 4 Cancelled, 5 Pilot. Series only: TMDB ignores the parameter for movies, so the whole field is hidden there. #}

{{ _('Results') }}

{{ _('Select filters or pick a Quick Preset from the menu to discover series and movies.') }}
{# Details modal — opened by the "Details" button on a result card. The old page put the description in a CSS :hover overlay, which is unreachable on touch devices and cut the text off; this shows the full TMDB overview. Reuses .adv-search-overlay / .ani-search-close from shared_modals.css so it looks identical to the stream-search modal. #} {% include "shared_modals.html" %} {% endblock %} {% block scripts %} {# app.js first: advanced_search.js reuses its shared helpers (openAniSearchModal, addDownloadedBadgeForTmdb, addSyncBadgeForTmdb, loadAutoSyncJobs, ...). #} {% endblock %}