html, body, .app {
    height: 100%;
    margin: 0;
    padding: 0;
    font-family: "Source Code Pro", monospace;
    font-optical-sizing: auto;
}
* {
    box-sizing: border-box;
}
.app {
    display: grid;
    grid-template-columns: 0 minmax(0px, auto) 40% 0;
    grid-template-rows: 60px 1fr 0;
    grid-template-areas: "header header header header"
                         ".      main   side   ."
                         ".      .      .      .";
    grid-gap: 1rem;
}

header {
    grid-area: header;
    padding: 1rem;
    background-color: #003f86;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.site-title {
    display: flex;
    align-items: flex-end;
}

header h1 {
    margin: 0;
    padding: 0;
    font-size: 1.3rem;
    line-height: 1;
    color: #fff;
}

header a {
    color: #fff;
    text-decoration: none;
}

header .tagline {
    font-size: 0.8rem;
    color: rgba(255, 255, 255, 0.5);
    margin-left: 1rem;
}

.editor, .checker {
    border: 1px solid #ddd;
    flex: 1 0 0;
    min-height: 0;
}

.container {
    grid-area: main;
    display: flex;
    flex-direction: column;
}
.container-left {
    grid-area: main;
}
.container-right {
    grid-area: side;
}
.checker {
    white-space: pre;
    padding: 0.6rem 1rem;
    overflow: scroll;
    font-size: 0.8rem;
}

.title {
    padding: 0.6rem 0;
    font-weight: bold;
}

@media screen and (max-width: 640px) {
    .app {
        grid-template-rows: 60px 1fr 1fr 0;
        grid-template-areas: "header header header header"
                             ".      main   main   ."
                             ".      side   side   ."
                             ".      .      .      .";
    }
    .tagline {
        display: none;
    }
}

@media (prefers-color-scheme: dark) {
    html, body {
        background-color: #171616;
        color: #ddd;
    }
    header {
        background: #14263a;
    }
    .editor, .checker {
        border: 1px solid #222;
    }
    select {
        color: #ddd;
        background: inherit;
    }
}

