---
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>

        <div class="l-two-third">
        {{ content }}
        </div>
        <div class="l-one-third">
        {% for year in site.years %}
            {% assign y = year.first.first.date | date: "%Y" %}
            <h2>{{ y }}</h2>
            <ul>
            <li><a href="{{site.baseurl}}/news/{{year.first.first.date | date: "%Y"}}">All of {{y}}</a></li>
            {% for month in year %}
            <li><a href="{{site.baseurl}}/news/{{year.first.first.date | date: "%Y"}}/{{month.first.date | date: "%m"}}">{{ month.first.date | date: "%B" }}</a></li>
            {% endfor %}
            </ul>
        {% endfor %}
        </div>
    </div>
</main>
