{% load static i18n lucide %} {% comment %} App shell for Coach mode (C1-C6) -- design_handoff_rosterchief_platform/README.md's "Coach mode (mobile, dark chrome)" section. Standalone from mobile/templates/mobile/ base.html (Member mode's shell) rather than a shared parent: the two have almost no markup in common beyond the outer / skeleton -- dark ink header instead of the member shell's club-themed navy, with the role switcher's own active segment in ice-blue (assets/mobile.css's .role-switcher-item-active-ice) as the mode's own accent -- and a dark .coach-tab-bar instead of the white one. Reuses the SAME stylesheet (static/css/mobile.css) and the same mobile:manifest/ mobile:icon/mobile:service_worker PWA plumbing as Member mode -- one app, one manifest, two modes, not two separate PWAs. The top info row (crest + team name) carries the same min-h-11 as the member header's own top row (implicitly 44px there, via its bell button) -- the role switcher pill sits directly below that row in both shells, so switching modes never shifts its position. The team-picker pill row (multi-team accounts only) renders *after* the switcher for the same reason -- were it above, the switcher would jump down whenever it appears. Tab bar: Today / Squad / Schedule, plus a raised "+" action at the end that opens a small popup menu (New event / New post / Add player) rather than committing to one destination -- coach mode has three genuinely different "add" actions and picking a single one for the button would just hide the other two. No Me tab here -- the account's own settings live in Member mode's mobile:me, reached via the role switcher above, not duplicated as a second Me screen. hx-boost="true" on : every same-shell link/form becomes an AJAX navigation instead of a full browser reload -- see mobile/templates/mobile/base.html's own comment for the full reasoning. Only 's children swap, not the tag itself, so anything that crosses back into the Member shell (bg-paper, its own data attrs) is marked hx-boost="false" to force a real navigation instead. {% endcomment %} {% block title %}{{ screen_title }} · {{ club.name }}{% endblock title %} {% if club.secondary_color %} {% endif %} {% block extra_head %}{% endblock extra_head %}
{% if club.logo %} {% else %} {{ club.initials }} {% endif %} {{ active_team.name|default:club.name }} {% if me and active_team_role %}{{ active_team_role }} · {{ me.first_name }}{% endif %}
{% trans "Member" %} {% trans "Manager" %}
{% if staffed_teams|length > 1 %}
{% for team in staffed_teams %} {{ team.short_name }} {% endfor %}
{% endif %} {% block header_extra %}{% endblock header_extra %}
{% if messages %}
{% for message in messages %}
{{ message }}
{% endfor %}
{% endif %} {% block content %}{% endblock content %}
{% block extra_body %}{% endblock extra_body %}