html,
body {
    margin: 0;
    min-height: 100%;
}

body {
    background: #000;
}

.matrix-container {
    position: fixed;
    inset: 0;
    z-index: -1;
    overflow: hidden;
    background: #000;
    pointer-events: none;
}

.matrix-pattern {
    position: absolute;
    inset: 0;
}

.matrix-column {
    --i: 0;
    --columns: 40;
    --speed: 3s;
    --delay: -2s;

    position: absolute;
    top: -100%;
    left: calc((100vw / var(--columns)) * var(--i));

    width: calc(100vw / var(--columns));
    height: 100vh;

    font-size: clamp(12px, 1.6vw, 16px);
    line-height: 1.15;
    font-weight: bold;
    white-space: nowrap;

    animation: matrix-fall var(--speed) linear infinite;
    animation-delay: var(--delay);
}

.matrix-column::before {
    content: "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

    position: absolute;
    top: 0;
    left: 0;

    writing-mode: vertical-lr;
    letter-spacing: 1px;

    background: linear-gradient(
        to bottom,
        #ffffff 0%,
        #ffffff 5%,
        #00ff41 10%,
        #00ff41 20%,
        #00dd33 30%,
        #00bb22 40%,
        #009911 50%,
        #007700 60%,
        #005500 70%,
        #003300 80%,
        rgba(0, 255, 65, 0.5) 90%,
        transparent 100%
    );

    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;

    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.matrix-column:nth-child(2n)::before {
    content: "ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴァィゥェォャュョッABCDEFGHIJKLMNOPQRSTUVWXYZ";
}

.matrix-column:nth-child(3n)::before {
    content: "アカサタナハマヤラワイキシチニヒミリウクスツヌフムユルエケセテネヘメレオコソトノホモヨロヲン0987654321";
}

.matrix-column:nth-child(4n)::before {
    content: "ンヲロヨモホノトソコオレメヘネテセケエルユムフヌツスクウリミヒニチシキイワラヤマハナタサカア";
}

.matrix-column:nth-child(5n)::before {
    content: "ガザダバパギジヂビピグズヅブプゲゼデベペゴゾドボポヴァィゥェォャュョッ!@#$%^&*()_+-=[]{}|;:,.<>?";
}

@keyframes matrix-fall {
    0% {
        transform: translateY(-10%);
        opacity: 1;
    }

    100% {
        transform: translateY(200%);
        opacity: 0;
    }
}

.content {
    position: relative;
    z-index: 1;
    color: white;
    font-family: sans-serif;
    text-align: center;
}