{% 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). #}
{# 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 %}