{% extends "conjunto/app_base.html" %} {% load i18n static conjunto %} {% block top_bar %}{% endblock %} {% block sidebar_left %}{% endblock %} {% block sidebar_right %}{% endblock %} {% block page_header %}{% endblock %} {% block footer %}{% endblock %} {% block extra_css %} {{ block.super }} {# Keep the password-toggle icon container visually flush with the input #} {# in all states (default, focus, is-invalid, browser autofill, dark mode). #} {# Root cause: .input-group-text has its own background (var(--tblr-bg-forms)) #} {# which does not track the adjacent input's background when the browser paints #} {# -webkit-autofill (yellow overlay) or when the input is marked .is-invalid. #} {% endblock extra_css %} {% block content %} {% block login_brand %}
{{ site.name|default:globals.project_title }} {{ site.name|default:globals.project_title }}
{% endblock login_brand %} {% block login_welcome %} {% if welcome_message %}

{{ welcome_message }}

{% endif %} {% endblock login_welcome %} {% comment %} The card itself is delegated to a partial so the login flow can swap it via HTMX (credentials → tenant picker → final redirect). ``card_template`` defaults to the credentials card, but ``ConjuntoLoginView`` may set it to the tenant-pick partial on a non-HTMX fallback render. {% endcomment %} {% include card_template|default:"registration/_login_card.html" %} {% block login_alternative_methods %} {% login_methods as methods %} {% if methods %}
{% translate "Or sign in with" %}
{% for method in methods %}
{% if method.rendered %} {{ method.rendered|safe }} {% else %} {% if method.icon %}{% endif %} {{ method.label }} {% endif %}
{% endfor %}
{% endif %} {% endblock login_alternative_methods %} {% block login_extensions %}{% endblock login_extensions %} {% block login_footer %} {% if login_footer_html %}{{ login_footer_html|safe }}{% endif %} {% endblock login_footer %} {% endblock %}