---
layout: base
---
<div class="header default">
    <div class="l-menu-container">
        {% include mainmenu.html %}
        {% include logo.html %}
    </div>
</div>
<main>
    <div class="l-container">
        <header class="l-full preamble">
            <h1>{{ page.title }}</h1>
            {% if page.subtitle %}<h2>{{ page.subtitle }}</h2>{% endif %}
            {% if page.titlePicture %}
                {% assign pictureAttrs = "" %}
                {% for prop in page.titlePicture %}
                   {% for subprop in prop %}	
                     {% capture pictureAttrs %}{{ pictureAttrs }} {{subprop[0]}}="{{subprop[1]}}" {% endcapture %}                         
                   {% endfor %}
                {% endfor %}
            <img {{pictureAttrs}}>
            {% endif %}
            {% if page.preamble %}<p>{{ page.preamble | markownify }}</p>{% endif %}
        </header>
        <section class="left">
            {{ content }}
{% for item in page.additionalContents %}
            <article id="{{item.sectionId}}" {% unless item.cssClass == '' %}class="{{item.cssClass}}"{% endunless %}>
                {% include {{item.path}} %}
            </article>
{% endfor %}
        </section>
    </div>
</main>
