---
layout: base
---
<div class="header default">
    <div class="l-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>
