.fill-text {
    overflow: hidden;
    white-space: pre-wrap;
}

.fill-text:not(.shadow) {
    /*
     * TODO: Animate with keyframes instead so that decreasing the size
     *       of the text while typing at the right edge of the screen
     *       doesn't flash the current word onto a newline for a moment.
     */
    transition-property: font-size;
    transition-duration: 1000ms / 30;
    transition-timing-function: linear;
}

.fill-text.shadow {
    visibility: hidden;
}

.full-viewport {
    position: absolute;

    top: 0;
    right: 0;
    bottom: 0;
    left: 0;

    padding: 1in;
    margin: 0;

    display: flex;
    justify-content: center;
    align-items: center;
    flex-flow: row wrap;
    text-align: center;
}

.sidebar {
    --border: 1px;
    --padding: 1em;

    position: absolute;
    top: 0;
    left: calc(-25% - var(--border) - 2 * var(--padding));
    bottom: 0;
    width: 25%;
    padding: 1em;
    margin: 0;
    background-color: whitesmoke;
    border-right: 1px solid grey;

    transition: left 250ms ease, box-shadow 100ms linear;
}

.sidebar:hover {
    left: 0;
    box-shadow: 0 0 0.2em fade(black, 50%);
}

.sidebar:before {
    --color: grey;
    --height: 4em;

    position: absolute;
    font-size: 200%;
    color: var(--color);
    content: "»";
    top: calc(50% - (var(--height) + 2 * var(--padding)/4) / 2 - 2 * var(--border));
    left: 100%;
    padding: calc(var(--padding)/4);
    line-height: var(--height);
    border: var(--border) solid var(--color);
    border-left: 0;
    border-radius: calc(var(--padding)/4);
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    background-color: whitesmoke;
}

.sidebar #style {
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 1em;
    white-space: normal;
}

@media print {
    .sidebar {
        display: none;
    }
}

