{# Preset chrome (guscio scuro/chiaro): PRIMA della skin, così la skin può rifinire un singolo token --cd-* senza forkare il preset. Vedi doc BOOTSTRAP_THEME §chrome. #} {% block head %}{% endblock %} {# Guscio "rail 2a": navbar pubblica sempre in cima (l'area riservata è una sezione del sito) → .container con rail + main affiancati → footer condiviso. #} {% include '_partials/navbar' %} {# Misura l'altezza reale della navbar → variabile CSS per lo sticky del rail (niente numero magico). Subito dopo la navbar per evitare flash prima del layout. #}
{% include '_partials/area-riservata/sidebar' %}
{# Banner "impersonazione attiva" (in cima al contenuto quando si opera come un altro utente). #} {% include '_partials/area-riservata/impersonation' %} {# Barra contestuale: hamburger (mobile) + breadcrumb + chip "Operativo come". #}
{{ pgMessage('nav.areariservata') }} {% if pageTitle %}/ {{ pageTitle }}{% endif %}
{# Trigger "Operativo come": apre la modale (inclusa dalla navbar, site-wide). È un controllo di sistema, non una CTA → outline-dark discreto. L'identità operatore vive nell'avatar della navbar; mentre impersoni, stato + uscita sono nella striscia in cima (qui niente doppione). #} {% if canImpersona %} {% endif %}
{% block ar_content %}{% endblock %}
{# Footer condiviso, a piena larghezza sotto rail + contenuto (fuori dal .container flex). #} {% include '_partials/catalogo-footer' %} {# Velo del drawer mobile: visibile solo <981px quando il rail è aperto. #}
{# Modale "Operativo come": inclusa dalla navbar (site-wide) — il trigger vive nell'avatar dell'account e nella barra contestuale qui sopra. Non va inclusa anche qui (sarebbe un doppione nel DOM). #} {% block scripts %}{% endblock %}