* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html, body {
    height: 100%;
    width: 100%;
}

body {
    /* Off-black with a subtle green tint */
    background-color: #0a120d;
    /* Subtle vignette / scanline feel.*/
    background-image:
        radial-gradient(ellipse at center, rgba(0, 255, 100, 0.04) 0%, transparent 70%),
        repeating-linear-gradient(
            0deg,
            rgba(0, 0, 0, 0) 0px,
            rgba(0, 0, 0, 0) 2px,
            rgba(0, 255, 100, 0.015) 2px,
            rgba(0, 255, 100, 0.015) 3px
        );
    font-family: 'Courier New', Courier, monospace;
    color: #4ade80;
    overflow: hidden;
}

.container {
    height: 100vh;
    width: 100vw;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
}

.logo {
    max-width: min(80vw, 600px);
    max-height: 80vh;
    width: auto;
    height: auto;
    position: relative;
    z-index: 2;
    /* Subtle glow */
    filter: drop-shadow(0 0 20px rgba(74, 222, 128, 0.15));
}

.terminal {
    position: fixed;
    left: 1.5rem;
    bottom: 1.5rem;
    width: min(46ch, 70vw);
    height: min(50vh, 28rem);
    font-family: 'Courier New', Courier, monospace;
    font-size: 0.8rem;
    line-height: 1.4;
    color: rgba(74, 222, 128, 0.55);
    text-shadow: 0 0 6px rgba(74, 222, 128, 0.25);
    overflow: hidden;
    pointer-events: none;
    z-index: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    /* Fade lines out as they scroll up */
    -webkit-mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.3) 25%, rgba(0,0,0,0.85) 60%, #000 100%);
            mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.3) 25%, rgba(0,0,0,0.85) 60%, #000 100%);
}

.terminal .line {
    white-space: pre-wrap;
    word-break: break-word;
    opacity: 0;
    transform: translateY(0.4rem);
    animation: term-in 220ms ease-out forwards;
}

.terminal .line .prompt {
    color: rgba(74, 222, 128, 0.85);
}

.terminal .line.dim {
    color: rgba(74, 222, 128, 0.35);
}

.terminal .line.ok .tag {
    color: #4ade80;
}

.terminal .line.warn .tag {
    color: #facc15;
}

.terminal .line.err .tag {
    color: #f87171;
}

.terminal .cursor::after {
    content: "▋";
    margin-left: 2px;
    animation: term-blink 1s steps(2, start) infinite;
    color: rgba(74, 222, 128, 0.85);
}

@keyframes term-in {
    to { opacity: 1; transform: translateY(0); }
}

@keyframes term-blink {
    to { visibility: hidden; }
}

@media (max-width: 600px) {
    .terminal {
        font-size: 0.7rem;
        height: 40vh;
        width: 80vw;
        left: 1rem;
        bottom: 1rem;
    }
}