{# `interactive-widget=resizes-content` makes the on-screen keyboard shrink the layout viewport instead of just scrolling over it, so dvh-bounded surfaces (modal bodies, the navbar panel host) keep their actions reachable while an input is focused. Browsers without support ignore the token. #} {% block title %}YAFFO{% endblock %} {% if demo_mode | default(false) %} {% endif %} {% if assistant_available | default(false) %} {% endif %} {# Only the active theme's stylesheet: a static skin for built-in themes, or DB-stored CSS for runtime (AI-generated) custom themes. A page may override `theme_css_url` to load a different sheet (e.g. the themes page previews the theme it's viewing, working draft included). #} {% block extra_styles %}{% endblock %} {% if demo_mode | default(false) %} {% endif %}
{% with messages = get_flashed_messages(with_categories=true) %} {% if messages %}
{% for category, message in messages %}
{{ message }} {% if assistant_help | default(false) and category in ('error', 'danger', 'warning') %} {% endif %}
{% endfor %}
{% endif %} {% endwith %} {% block content %}{% endblock %}
{% if assistant_available | default(false) and request.endpoint != 'assistant_index' %} {% from "assistant/_panel.html" import assistant_panel with context %} {{ assistant_panel() }} {% if assistant_ready | default(false) %} {% endif %} {% endif %} {% if demo_mode | default(false) %} {% endif %} {% if assistant_available | default(false) %} {% endif %} {% block scripts %}{% endblock %}