.preloader {
    transition: opacity 2s, visibility 2s;
}

.preloader-hidden {
    opacity: 0;
    visibility: hidden;
}

.matrix {
    position: absolute;
    top: -160vh;
    height: 130vh;
    width: 20px;
    color: #1be468;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: start;
    animation: drop 3s linear infinite;
    text-shadow: 0 0 4px #1be468;
}

@keyframes drop {
    to {
        top: 100vh;
    }
}

.matrix::after {
    position: absolute;
    content: "";
    height: 100%;
    width: 100%;
    background: linear-gradient(rgb(7 19 12 / 0.97), rgb(7 19 12 / 0.05));
}

@keyframes spin {
    from {
        transform: rotate(0turn);
    }
    to {
        transform: rotate(1turn);
    }
}

.fade {
    --scrollbar-width: 8px;
    --mask-height: 22px;
    overflow-y: auto;
    height: 100%;
    padding-top: calc(var(--mask-height) / 2);
    padding-bottom: calc(var(--mask-height) / 1.5);
    padding-right: 20px;
    
    --mask-image-content: linear-gradient(
        to bottom,
        transparent,
        black calc(var(--mask-height) - 4px),
        black calc(100% - var(--mask-height)),
        transparent
    );

    --mask-size-content: calc(100% - var(--scrollbar-width)) 100%;
    --mask-image-scrollbar: linear-gradient(black, black);
    --mask-size-scrollbar: var(--scrollbar-width) 100%;
    mask-image: var(--mask-image-content), var(--mask-image-scrollbar);
    mask-size: var(--mask-size-content), var(--mask-size-scrollbar);
    mask-position: 0 0, 100% 0;
    mask-repeat: no-repeat, no-repeat;
}

.scrollbar {
    
}