:root {
    --calendar-fablab-red: #D13F34;
    --calendar-fablab-blue: #16A3C4;
    --calendar-border: 1px solid #999;
}

body {
    color: black;

    /* inspired by fablab-altmuehlfranken.de */
    font-weight: 100;
    line-height: 1.3;
    font-size: 9pt;

    height: auto;
    overflow: auto;

    /*background: repeating-linear-gradient(135deg, #eee, #eee 100px, #ccc 100px, #ccc 200px);*/
}

.calendar {
    width: 100%;
    margin: 0 auto;
}

.calendar-date {
    margin-bottom: 8px;
    display: flex;
    align-items: stretch;
    flex-direction: row;
}

.calendar-date-date {
    border: var(--calendar-border);
    text-align: center;
    border-radius: 5px;
    margin-right: 8px;
    flex: 35px 0 0;
    height: 100%;
    background-color: white;
}
.calendar-date-month {
    background-color: var(--calendar-fablab-red);
    color: white;
    padding: 3px 0;
}
.calendar-date:nth-of-type(2n) .calendar-date-month {
    background-color: var(--calendar-fablab-blue);
}
.calendar-date-day {
    font-size: 13pt;
    font-weight: 700;
    padding-top: 3px;
}
.calendar-date-weekday {
    padding-bottom: 3px;
}

.calendar-events {
    flex-grow: 100;
    vertical-align: top;
}
.calendar-event {
    background-color: white;
    border: var(--calendar-border);
    border-radius: 5px;
    padding: 5px;
    margin-bottom: 5px;
    filter: brightness(1);
    display: flex;
    align-items: stretch;
    flex-direction: row;
    justify-content: center;
}
.calendar-event-time {
    text-align: center;
    padding: 5px 8px 5px 5px;
    margin: -5px 0 -5px -5px;
    flex: 0 0 45px;
    background-color: #ddd;
}
.calendar-event-timesep {
    line-height: 1.2;
}
.calendar-event-timesep:before {
    display: block;
    content: "⋮";
}
.calendar-event-description {
    flex-grow: 100;
    margin: 0 5px;
    word-break: break-word;
    word-wrap: break-word;
    hyphens: auto;
}
.calendar-event-description, .calendar-event-time {
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.calendar-event-description p {
    margin-bottom: 0.5em;
}
.calendar-event-description p:last-child {
    margin-bottom: 0;
}
.calendar-event-type {
    flex: 0 0 12px;
    margin: -5px -5px -5px 0;
}
.calendar-subscription-buttons {
    text-align: center;
}

@media only screen and (max-width: 960px) {
    .calendar-event {
        flex-direction: column;
    }
    .calendar-event-time {
        flex-direction: row;
        padding: 5px 8px 5px 5px;
        margin: -5px -5px 5px -5px;
        flex: 0 0 12px;
        align-content: center;
        justify-content: center;
    }
    .calendar-event-type {
        flex: 0 0 12px;
        margin: 5px -5px -5px -5px;
    }
    .calendar-event-timesep {
        display: block;
    }
    .calendar-event-timesep:before {
        display: block;
        content: "...";
        padding: 0 3px;
    }
}

.calendar-date-date, .calendar-event {
    /* make sure border radius clips content */
    overflow: hidden;
}

details.calendar-event-details > summary {
    text-decoration: underline dotted black;
    cursor: pointer;
}
.calendar-popover-content > * {
    margin: 5px 0;
}

.calendar-popover-entry {
    display: flex;
    margin: 5px 0;
}
.calendar-popover-entry-icon {
    flex: 0 0 18px;
}

/* CSS-only "fake soft open", might be replaced something more sophisticated in the future */
details.calendar-event-details[open] summary ~ * {
  animation: calendar-event-details-sweep .5s ease-in-out;
}
@keyframes calendar-event-details-sweep {
  0%    {opacity: 0; transform: translateY(-10px)}
  100%  {opacity: 1; transform: translateY(0)}
}