{# ========================================================================== Grundgerüst für Seiten ohne Anwendungsrahmen: Anmeldung, zweiter Faktor, Kundenportal, Self-Service. Wichtiger Unterschied zu base.html: Flash-Meldungen werden hier **sichtbar serverseitig** gerendert, nicht über die JSON-Brücke. Der Vorgänger hatte dieselbe Trennung; sie ist wichtig, weil diese Seiten auch ohne JavaScript nutzbar bleiben müssen (und weil Tests hier direkt auf Text prüfen). ========================================================================== #} {% block title %}{{ self.heading() }} · {{ app_name }}{% endblock %} {% block extra_head %}{% endblock %}
{# Wortmarke als Seitenhintergrund -- fuer beide Anwendungen. Bewusst inline und mit Themen-Tokens statt zweier Dateien fuer hell und dunkel: bei der Einstellung "System" und beim Umschalten von Hand waere die versteckte Variante die falsche. ``aria-hidden``, weil der Name in der Titelzeile steht. Die Geometrie ist symmetrisch um die Mitte (x=260) aufgebaut, damit die Marke ohne Nachrechnen mittig sitzt: der Schriftzug haengt an ``text-anchor="middle"``, die beiden Zacken liegen spiegelbildlich, und die Linie beginnt links so weit vor der Mitte, wie der Punkt rechts nach ihr endet. Wer die Linie verlaengert, muss beide Enden anfassen. Ohne Funktionszeile (Lizenzserver) ist der Kasten kuerzer -- sonst stuende unter der Marke ein leerer Streifen. #}
{# Die Anmeldeseite laesst diesen Kopf weg: die Wortmarke darueber sagt schon, wo man ist, und "Anmelden" steht auf dem Knopf. Die uebrigen Standalone-Seiten behalten ihn -- "Zweiter Faktor" oder der Kundenname im Portal sind dort die Auskunft, um die es geht. #} {% block brand %}

{% block heading %}{{ app_name }}{% endblock %}

{% set sub %}{% block subheading %}{% endblock %}{% endset %} {% if sub | trim %}

{{ sub }}

{% endif %}
{% endblock %} {% with messages = get_flashed_messages(with_categories=true) %} {% if messages %}
{% for category, message in messages %} {% set kind = {'error': 'danger', 'danger': 'danger', 'success': 'success', 'warning': 'warning'}.get(category, 'info') %} {% endfor %}
{% endif %} {% endwith %} {% block content %}{% endblock %}

{{ app_name }} {{ app_version }} · © {{ current_year }} {{ copyright_notice }}

{% block scripts %}{% endblock %}