{# Operator-injected scripts (placement=head_start) — run before any CSS/JS so vendors that need to install global hooks first (GTM dataLayer init, etc.) work. Admin-only, see instance.custom_scripts. #} {% for s in custom_scripts | default([]) if s.placement == 'head_start' %} {{ s.html | safe }} {% endfor %} {% block title %}Data Analyst Portal{% endblock %} {# Design-system tokens (`--ds-*`) — opt-in green/navy palette used by pages that scope themselves with `.home-mock` / `.advanced-mock`. Loaded globally so the tokens are available anywhere; pages that haven't opted in just continue using the legacy `--primary` family from style-custom.css. #} {# Shared design-system components — `.callout-rec`, `.callout-hint`, `.code-output`, `.lightbox`, `.setup-section-header`. Pages opt in by adding the class to markup; no scope wrapper needed. #} {# Shared stack card styles — drives /catalog + /memory Browse/My Stack cards (matches marketplace.html .mp-card visual language). #} {# app.js loaded by _app_header.html itself so pages that include the header directly without extending base.html (e.g. admin_tables) still get the nav-dropdown wiring. #} {% block head_extra %}{% endblock %} {% include '_theme.html' %} {# Operator-injected scripts (placement=head_end, the default) — analytics + feedback widgets like Marker.io, Sentry, Hotjar. Admin-only, see instance.custom_scripts. #} {% for s in custom_scripts | default([]) if s.placement == 'head_end' %} {{ s.html | safe }} {% endfor %} {% include '_app_header.html' %} {# `layout` block: pages opt out of the narrow .container wrap by overriding this entire block (e.g. dashboard.html renders its own full-width
). Pages that want the standard chrome leave it alone and fill `content` instead. #} {% block layout %}
{% with messages = get_flashed_messages(with_categories=true) %} {% if messages %}
{% for category, message in messages %}
{{ message }}
{% endfor %}
{% endif %} {% endwith %}
{% block content %}{% endblock %}

© {{ now().year if now is defined else 2024 }} {{ config.INSTANCE_COPYRIGHT or 'AI Data Analyst' }}

{% endblock %} {% include "_version_badge.html" %} {# Pages that mount a chip-input opt in via the {% raw %}{{ super() }}{% endraw %} + {% raw %}{% block extra_scripts %}{% endblock %}{% endraw %} pattern. Was previously loaded globally here even though only /admin/corporate-memory actually used it — pure waste on every other admin/user page (#L85). #} {% block extra_scripts %}{% endblock %} {% block scripts %}{% endblock %} {# Operator-injected scripts (placement=body_end) — for vendors that explicitly want bottom placement. Admin-only, see instance.custom_scripts. #} {% for s in custom_scripts | default([]) if s.placement == 'body_end' %} {{ s.html | safe }} {% endfor %}