body {
    background: black;
    color: lime;

    font-size: 20px;
    font-weight: lighter;
    font-family: "Courier New", monospace;
    line-height: 1.6;

    text-align: center;

    padding: 20px;

    opacity: 1;
    transition: opacity 0.5s ease;

    max-width: 900px;
    margin: auto;
}

#palmer {
    color: orange;
    margin-top: 20px;
    font-style: italic;
}

/* page fade-out */
.body.fade-out {
    opacity: 0;
}

/* content fade-in */
#content {
    opacity: 0;
    transform: translateY(10px);

    transition:
        opacity 0.6s ease,
        transform 0.6s ease;
}

#content.show {
    opacity: 1;
    transform: translateY(0);
}

/* layout */
.left-section {
    text-align: left;
}

/* warning text */
.warning {
    color: red;
}

/* blinking text */
.blink {
    animation: blink 0.8s infinite;
}

@keyframes blink {
    50% {
        opacity: 0;
    }
}

/* boot screen */
#boot {
    padding: 40px;
    font-size: 20px;
}

/* links */
a {
    color: cyan;
    text-decoration: none;

    transition:
        color 0.2s ease,
        text-shadow 0.2s ease;
}

a:hover {
    color: white;
    text-shadow: 0 0 5px cyan;
}


/* CRT glow */
body {
    text-shadow: 0 0 3px lime;
}

/* subtle scanlines */
body::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;

    width: 100%;
    height: 100%;

    background:
        repeating-linear-gradient(
            to bottom,
            rgba(255,255,255,0.03),
            rgba(255,255,255,0.03) 1px,
            transparent 1px,
            transparent 3px
        );

    pointer-events: none;
    z-index: 9999;
}

/* slight screen flicker */
@keyframes flicker {
    0% { opacity: 0.97; }
    50% { opacity: 1; }
    100% { opacity: 0.98; }
}

body {
    animation: flicker 0.12s infinite;
}
