{% block title %}BackupWatch{% endblock %}
{% if user %}
{% set p = request.url.path if request else '/' %}
{% set nav_active = 'dashboard' if p == '/' else 'clients' if (p.startswith('/clients') or p.startswith('/jobs')) else 'onboarding' if p.startswith('/onboarding') else 'review' if (p.startswith('/review') or p.startswith('/mail-audit')) else 'rules' if p.startswith('/rules') else 'settings' if (p.startswith('/settings') or p.startswith('/users') or p.startswith('/updates')) else 'help' if p.startswith('/help') else '' %}
{% macro navitem(href, key, label) %}{{ label }}{% endmacro %}
{% endif %}
{% block subnav %}{% endblock %}{# full-width band under the navbar (e.g. Settings tabs) #}
{% if user and licence_state and licence_state.mode == 'hard_stop' %}
{% endif %}
{# offline lease lapsed: monitoring is very much still running, only the outbound emails are off.
Sticky and NOT dismissable — silence is exactly the failure this state has to shout about. #}
{% if user and licence_state and licence_state.mode == 'audit_only' %}
{% endif %}
{# licence server said no (seat taken / revoked / unknown key): the cached licence was dropped,
monitoring continues on the free tier. Not dismissable — it needs an operator decision. #}
{% if user and licence_notice %}
{% endif %}
{# the cached blob is genuinely signed but was issued to a different install (restored backup,
cloned VM): monitoring continues on the free tier and re-activating here moves the seat. #}
{% if user and licence_binding_notice %}
Licence bound to another install. {{ licence_binding_notice }}
Settings → Licence
{% endif %}
{% if user and licence_state and (licence_state.mode == 'grace' or (licence_state.mode == 'active' and 'past due' in licence_state.reason|lower)) %}
{% endif %}
{# the Job onboarding page raises its own batch-scoped observation banner; two would say the same thing twice #}
{% if pending_setup and user and user.role in ["admin", "tech"] and not hide_pending_banner %}