{# Standalone like login.html, and for the same reason: it is one of the two documents somebody sees before there is a session to build a header from. #} Sign in · {{ brand_name | default('little sister') }} {#- The browser's theme, not this session's — there is no session yet, and the look should survive a logout and greet the next person the way it was left. Same as login.html's, which is the page this one stands in for. -#} {% include '_theme_bootstrap.html' %}
{# The brand introduces itself here exactly as it does on the login form: this is the first thing a new user sees, so it says who is watching before it asks anything of them. #}
{% set brand_figure = 'gaze' %} {% include '_brand.html' %}
{#- One link per door and nothing else on the page. The default door first and filled, because on an ordinary day it is the answer and the others are not; the rest follow in the registry's own order, which is by name. Links rather than buttons in a form: each one is a different address, and a door takes a credential at its own route (ADR-0069 §4). -#}
{% for door in doors %} {{ door.label }} {%- else %} {#- Nothing to offer. Without this the page is a heading over an empty list, which is what a locked-out operator was left with: the brand, the tagline and no word about why there is no button. The sentence is built in `identity._no_way_in`, where the two states — nothing registered, versus everything registered and none of it able to take a credential — can be told apart. -#}

{{ shut }}

{% endfor %}