<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>TERMINAL ACCESS - DARKWEB</title>
    <style>
        /* Reset & Base */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            background-color: #050505;
            color: #00ff41; /* Green Matrix */
            font-family: 'Courier New', Courier, monospace;
            height: 100vh;
            overflow: hidden;
            display: flex;
            justify-content: center;
            align-items: center;
            position: relative;
        }

        /* Background Matrix Effect */
        #matrix-canvas {
            position: absolute;
            top: 0;
            left: 0;
            z-index: 1;
            opacity: 0.15;
        }

        /* Overlay Noise */
        .overlay {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: repeating-linear-gradient(
                0deg,
                rgba(0, 0, 0, 0.1),
                rgba(0, 0, 0, 0.1) 1px,
                transparent 1px,
                transparent 2px
            );
            pointer-events: none;
            z-index: 2;
        }

        /* Main Content */
        .container {
            text-align: center;
            z-index: 3;
            text-shadow: 0 0 10px #ff0000;
        }

        .glitch-wrapper {
            position: relative;
        }

        .main-text {
            font-size: 3rem;
            font-weight: bold;
            letter-spacing: 5px;
            color: #ff0000; /* Blood Red */
            text-transform: uppercase;
            animation: glitch 1s linear infinite;
        }

        .sub-text {
            font-size: 1.2rem;
            color: #555;
            margin-top: 20px;
            letter-spacing: 10px;
            border-right: 2px solid #00ff41;
            white-space: nowrap;
            overflow: hidden;
            animation: typing 4s steps(30, end), blink-caret 0.75s step-end infinite;
        }

        /* Animations */
        @keyframes glitch {
            0% { transform: translate(0); text-shadow: -2px 0 red, 2px 0 blue; }
            20% { transform: translate(-3px, 3px); }
            40% { transform: translate(-3px, -3px); }
            60% { transform: translate(3px, 3px); }
            80% { transform: translate(3px, -3px); }
            100% { transform: translate(0); }
        }

        @keyframes typing {
            from { width: 0 }
            to { width: 100% }
        }

        @keyframes blink-caret {
            from, to { border-color: transparent }
            50% { border-color: #00ff41; }
        }

        /* Scanline Effect */
        .scanline {
            width: 100%;
            height: 100px;
            z-index: 4;
            background: linear-gradient(0deg, rgba(0, 0, 0, 0) 0%, rgba(0, 255, 65, 0.1) 50%, rgba(0, 0, 0, 0) 100%);
            opacity: 0.1;
            position: absolute;
            bottom: 100%;
            animation: scanline 6s linear infinite;
        }

        @keyframes scanline {
            0% { bottom: 100%; }
            100% { bottom: -100%; }
        }
    </style>
</head>
<body>

    <canvas id="matrix-canvas"></canvas>
    <div class="overlay"></div>
    <div class="scanline"></div>

    <div class="container">
        <div class="glitch-wrapper">
            <h1 class="main-text" data-text="darkness is a loyal friend">darkness is a loyal friend</h1>
        </div>
        <p class="sub-text">h4ckEr?</p>
    </div>

    <script>
        const canvas = document.getElementById('matrix-canvas');
        const ctx = canvas.getContext('2d');

        canvas.width = window.innerWidth;
        canvas.height = window.innerHeight;

        const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$+-*/=%'\"#&_(),.;:?!\\|{}<>[]^~";
        const fontSize = 16;
        const columns = canvas.width / fontSize;

        const rainDrops = [];

        for( let x = 0; x < columns; x++ ) {
            rainDrops[x] = 1;
        }

        const draw = () => {
            ctx.fillStyle = 'rgba(0, 0, 0, 0.05)';
            ctx.fillRect(0, 0, canvas.width, canvas.height);

            ctx.fillStyle = '#0F0';
            ctx.font = fontSize + 'px monospace';

            for(let i = 0; i < rainDrops.length; i++) {
                const text = alphabet.charAt(Math.floor(Math.random() * alphabet.length));
                ctx.fillText(text, i * fontSize, rainDrops[i] * fontSize);

                if(rainDrops[i] * fontSize > canvas.height && Math.random() > 0.975) {
                    rainDrops[i] = 0;
                }
                rainDrops[i]++;
            }
        };

        setInterval(draw, 30);

        window.addEventListener('resize', () => {
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;
        });
    </script>
</body>
</html>