{# The shell every full page extends. A page template overrides `title`, optionally `head` (extra scripts) and `body_class`, and always `content`. Every page struct must carry a `nav: crate::ui::Nav` field, because the navbar component below reads it. #} {% block title %}Komp Accounting{% endblock %} · Komp Accounting {# Cascade order, declared before anything ships CSS so that it is this line that decides it. `app` is static/app.css, which is wrapped in that layer: it sits above Tailwind's preflight — so the reset cannot touch the site's own look — and below Tailwind's utilities, so a utility class put on an element still wins. That is what makes Tailwind usable here one element at a time, without converting the stylesheet. #} {# Penguin UI (https://www.penguinui.com) is Tailwind + Alpine, and its components are what this app uses for anything the user has to be told: ui/alert.html and ui/dialog.html. The focus plugin is what x-trap in the dialog needs, and it has to load before Alpine itself. #} {% block head %}{% endblock %} {% include "ui/navbar.html" %} {% block content %}{% endblock %}