QUANTUM HUB
Key RequiredUniversal

QUANTUM HUB

Universal ScriptMDCHUBMDCHUB 9.1K views 166.7K executesUpdated May 3, 2026
Unrated
00
Lua Script•2173 lines (74123 chars)
-- ============================================================
-- QUANTUM HUB v3.0
-- Fully English | Main Category | Dynamic Animations
-- ============================================================

local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer

-- ============================================================
-- CONFIG
-- ============================================================

local CONFIG = {
    NAME = "QUANTUM HUB",
    VERSION = "v3.0",
    COLORS = {
        BG = Color3.fromRGB(10, 5, 30),
        SECONDARY = Color3.fromRGB(25, 15, 60),
        ACCENT = Color3.fromRGB(138, 43, 226),
        ACCENT_LIGHT = Color3.fromRGB(180, 100, 255),
        TEXT = Color3.fromRGB(240, 240, 255),
        TEXT_DARK = Color3.fromRGB(150, 150, 180),
        SUCCESS = Color3.fromRGB(50, 255, 100),
        ERROR = Color3.fromRGB(255, 50, 50),
        WARNING = Color3.fromRGB(255, 200, 50)
    }
}

-- ============================================================
-- SCREEN GUI
-- ============================================================

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "QuantumHub"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = player:WaitForChild("PlayerGui")

-- ============================================================
-- NOTIFICATION SYSTEM
-- ============================================================

local NotifFrame = Instance.new("Frame")
NotifFrame.Size = UDim2.new(0, 300, 0, 400)
NotifFrame.Position = UDim2.new(1, -320, 0, 20)
NotifFrame.BackgroundTransparency = 1
NotifFrame.Parent = ScreenGui

local function Notify(title, message, ntype)
    local notif = Instance.new("Frame")
    notif.Size = UDim2.new(1, 0, 0, 70)
    notif.Position = UDim2.new(0, 320, 0, 0)
    notif.BackgroundColor3 = CONFIG.COLORS.SECONDARY
    notif.BorderSizePixel = 0
    notif.Parent = NotifFrame
    
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 10)
    corner.Parent = notif
    
    local glow = Instance.new("Frame")
    glow.Size = UDim2.new(1, 6, 1, 6)
    glow.Position = UDim2.new(0, -3, 0, -3)
    glow.BackgroundColor3 = ntype == "success" and CONFIG.COLORS.SUCCESS or ntype == "error" and CONFIG.COLORS.ERROR or CONFIG.COLORS.WARNING
    glow.BackgroundTransparency = 0.7
    glow.BorderSizePixel = 0
    glow.ZIndex = -1
    
    local glowCorner = Instance.new("UICorner")
    glowCorner.CornerRadius = UDim.new(0, 12)
    glowCorner.Parent = glow
    
    glow.Parent = notif
    
    local titleLbl = Instance.new("TextLabel")
    titleLbl.Size = UDim2.new(1, -20, 0, 22)
    titleLbl.Position = UDim2.new(0, 10, 0, 8)
    titleLbl.BackgroundTransparency = 1
    titleLbl.Text = title
    titleLbl.TextColor3 = ntype == "success" and CONFIG.COLORS.SUCCESS or ntype == "error" and CONFIG.COLORS.ERROR or CONFIG.COLORS.WARNING
    titleLbl.TextSize = 14
    titleLbl.Font = Enum.Font.GothamBold
    titleLbl.TextXAlignment = Enum.TextXAlignment.Left
    titleLbl.Parent = notif
    
    local msgLbl = Instance.new("TextLabel")
    msgLbl.Size = UDim2.new(1, -20, 0, 30)
    msgLbl.Position = UDim2.new(0, 10, 0, 30)
    msgLbl.BackgroundTransparency = 1
    msgLbl.Text = message
    msgLbl.TextColor3 = CONFIG.COLORS.TEXT
    msgLbl.TextSize = 12
    msgLbl.Font = Enum.Font.Gotham
    msgLbl.TextXAlignment = Enum.TextXAlignment.Left
    msgLbl.TextWrapped = true
    msgLbl.Parent = notif
    
    TweenService:Create(notif, TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
        Position = UDim2.new(0, 0, 0, 0)
    }):Play()
    
    task.delay(3, function()
        TweenService:Create(notif, TweenInfo.new(0.3), {
            Position = UDim2.new(0, 320, 0, 0)
        }):Play()
        task.wait(0.3)
        notif:Destroy()
    end)
end

-- ============================================================
-- MAIN SHADOW FRAME
-- ============================================================

local MainShadow = Instance.new("Frame")
MainShadow.Name = "MainShadow"
MainShadow.Size = UDim2.new(0, 750, 0, 480)
MainShadow.Position = UDim2.new(0.5, -375, 0.5, -240)
MainShadow.BackgroundColor3 = Color3.new(0, 0, 0)
MainShadow.BackgroundTransparency = 0.4
MainShadow.BorderSizePixel = 0
MainShadow.Parent = ScreenGui

local shadowCorner = Instance.new("UICorner")
shadowCorner.CornerRadius = UDim.new(0, 16)
shadowCorner.Parent = MainShadow

-- Animated outer glow
local outerGlow = Instance.new("Frame")
outerGlow.Size = UDim2.new(1, 40, 1, 40)
outerGlow.Position = UDim2.new(0, -20, 0, -20)
outerGlow.BackgroundColor3 = CONFIG.COLORS.ACCENT
outerGlow.BackgroundTransparency = 0.92
outerGlow.BorderSizePixel = 0
outerGlow.ZIndex = -2
outerGlow.Parent = MainShadow

local outerGlowCorner = Instance.new("UICorner")
outerGlowCorner.CornerRadius = UDim.new(0, 24)
outerGlowCorner.Parent = outerGlow

-- Pulse animation for outer glow
task.spawn(function()
    while outerGlow.Parent do
        TweenService:Create(outerGlow, TweenInfo.new(2), {
            BackgroundTransparency = 0.88 + math.random() * 0.08
        }):Play()
        task.wait(2)
    end
end)

-- ============================================================
-- MAIN FRAME
-- ============================================================

local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(1, 0, 1, 0)
MainFrame.BackgroundColor3 = CONFIG.COLORS.BG
MainFrame.BorderSizePixel = 0
MainFrame.ClipsDescendants = true
MainFrame.Parent = MainShadow

local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 12)
mainCorner.Parent = MainFrame

-- Dynamic gradient background
local bgGradient = Instance.new("UIGradient")
bgGradient.Color = ColorSequence.new({
    ColorSequenceKeypoint.new(0, Color3.fromRGB(15, 8, 40)),
    ColorSequenceKeypoint.new(0.4, Color3.fromRGB(20, 10, 55)),
    ColorSequenceKeypoint.new(0.7, Color3.fromRGB(18, 12, 50)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(12, 6, 35))
})
bgGradient.Rotation = 45
bgGradient.Parent = MainFrame

-- Animated particles
local particles = Instance.new("Frame")
particles.Size = UDim2.new(1, 0, 1, 0)
particles.BackgroundTransparency = 1
particles.Parent = MainFrame

for i = 1, 20 do
    local p = Instance.new("Frame")
    p.Size = UDim2.new(0, math.random(2, 5), 0, math.random(2, 5))
    p.Position = UDim2.new(math.random(), 0, math.random(), 0)
    p.BackgroundColor3 = CONFIG.COLORS.ACCENT
    p.BackgroundTransparency = math.random(5, 9) / 10
    p.BorderSizePixel = 0
    p.Parent = particles
    
    local pc = Instance.new("UICorner")
    pc.CornerRadius = UDim.new(1, 0)
    pc.Parent = p
    
    task.spawn(function()
        while p.Parent do
            TweenService:Create(p, TweenInfo.new(math.random(4, 10)), {
                Position = UDim2.new(math.random(), 0, math.random(), 0),
                BackgroundTransparency = math.random(5, 9) / 10
            }):Play()
            task.wait(math.random(4, 10))
        end
    end)
end

-- ============================================================
-- TITLE BAR
-- ============================================================

local TitleBar = Instance.new("Frame")
TitleBar.Name = "TitleBar"
TitleBar.Size = UDim2.new(1, 0, 0, 45)
TitleBar.BackgroundColor3 = CONFIG.COLORS.SECONDARY
TitleBar.BorderSizePixel = 0
TitleBar.Parent = MainFrame

local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 12)
titleCorner.Parent = TitleBar

-- Dynamic notch
local Notch = Instance.new("Frame")
Notch.Name = "Notch"
Notch.Size = UDim2.new(0, 130, 0, 6)
Notch.Position = UDim2.new(0.5, -65, 0, 3)
Notch.BackgroundColor3 = CONFIG.COLORS.ACCENT
Notch.BorderSizePixel = 0
Notch.Parent = TitleBar

local notchCorner = Instance.new("UICorner")
notchCorner.CornerRadius = UDim.new(1, 0)
notchCorner.Parent = Notch

-- Notch glow with animation
local notchGlow = Instance.new("Frame")
notchGlow.Size = UDim2.new(1, 16, 1, 16)
notchGlow.Position = UDim2.new(0, -8, 0, -8)
notchGlow.BackgroundColor3 = CONFIG.COLORS.ACCENT
notchGlow.BackgroundTransparency = 0.6
notchGlow.BorderSizePixel = 0
notchGlow.Parent = Notch

local notchGlowCorner = Instance.new("UICorner")
notchGlowCorner.CornerRadius = UDim.new(1, 0)
notchGlowCorner.Parent = notchGlow

-- Pulsing notch animation
task.spawn(function()
    while notchGlow.Parent do
        TweenService:Create(notchGlow, TweenInfo.new(1.5), {
            BackgroundTransparency = 0.4 + math.random() * 0.3
        }):Play()
        task.wait(1.5)
    end
end)

-- 3D Black Hole Logo
local LogoFrame = Instance.new("Frame")
LogoFrame.Name = "Logo"
LogoFrame.Size = UDim2.new(0, 32, 0, 32)
LogoFrame.Position = UDim2.new(0, 12, 0, 6)
LogoFrame.BackgroundTransparency = 1
LogoFrame.Parent = TitleBar

-- Outer ring (accretion disk)
local accretionDisk = Instance.new("Frame")
accretionDisk.Size = UDim2.new(0, 36, 0, 36)
accretionDisk.Position = UDim2.new(0.5, -18, 0.5, -18)
accretionDisk.BackgroundColor3 = CONFIG.COLORS.ACCENT
accretionDisk.BackgroundTransparency = 0.7
accretionDisk.BorderSizePixel = 0
accretionDisk.ZIndex = -1
accretionDisk.Parent = LogoFrame

local adCorner = Instance.new("UICorner")
adCorner.CornerRadius = UDim.new(1, 0)
adCorner.Parent = accretionDisk

-- Main black hole
local blackHole = Instance.new("Frame")
blackHole.Size = UDim2.new(0, 28, 0, 28)
blackHole.Position = UDim2.new(0.5, -14, 0.5, -14)
blackHole.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
blackHole.BorderSizePixel = 0
blackHole.Parent = LogoFrame

local bhCorner = Instance.new("UICorner")
bhCorner.CornerRadius = UDim.new(1, 0)
bhCorner.Parent = blackHole

-- Event horizon ring
local eventHorizon = Instance.new("Frame")
eventHorizon.Size = UDim2.new(0, 20, 0, 20)
eventHorizon.Position = UDim2.new(0.5, -10, 0.5, -10)
eventHorizon.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
eventHorizon.BorderSizePixel = 0
eventHorizon.Parent = blackHole

local ehCorner = Instance.new("UICorner")
ehCorner.CornerRadius = UDim.new(1, 0)
ehCorner.Parent = eventHorizon

-- Singularity (white center)
local singularity = Instance.new("Frame")
singularity.Size = UDim2.new(0, 10, 0, 10)
singularity.Position = UDim2.new(0.5, -5, 0.5, -5)
singularity.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
singularity.BorderSizePixel = 0
singularity.Parent = eventHorizon

local singCorner = Instance.new("UICorner")
singCorner.CornerRadius = UDim.new(1, 0)
singCorner.Parent = singularity

-- Title text
local TitleText = Instance.new("TextLabel")
TitleText.Name = "Title"
TitleText.Size = UDim2.new(0, 250, 0, 30)
TitleText.Position = UDim2.new(0, 48, 0, 7)
TitleText.BackgroundTransparency = 1
TitleText.Text = CONFIG.NAME
TitleText.TextColor3 = CONFIG.COLORS.TEXT
TitleText.TextSize = 20
TitleText.Font = Enum.Font.GothamBold
TitleText.TextXAlignment = Enum.TextXAlignment.Left
TitleText.Parent = TitleBar

local VersionText = Instance.new("TextLabel")
VersionText.Size = UDim2.new(0, 60, 0, 18)
VersionText.Position = UDim2.new(0, 48, 0, 28)
VersionText.BackgroundTransparency = 1
VersionText.Text = CONFIG.VERSION
VersionText.TextColor3 = CONFIG.COLORS.ACCENT_LIGHT
VersionText.TextSize = 11
VersionText.Font = Enum.Font.Gotham
VersionText.TextXAlignment = Enum.TextXAlignment.Left
VersionText.Parent = TitleBar

-- Window Controls
local ControlsFrame = Instance.new("Frame")
ControlsFrame.Size = UDim2.new(0, 110, 0, 32)
ControlsFrame.Position = UDim2.new(1, -115, 0, 6)
ControlsFrame.BackgroundTransparency = 1
ControlsFrame.Parent = TitleBar

-- Minimize
local MinimizeBtn = Instance.new("TextButton")
MinimizeBtn.Size = UDim2.new(0, 28, 0, 28)
MinimizeBtn.Position = UDim2.new(0, 0, 0, 2)
MinimizeBtn.BackgroundColor3 = CONFIG.COLORS.SUCCESS
MinimizeBtn.Text = "−"
MinimizeBtn.TextColor3 = Color3.new(0, 0, 0)
MinimizeBtn.TextSize = 20
MinimizeBtn.Font = Enum.Font.GothamBold
MinimizeBtn.Parent = ControlsFrame

local minCorner = Instance.new("UICorner")
minCorner.CornerRadius = UDim.new(1, 0)
minCorner.Parent = MinimizeBtn

-- Maximize
local MaximizeBtn = Instance.new("TextButton")
MaximizeBtn.Size = UDim2.new(0, 28, 0, 28)
MaximizeBtn.Position = UDim2.new(0, 34, 0, 2)
MaximizeBtn.BackgroundColor3 = CONFIG.COLORS.WARNING
MaximizeBtn.Text = "□"
MaximizeBtn.TextColor3 = Color3.new(0, 0, 0)
MaximizeBtn.TextSize = 14
MaximizeBtn.Font = Enum.Font.GothamBold
MaximizeBtn.Parent = ControlsFrame

local maxCorner = Instance.new("UICorner")
maxCorner.CornerRadius = UDim.new(1, 0)
maxCorner.Parent = MaximizeBtn

-- Close
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 28, 0, 28)
CloseBtn.Position = UDim2.new(0, 68, 0, 2)
CloseBtn.BackgroundColor3 = CONFIG.COLORS.ERROR
CloseBtn.Text = "×"
CloseBtn.TextColor3 = Color3.new(1, 1, 1)
CloseBtn.TextSize = 20
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.Parent = ControlsFrame

local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(1, 0)
closeCorner.Parent = CloseBtn

-- ============================================================
-- FLOATING BUBBLE (MINIMIZED)
-- ============================================================

local FloatingBubble = Instance.new("Frame")
FloatingBubble.Name = "FloatingBubble"
FloatingBubble.Size = UDim2.new(0, 65, 0, 65)
FloatingBubble.Position = UDim2.new(0.85, 0, 0.85, 0)
FloatingBubble.BackgroundColor3 = CONFIG.COLORS.SECONDARY
FloatingBubble.BackgroundTransparency = 0.05
FloatingBubble.BorderSizePixel = 0
FloatingBubble.Visible = false
FloatingBubble.Active = true
FloatingBubble.Draggable = true
FloatingBubble.Parent = ScreenGui

local bubbleCorner = Instance.new("UICorner")
bubbleCorner.CornerRadius = UDim.new(1, 0)
bubbleCorner.Parent = FloatingBubble

-- Inner glow ring
local bubbleRing = Instance.new("Frame")
bubbleRing.Size = UDim2.new(1, 20, 1, 20)
bubbleRing.Position = UDim2.new(0, -10, 0, -10)
bubbleRing.BackgroundColor3 = CONFIG.COLORS.ACCENT
bubbleRing.BackgroundTransparency = 0.8
bubbleRing.BorderSizePixel = 0
bubbleRing.Parent = FloatingBubble

local ringCorner = Instance.new("UICorner")
ringCorner.CornerRadius = UDim.new(1, 0)
ringCorner.Parent = bubbleRing

-- Outer pulse ring
local bubblePulse = Instance.new("Frame")
bubblePulse.Size = UDim2.new(1, 36, 1, 36)
bubblePulse.Position = UDim2.new(0, -18, 0, -18)
bubblePulse.BackgroundColor3 = CONFIG.COLORS.ACCENT
bubblePulse.BackgroundTransparency = 0.92
bubblePulse.BorderSizePixel = 0
bubblePulse.Parent = FloatingBubble

local pulseCorner = Instance.new("UICorner")
pulseCorner.CornerRadius = UDim.new(1, 0)
pulseCorner.Parent = bubblePulse

-- Bubble logo
local BubbleLogo = Instance.new("Frame")
BubbleLogo.Size = UDim2.new(0, 42, 0, 42)
BubbleLogo.Position = UDim2.new(0.5, -21, 0.5, -21)
BubbleLogo.BackgroundTransparency = 1
BubbleLogo.Parent = FloatingBubble

local bubbleAccretion = Instance.new("Frame")
bubbleAccretion.Size = UDim2.new(0, 44, 0, 44)
bubbleAccretion.Position = UDim2.new(0.5, -22, 0.5, -22)
bubbleAccretion.BackgroundColor3 = CONFIG.COLORS.ACCENT
bubbleAccretion.BackgroundTransparency = 0.6
bubbleAccretion.BorderSizePixel = 0
bubbleAccretion.ZIndex = -1
bubbleAccretion.Parent = BubbleLogo

local baCorner = Instance.new("UICorner")
baCorner.CornerRadius = UDim.new(1, 0)
baCorner.Parent = bubbleAccretion

local bubbleBH = Instance.new("Frame")
bubbleBH.Size = UDim2.new(0, 36, 0, 36)
bubbleBH.Position = UDim2.new(0.5, -18, 0.5, -18)
bubbleBH.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
bubbleBH.BorderSizePixel = 0
bubbleBH.Parent = BubbleLogo

local bbhCorner = Instance.new("UICorner")
bbhCorner.CornerRadius = UDim.new(1, 0)
bbhCorner.Parent = bubbleBH

local bubbleEH = Instance.new("Frame")
bubbleEH.Size = UDim2.new(0, 24, 0, 24)
bubbleEH.Position = UDim2.new(0.5, -12, 0.5, -12)
bubbleEH.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
bubbleEH.BorderSizePixel = 0
bubbleEH.Parent = bubbleBH

local behCorner = Instance.new("UICorner")
behCorner.CornerRadius = UDim.new(1, 0)
behCorner.Parent = bubbleEH

local bubbleSing = Instance.new("Frame")
bubbleSing.Size = UDim2.new(0, 12, 0, 12)
bubbleSing.Position = UDim2.new(0.5, -6, 0.5, -6)
bubbleSing.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
bubbleSing.BorderSizePixel = 0
bubbleSing.Parent = bubbleEH

local bsCorner = Instance.new("UICorner")
bsCorner.CornerRadius = UDim.new(1, 0)
bsCorner.Parent = bubbleSing

-- ============================================================
-- CONTENT AREA
-- ============================================================

local ContentFrame = Instance.new("Frame")
ContentFrame.Size = UDim2.new(1, -20, 1, -60)
ContentFrame.Position = UDim2.new(0, 10, 0, 55)
ContentFrame.BackgroundTransparency = 1
ContentFrame.Parent = MainFrame

-- Sidebar
local Sidebar = Instance.new("Frame")
Sidebar.Size = UDim2.new(0, 160, 1, 0)
Sidebar.BackgroundColor3 = CONFIG.COLORS.SECONDARY
Sidebar.BorderSizePixel = 0
Sidebar.Parent = ContentFrame

local sidebarCorner = Instance.new("UICorner")
sidebarCorner.CornerRadius = UDim.new(0, 10)
sidebarCorner.Parent = Sidebar

-- Sidebar gradient
local sidebarGrad = Instance.new("UIGradient")
sidebarGrad.Color = ColorSequence.new({
    ColorSequenceKeypoint.new(0, CONFIG.COLORS.SECONDARY),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(18, 10, 45))
})
sidebarGrad.Rotation = 180
sidebarGrad.Parent = Sidebar

-- Category list
local CategoryList = Instance.new("ScrollingFrame")
CategoryList.Size = UDim2.new(1, -10, 1, -10)
CategoryList.Position = UDim2.new(0, 5, 0, 5)
CategoryList.BackgroundTransparency = 1
CategoryList.ScrollBarThickness = 3
CategoryList.ScrollBarImageColor3 = CONFIG.COLORS.ACCENT
CategoryList.CanvasSize = UDim2.new(0, 0, 0, 0)
CategoryList.AutomaticCanvasSize = Enum.AutomaticSize.Y
CategoryList.Parent = Sidebar

local categoryLayout = Instance.new("UIListLayout")
categoryLayout.Padding = UDim.new(0, 6)
categoryLayout.SortOrder = Enum.SortOrder.LayoutOrder
categoryLayout.Parent = CategoryList

-- Right Panel
local RightPanel = Instance.new("Frame")
RightPanel.Size = UDim2.new(1, -170, 1, 0)
RightPanel.Position = UDim2.new(0, 170, 0, 0)
RightPanel.BackgroundColor3 = CONFIG.COLORS.SECONDARY
RightPanel.BackgroundTransparency = 0.4
RightPanel.BorderSizePixel = 0
RightPanel.Parent = ContentFrame

local rightCorner = Instance.new("UICorner")
rightCorner.CornerRadius = UDim.new(0, 10)
rightCorner.Parent = RightPanel

-- ============================================================
-- CATEGORY SYSTEM
-- ============================================================

local Categories = {}
local CurrentCategory = nil

local function CreateCategory(name, icon)
    local btn = Instance.new("TextButton")
    btn.Name = name
    btn.Size = UDim2.new(1, 0, 0, 45)
    btn.BackgroundColor3 = CONFIG.COLORS.BG
    btn.Text = "  " .. icon .. "  " .. name
    btn.TextColor3 = CONFIG.COLORS.TEXT
    btn.TextSize = 14
    btn.Font = Enum.Font.GothamSemibold
    btn.TextXAlignment = Enum.TextXAlignment.Left
    btn.Parent = CategoryList
    
    local btnCorner = Instance.new("UICorner")
    btnCorner.CornerRadius = UDim.new(0, 8)
    btnCorner.Parent = btn
    
    -- Hover effects
    btn.MouseEnter:Connect(function()
        if CurrentCategory ~= name then
            TweenService:Create(btn, TweenInfo.new(0.2), {
                BackgroundColor3 = Color3.fromRGB(40, 25, 80)
            }):Play()
        end
    end)
    
    btn.MouseLeave:Connect(function()
        if CurrentCategory ~= name then
            TweenService:Create(btn, TweenInfo.new(0.2), {
                BackgroundColor3 = CONFIG.COLORS.BG
            }):Play()
        end
    end)
    
    -- Indicator
    local indicator = Instance.new("Frame")
    indicator.Size = UDim2.new(0, 4, 0, 25)
    indicator.Position = UDim2.new(0, 0, 0.5, -12)
    indicator.BackgroundColor3 = CONFIG.COLORS.ACCENT
    indicator.BorderSizePixel = 0
    indicator.Visible = false
    indicator.Parent = btn
    
    local indCorner = Instance.new("UICorner")
    indCorner.CornerRadius = UDim.new(0, 2)
    indCorner.Parent = indicator
    
    -- Content Panel
    local panel = Instance.new("ScrollingFrame")
    panel.Name = name .. "Content"
    panel.Size = UDim2.new(1, -20, 1, -20)
    panel.Position = UDim2.new(0, 10, 0, 10)
    panel.BackgroundTransparency = 1
    panel.ScrollBarThickness = 4
    panel.ScrollBarImageColor3 = CONFIG.COLORS.ACCENT
    panel.CanvasSize = UDim2.new(0, 0, 0, 0)
    panel.AutomaticCanvasSize = Enum.AutomaticSize.Y
    panel.Visible = false
    panel.Parent = RightPanel
    
    local panelLayout = Instance.new("UIListLayout")
    panelLayout.Padding = UDim.new(0, 12)
    panelLayout.SortOrder = Enum.SortOrder.LayoutOrder
    panelLayout.Parent = panel
    
    Categories[name] = {
        Button = btn,
        Panel = panel,
        Indicator = indicator
    }
    
    btn.MouseButton1Click:Connect(function()
        for n, c in pairs(Categories) do
            c.Panel.Visible = false
            c.Indicator.Visible = false
            TweenService:Create(c.Button, TweenInfo.new(0.2), {
                BackgroundColor3 = CONFIG.COLORS.BG
            }):Play()
        end
        
        panel.Visible = true
        indicator.Visible = true
        CurrentCategory = name
        
        TweenService:Create(btn, TweenInfo.new(0.2), {
            BackgroundColor3 = CONFIG.COLORS.ACCENT
        }):Play()
    end)
    
    return panel
end

-- ============================================================
-- MAIN CATEGORY (HOME SCREEN)
-- ============================================================

local MainPanel = CreateCategory("Main", "🏠")

-- Welcome Header
local WelcomeFrame = Instance.new("Frame")
WelcomeFrame.Size = UDim2.new(1, 0, 0, 130)
WelcomeFrame.BackgroundColor3 = CONFIG.COLORS.BG
WelcomeFrame.Parent = MainPanel

local welcomeCorner = Instance.new("UICorner")
welcomeCorner.CornerRadius = UDim.new(0, 12)
welcomeCorner.Parent = WelcomeFrame

local welcomeGrad = Instance.new("UIGradient")
welcomeGrad.Color = ColorSequence.new({
    ColorSequenceKeypoint.new(0, CONFIG.COLORS.BG),
    ColorSequenceKeypoint.new(0.5, Color3.fromRGB(35, 20, 80)),
    ColorSequenceKeypoint.new(1, CONFIG.COLORS.BG)
})
welcomeGrad.Rotation = 90
welcomeGrad.Parent = WelcomeFrame

local welcomeTitle = Instance.new("TextLabel")
welcomeTitle.Size = UDim2.new(1, -20, 0, 40)
welcomeTitle.Position = UDim2.new(0, 10, 0, 15)
welcomeTitle.BackgroundTransparency = 1
welcomeTitle.Text = "Welcome to Quantum Hub"
welcomeTitle.TextColor3 = CONFIG.COLORS.ACCENT_LIGHT
welcomeTitle.TextSize = 24
welcomeTitle.Font = Enum.Font.GothamBold
welcomeTitle.Parent = WelcomeFrame

local welcomeSub = Instance.new("TextLabel")
welcomeSub.Size = UDim2.new(1, -20, 0, 25)
welcomeSub.Position = UDim2.new(0, 10, 0, 55)
welcomeSub.BackgroundTransparency = 1
welcomeSub.Text = "Your Ultimate Roblox Scripting Experience"
welcomeSub.TextColor3 = CONFIG.COLORS.TEXT_DARK
welcomeSub.TextSize = 13
welcomeSub.Font = Enum.Font.Gotham
welcomeSub.Parent = WelcomeFrame

-- Player Info Section
local InfoSection = Instance.new("TextLabel")
InfoSection.Size = UDim2.new(1, -20, 0, 25)
InfoSection.Position = UDim2.new(0, 10, 0, 0)
InfoSection.BackgroundTransparency = 1
InfoSection.Text = "PLAYER INFORMATION"
InfoSection.TextColor3 = CONFIG.COLORS.ACCENT
InfoSection.TextSize = 14
InfoSection.Font = Enum.Font.GothamBold
InfoSection.Parent = MainPanel

-- Info Cards Grid
local InfoFrame = Instance.new("Frame")
InfoFrame.Size = UDim2.new(1, 0, 0, 220)
InfoFrame.BackgroundTransparency = 1
InfoFrame.Parent = MainPanel

local infoLayout = Instance.new("UIGridLayout")
infoLayout.CellSize = UDim2.new(0.48, 0, 0, 100)
infoLayout.CellPadding = UDim2.new(0, 10, 0, 10)
infoLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
infoLayout.Parent = InfoFrame

-- Get device type
local function GetDeviceType()
    if UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled then
        return "Mobile"
    elseif UserInputService.GamepadEnabled then
        return "Console"
    else
        return "PC"
    end
end

-- Create info card function
local function CreateInfoCard(title, value, icon, color)
    local card = Instance.new("Frame")
    card.Size = UDim2.new(1, 0, 1, 0)
    card.BackgroundColor3 = CONFIG.COLORS.BG
    card.BorderSizePixel = 0
    
    local cardCorner = Instance.new("UICorner")
    cardCorner.CornerRadius = UDim.new(0, 10)
    cardCorner.Parent = card
    
    -- Animated border glow
    local border = Instance.new("Frame")
    border.Size = UDim2.new(1, 4, 1, 4)
    border.Position = UDim2.new(0, -2, 0, -2)
    border.BackgroundColor3 = color
    border.BackgroundTransparency = 0.8
    border.BorderSizePixel = 0
    border.ZIndex = -1
    
    local borderCorner = Instance.new("UICorner")
    borderCorner.CornerRadius = UDim.new(0, 12)
    borderCorner.Parent = border
    
    border.Parent = card
    
    -- Pulse border animation
    task.spawn(function()
        while border.Parent do
            TweenService:Create(border, TweenInfo.new(2), {
                BackgroundTransparency = 0.7 + math.random() * 0.15
            }):Play()
            task.wait(2)
        end
    end)
    
    local iconLbl = Instance.new("TextLabel")
    iconLbl.Size = UDim2.new(0, 35, 0, 35)
    iconLbl.Position = UDim2.new(0, 12, 0, 10)
    iconLbl.BackgroundTransparency = 1
    iconLbl.Text = icon
    iconLbl.TextSize = 28
    iconLbl.Parent = card
    
    local titleLbl = Instance.new("TextLabel")
    titleLbl.Size = UDim2.new(1, -20, 0, 18)
    titleLbl.Position = UDim2.new(0, 12, 0, 48)
    titleLbl.BackgroundTransparency = 1
    titleLbl.Text = title
    titleLbl.TextColor3 = CONFIG.COLORS.TEXT_DARK
    titleLbl.TextSize = 11
    titleLbl.Font = Enum.Font.Gotham
    titleLbl.TextXAlignment = Enum.TextXAlignment.Left
    titleLbl.Parent = card
    
    local valueLbl = Instance.new("TextLabel")
    valueLbl.Size = UDim2.new(1, -20, 0, 28)
    valueLbl.Position = UDim2.new(0, 12, 0, 66)
    valueLbl.BackgroundTransparency = 1
    valueLbl.Text = value
    valueLbl.TextColor3 = color
    valueLbl.TextSize = 15
    valueLbl.Font = Enum.Font.GothamBold
    valueLbl.TextXAlignment = Enum.TextXAlignment.Left
    valueLbl.TextWrapped = true
    valueLbl.Parent = card
    
    return card
end

-- Character Name Card
local charName = player.Character and player.Character.Name or "Loading..."
CreateInfoCard("Character Name", charName, "👤", CONFIG.COLORS.ACCENT_LIGHT).Parent = InfoFrame

-- Player Name Card
CreateInfoCard("Player Name", player.Name, "🎮", CONFIG.COLORS.SUCCESS).Parent = InfoFrame

-- Game Name Card
local gameName = "Unknown"
pcall(function()
    gameName = game:GetService("MarketplaceService"):GetProductInfo(game.PlaceId).Name
end)
CreateInfoCard("Current Game", gameName, "🌍", CONFIG.COLORS.WARNING).Parent = InfoFrame

-- Device Type Card
CreateInfoCard("Device Type", GetDeviceType(), "💻", CONFIG.COLORS.ACCENT).Parent = InfoFrame

-- Status Bar
local StatusFrame = Instance.new("Frame")
StatusFrame.Size = UDim2.new(1, 0, 0, 50)
StatusFrame.BackgroundColor3 = CONFIG.COLORS.BG
StatusFrame.Parent = MainPanel

local statusCorner = Instance.new("UICorner")
statusCorner.CornerRadius = UDim.new(0, 10)
statusCorner.Parent = StatusFrame

local statusText = Instance.new("TextLabel")
statusText.Size = UDim2.new(1, -20, 1, 0)
statusText.Position = UDim2.new(0, 10, 0, 0)
statusText.BackgroundTransparency = 1
statusText.Text = "✅ Quantum Hub is ready • Press INSERT to toggle"
statusText.TextColor3 = CONFIG.COLORS.SUCCESS
statusText.TextSize = 13
statusText.Font = Enum.Font.Gotham
statusText.Parent = StatusFrame

-- Update character name when loaded
player.CharacterAdded:Connect(function(char)
    for _, child in pairs(InfoFrame:GetChildren()) do
        if child:IsA("Frame") then
            local labels = {}
            for _, lbl in pairs(child:GetDescendants()) do
                if lbl:IsA("TextLabel") then
                    table.insert(labels, lbl)
                end
            end
            if #labels >= 3 and labels[2].Text == "Character Name" then
                labels[3].Text = char.Name
            end
        end
    end
end)

-- ============================================================
-- EXECUTOR CATEGORY
-- ============================================================

local ExecutorPanel = CreateCategory("Executor", "⚡")

-- Code Editor
local EditorBox = Instance.new("TextBox")
EditorBox.Name = "CodeEditor"
EditorBox.Size = UDim2.new(1, 0, 0, 260)
EditorBox.BackgroundColor3 = Color3.fromRGB(8, 5, 20)
EditorBox.TextColor3 = CONFIG.COLORS.TEXT
EditorBox.TextSize = 13
EditorBox.Font = Enum.Font.Code
EditorBox.TextXAlignment = Enum.TextXAlignment.Left
EditorBox.TextYAlignment = Enum.TextYAlignment.Top
EditorBox.ClearTextOnFocus = false
EditorBox.MultiLine = true
EditorBox.TextWrapped = true
EditorBox.PlaceholderText = "-- Quantum Hub Lua Executor\n-- Write your code here...\n\nprint('Hello, Quantum!')"
EditorBox.Text = ""
EditorBox.Parent = ExecutorPanel

local editorCorner = Instance.new("UICorner")
editorCorner.CornerRadius = UDim.new(0, 10)
editorCorner.Parent = EditorBox

local editorPadding = Instance.new("UIPadding")
editorPadding.PaddingLeft = UDim.new(0, 12)
editorPadding.PaddingTop = UDim.new(0, 12)
editorPadding.PaddingRight = UDim.new(0, 12)
editorPadding.PaddingBottom = UDim.new(0, 12)
editorPadding.Parent = EditorBox

-- Buttons
local EditorButtons = Instance.new("Frame")
EditorButtons.Size = UDim2.new(1, 0, 0, 42)
EditorButtons.BackgroundTransparency = 1
EditorButtons.Parent = ExecutorPanel

local btnLayout = Instance.new("UIListLayout")
btnLayout.FillDirection = Enum.FillDirection.Horizontal
btnLayout.Padding = UDim.new(0, 12)
btnLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
btnLayout.Parent = EditorButtons

-- Execute
local ExecuteBtn = Instance.new("TextButton")
ExecuteBtn.Size = UDim2.new(0, 130, 0, 38)
ExecuteBtn.BackgroundColor3 = CONFIG.COLORS.SUCCESS
ExecuteBtn.Text = "▶ Execute"
ExecuteBtn.TextColor3 = Color3.new(0, 0, 0)
ExecuteBtn.TextSize = 14
ExecuteBtn.Font = Enum.Font.GothamBold
ExecuteBtn.Parent = EditorButtons

local execCorner = Instance.new("UICorner")
execCorner.CornerRadius = UDim.new(0, 10)
execCorner.Parent = ExecuteBtn

-- Clear
local ClearBtn = Instance.new("TextButton")
ClearBtn.Size = UDim2.new(0, 110, 0, 38)
ClearBtn.BackgroundColor3 = CONFIG.COLORS.ERROR
ClearBtn.Text = "🗑 Clear"
ClearBtn.TextColor3 = Color3.new(1, 1, 1)
ClearBtn.TextSize = 14
ClearBtn.Font = Enum.Font.GothamBold
ClearBtn.Parent = EditorButtons

local clearCorner = Instance.new("UICorner")
clearCorner.CornerRadius = UDim.new(0, 10)
clearCorner.Parent = ClearBtn

-- Save
local SaveBtn = Instance.new("TextButton")
SaveBtn.Size = UDim2.new(0, 110, 0, 38)
SaveBtn.BackgroundColor3 = CONFIG.COLORS.ACCENT
SaveBtn.Text = "💾 Save"
SaveBtn.TextColor3 = Color3.new(1, 1, 1)
SaveBtn.TextSize = 14
SaveBtn.Font = Enum.Font.GothamBold
SaveBtn.Parent = EditorButtons

local saveCorner = Instance.new("UICorner")
saveCorner.CornerRadius = UDim.new(0, 10)
saveCorner.Parent = SaveBtn

-- Output Console
local OutputFrame = Instance.new("Frame")
OutputFrame.Name = "Output"
OutputFrame.Size = UDim2.new(1, 0, 0, 130)
OutputFrame.BackgroundColor3 = Color3.fromRGB(5, 3, 12)
OutputFrame.BorderSizePixel = 0
OutputFrame.Parent = ExecutorPanel

local outputCorner = Instance.new("UICorner")
outputCorner.CornerRadius = UDim.new(0, 10)
outputCorner.Parent = OutputFrame

local OutputLabel = Instance.new("TextLabel")
OutputLabel.Name = "OutputText"
OutputLabel.Size = UDim2.new(1, -20, 1, -20)
OutputLabel.Position = UDim2.new(0, 10, 0, 10)
OutputLabel.BackgroundTransparency = 1
OutputLabel.Text = "> Quantum Hub " .. CONFIG.VERSION .. " Ready...\n> Waiting for code execution..."
OutputLabel.TextColor3 = CONFIG.COLORS.SUCCESS
OutputLabel.TextSize = 12
OutputLabel.Font = Enum.Font.Code
OutputLabel.TextXAlignment = Enum.TextXAlignment.Left
OutputLabel.TextYAlignment = Enum.TextYAlignment.Top
OutputLabel.TextWrapped = true
OutputLabel.Parent = OutputFrame

-- Executor Functions
ExecuteBtn.MouseButton1Click:Connect(function()
    local code = EditorBox.Text
    if code and code ~= "" then
        OutputLabel.Text = "> Executing code..."
        OutputLabel.TextColor3 = CONFIG.COLORS.WARNING
        
        local success, result = pcall(function()
            local func = loadstring(code)
            if func then
                return func()
            else
                error("Failed to load code")
            end
        end)
        
        if success then
            OutputLabel.Text = "> ✓ Execution successful!\n> Result: " .. tostring(result or "nil")
            OutputLabel.TextColor3 = CONFIG.COLORS.SUCCESS
            Notify("Success", "Code executed successfully!", "success")
        else
            OutputLabel.Text = "> ✗ Error:\n> " .. tostring(result)
            OutputLabel.TextColor3 = CONFIG.COLORS.ERROR
            Notify("Error", tostring(result), "error")
        end
    else
        OutputLabel.Text = "> ⚠ Please enter code first!"
        OutputLabel.TextColor3 = CONFIG.COLORS.WARNING
        Notify("Warning", "Please enter code first!", "warning")
    end
end)

ClearBtn.MouseButton1Click:Connect(function()
    EditorBox.Text = ""
    OutputLabel.Text = "> Editor cleared."
    OutputLabel.TextColor3 = CONFIG.COLORS.TEXT_DARK
    Notify("Cleared", "Editor has been cleared", "info")
end)

SaveBtn.MouseButton1Click:Connect(function()
    local code = EditorBox.Text
    if code ~= "" then
        if not _G.QuantumHubSaved then _G.QuantumHubSaved = {} end
        table.insert(_G.QuantumHubSaved, {
            code = code,
            time = os.time()
        })
        OutputLabel.Text = "> 💾 Code saved to memory!\n> Total saved: " .. #_G.QuantumHubSaved
        OutputLabel.TextColor3 = CONFIG.COLORS.ACCENT_LIGHT
        Notify("Saved", "Code saved to memory", "success")
    end
end)

-- ============================================================
-- SCRIPTS CATEGORY
-- ============================================================

local ScriptsPanel = CreateCategory("Scripts", "📜")

local function CreateScriptButton(name, description, code)
    local card = Instance.new("Frame")
    card.Size = UDim2.new(1, 0, 0, 90)
    card.BackgroundColor3 = CONFIG.COLORS.BG
    card.BorderSizePixel = 0
    card.Parent = ScriptsPanel
    
    local cardCorner = Instance.new("UICorner")
    cardCorner.CornerRadius = UDim.new(0, 10)
    cardCorner.Parent = card
    
    -- Hover
    card.MouseEnter:Connect(function()
        TweenService:Create(card, TweenInfo.new(0.2), {
            BackgroundColor3 = Color3.fromRGB(25, 15, 60)
        }):Play()
    end)
    
    card.MouseLeave:Connect(function()
        TweenService:Create(card, TweenInfo.new(0.2), {
            BackgroundColor3 = CONFIG.COLORS.BG
        }):Play()
    end)
    
    local nameLbl = Instance.new("TextLabel")
    nameLbl.Size = UDim2.new(1, -20, 0, 28)
    nameLbl.Position = UDim2.new(0, 12, 0, 8)
    nameLbl.BackgroundTransparency = 1
    nameLbl.Text = name
    nameLbl.TextColor3 = CONFIG.COLORS.ACCENT_LIGHT
    nameLbl.TextSize = 16
    nameLbl.Font = Enum.Font.GothamBold
    nameLbl.TextXAlignment = Enum.TextXAlignment.Left
    nameLbl.Parent = card
    
    local descLbl = Instance.new("TextLabel")
    descLbl.Size = UDim2.new(1, -20, 0, 22)
    descLbl.Position = UDim2.new(0, 12, 0, 35)
    descLbl.BackgroundTransparency = 1
    descLbl.Text = description
    descLbl.TextColor3 = CONFIG.COLORS.TEXT_DARK
    descLbl.TextSize = 12
    descLbl.Font = Enum.Font.Gotham
    descLbl.TextXAlignment = Enum.TextXAlignment.Left
    descLbl.Parent = card
    
    local loadBtn = Instance.new("TextButton")
    loadBtn.Size = UDim2.new(0, 90, 0, 28)
    loadBtn.Position = UDim2.new(1, -102, 0, 52)
    loadBtn.BackgroundColor3 = CONFIG.COLORS.ACCENT
    loadBtn.Text = "Load"
    loadBtn.TextColor3 = Color3.new(1, 1, 1)
    loadBtn.TextSize = 12
    loadBtn.Font = Enum.Font.GothamBold
    loadBtn.Parent = card
    
    local loadCorner = Instance.new("UICorner")
    loadCorner.CornerRadius = UDim.new(0, 8)
    loadCorner.Parent = loadBtn
    
    loadBtn.MouseButton1Click:Connect(function()
        EditorBox.Text = code
        Categories["Executor"].Button.MouseButton1Click:Fire()
        OutputLabel.Text = "> Loaded: " .. name .. "\n> Go to Executor tab to run!"
        OutputLabel.TextColor3 = CONFIG.COLORS.ACCENT_LIGHT
        Notify("Script Loaded", name .. " copied to Executor!", "success")
    end)
    
    return card
end

CreateScriptButton("Infinite Yield", "Admin commands script", [[
loadstring(game:HttpGet("https://raw.githubusercontent.com/EdgeIY/infiniteyield/master/source"))()
]])

CreateScriptButton("Dex Explorer", "Game explorer tool", [[
loadstring(game:HttpGet("https://raw.githubusercontent.com/peyton2465/Dex/master/out.lua"))()
]])

CreateScriptButton("Fly Script", "Enable flying ability", [[
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local hrp = char:WaitForChild("HumanoidRootPart")
local flying = true
local speed = 50
local bg = Instance.new("BodyGyro")
bg.P = 9e4
bg.MaxTorque = Vector3.new(9e9, 9e9, 9e9)
bg.CFrame = hrp.CFrame
bg.Parent = hrp
local bv = Instance.new("BodyVelocity")
bv.Velocity = Vector3.new(0, 0, 0)
bv.MaxForce = Vector3.new(9e9, 9e9, 9e9)
bv.Parent = hrp
game:GetService("RunService").RenderStepped:Connect(function()
    if flying then
        local cam = workspace.CurrentCamera
        bv.Velocity = cam.CFrame.LookVector * speed
        bg.CFrame = cam.CFrame
    end
end)
]])

CreateScriptButton("Speed Hack", "Walk faster", [[
local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local humanoid = char:WaitForChild("Humanoid")
humanoid.WalkSpeed = 100
print("Speed set to 100!")
]])

CreateScriptButton("Jump Power", "Super jump ability", [[
local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local humanoid = char:WaitForChild("Humanoid")
humanoid.JumpPower = 120
print("Jump power set to 120!")
]])

CreateScriptButton("Noclip", "Walk through walls", [[
local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
game:GetService("RunService").Stepped:Connect(function()
    if char then
        for _, part in pairs(char:GetDescendants()) do
            if part:IsA("BasePart") then
                part.CanCollide = false
            end
        end
    end
end)
]])

-- ============================================================
-- TOOLS CATEGORY
-- ============================================================

local ToolsPanel = CreateCategory("Tools", "🛠️")

local function CreateToggle(name, callback)
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, 0, 0, 50)
    frame.BackgroundColor3 = CONFIG.COLORS.BG
    frame.Parent = ToolsPanel
    
    local frameCorner = Instance.new("UICorner")
    frameCorner.CornerRadius = UDim.new(0, 10)
    frameCorner.Parent = frame
    
    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0, 220, 1, 0)
    label.Position = UDim2.new(0, 12, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = name
    label.TextColor3 = CONFIG.COLORS.TEXT
    label.TextSize = 14
    label.Font = Enum.Font.GothamSemibold
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = frame
    
    local toggleBtn = Instance.new("TextButton")
    toggleBtn.Size = UDim2.new(0, 55, 0, 28)
    toggleBtn.Position = UDim2.new(1, -67, 0.5, -14)
    toggleBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
    toggleBtn.Text = ""
    toggleBtn.AutoButtonColor = false
    toggleBtn.Parent = frame
    
    local toggleCorner = Instance.new("UICorner")
    toggleCorner.CornerRadius = UDim.new(1, 0)
    toggleCorner.Parent = toggleBtn
    
    local circle = Instance.new("Frame")
    circle.Size = UDim2.new(0, 24, 0, 24)
    circle.Position = UDim2.new(0, 2, 0.5, -12)
    circle.BackgroundColor3 = Color3.new(1, 1, 1)
    circle.BorderSizePixel = 0
    circle.Parent = toggleBtn
    
    local circleCorner = Instance.new("UICorner")
    circleCorner.CornerRadius = UDim.new(1, 0)
    circleCorner.Parent = circle
    
    local enabled = false
    toggleBtn.MouseButton1Click:Connect(function()
        enabled = not enabled
        if enabled then
            TweenService:Create(toggleBtn, TweenInfo.new(0.25), {BackgroundColor3 = CONFIG.COLORS.SUCCESS}):Play()
            TweenService:Create(circle, TweenInfo.new(0.25), {Position = UDim2.new(0, 29, 0.5, -12)}):Play()
            Notify("Enabled", name .. " is now ON", "success")
        else
            TweenService:Create(toggleBtn, TweenInfo.new(0.25), {BackgroundColor3 = Color3.fromRGB(50, 50, 50)}):Play()
            TweenService:Create(circle, TweenInfo.new(0.25), {Position = UDim2.new(0, 2, 0.5, -12)}):Play()
            Notify("Disabled", name .. " is now OFF", "warning")
        end
        if callback then callback(enabled) end
    end)
    
    return frame
end

CreateToggle("Click Teleport", function(enabled)
    if enabled then
        local tool = Instance.new("Tool")
        tool.Name = "Click TP"
        tool.RequiresHandle = false
        tool.Parent = player.Backpack
        tool.Activated:Connect(function()
            local mouse = player:GetMouse()
            if mouse.Hit then
                local char = player.Character
                if char and char:FindFirstChild("HumanoidRootPart") then
                    char.HumanoidRootPart.CFrame = CFrame.new(mouse.Hit.Position + Vector3.new(0, 3, 0))
                end
            end
        end)
    end
end)

CreateToggle("Infinite Jump", function(enabled)
    _G.InfJump = enabled
    if enabled then
        game:GetService("UserInputService").JumpRequest:Connect(function()
            if _G.InfJump then
                local char = player.Character
                if char and char:FindFirstChild("Humanoid") then
                    char.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
                end
            end
        end)
    end
end)

CreateToggle("No Clip", function(enabled)
    _G.NoClip = enabled
    if enabled then
        game:GetService("RunService").Stepped:Connect(function()
            if _G.NoClip then
                local char = player.Character
                if char then
                    for _, part in pairs(char:GetDescendants()) do
                        if part:IsA("BasePart") then
                            part.CanCollide = false
                        end
                    end
                end
            end
        end)
    end
end)

-- ============================================================
-- ESP CATEGORY
-- ============================================================

local ESPPanel = CreateCategory("ESP", "👁️")

local ESPFrame = Instance.new("Frame")
ESPFrame.Size = UDim2.new(1, 0, 0, 220)
ESPFrame.BackgroundColor3 = CONFIG.COLORS.BG
ESPFrame.Parent = ESPPanel

local espCorner = Instance.new("UICorner")
espCorner.CornerRadius = UDim.new(0, 10)
espCorner.Parent = ESPFrame

local ESPButton = Instance.new("TextButton")
ESPButton.Size = UDim2.new(0, 220, 0, 45)
ESPButton.Position = UDim2.new(0.5, -110, 0, 25)
ESPButton.BackgroundColor3 = CONFIG.COLORS.ACCENT
ESPButton.Text = "Toggle ESP"
ESPButton.TextColor3 = Color3.new(1, 1, 1)
ESPButton.TextSize = 16
ESPButton.Font = Enum.Font.GothamBold
ESPButton.Parent = ESPFrame

local espBtnCorner = Instance.new("UICorner")
espBtnCorner.CornerRadius = UDim.new(0, 10)
espBtnCorner.Parent = ESPButton

local ESPStatus = Instance.new("TextLabel")
ESPStatus.Size = UDim2.new(1, -20, 0, 25)
ESPStatus.Position = UDim2.new(0, 10, 0, 85)
ESPStatus.BackgroundTransparency = 1
ESPStatus.Text = "Status: OFF"
ESPStatus.TextColor3 = CONFIG.COLORS.ERROR
ESPStatus.TextSize = 14
ESPStatus.Font = Enum.Font.GothamSemibold
ESPStatus.Parent = ESPFrame

local ESPInfo = Instance.new("TextLabel")
ESPInfo.Size = UDim2.new(1, -20, 0, 80)
ESPInfo.Position = UDim2.new(0, 10, 0, 120)
ESPInfo.BackgroundTransparency = 1
ESPInfo.Text = "ESP allows you to see other players through walls.\n• Player names\n• Distance info\n• Highlight outlines"
ESPInfo.TextColor3 = CONFIG.COLORS.TEXT_DARK
ESPInfo.TextSize = 12
ESPInfo.Font = Enum.Font.Gotham
ESPInfo.TextWrapped = true
ESPInfo.Parent = ESPFrame

local ESPEnabled = false
ESPButton.MouseButton1Click:Connect(function()
    ESPEnabled = not ESPEnabled
    if ESPEnabled then
        ESPButton.Text = "ESP: ON"
        ESPButton.BackgroundColor3 = CONFIG.COLORS.SUCCESS
        ESPStatus.Text = "Status: ON"
        ESPStatus.TextColor3 = CONFIG.COLORS.SUCCESS
        Notify("ESP Enabled", "Player ESP is now active", "success")
        
        for _, otherPlayer in pairs(Players:GetPlayers()) do
            if otherPlayer ~= player and otherPlayer.Character then
                local char = otherPlayer.Character
                local head = char:FindFirstChild("Head")
                if head and not head:FindFirstChild("ESP") then
                    local esp = Instance.new("BillboardGui")
                    esp.Name = "ESP"
                    esp.Size = UDim2.new(0, 100, 0, 40)
                    esp.AlwaysOnTop = true
                    esp.StudsOffset = Vector3.new(0, 2, 0)
                    esp.Parent = head
                    
                    local nameLabel = Instance.new("TextLabel")
                    nameLabel.Size = UDim2.new(1, 0, 0.5, 0)
                    nameLabel.BackgroundTransparency = 1
                    nameLabel.Text = otherPlayer.Name
                    nameLabel.TextColor3 = CONFIG.COLORS.ACCENT_LIGHT
                    nameLabel.TextSize = 14
                    nameLabel.Font = Enum.Font.GothamBold
                    nameLabel.Parent = esp
                    
                    local distLabel = Instance.new("TextLabel")
                    distLabel.Size = UDim2.new(1, 0, 0.5, 0)
                    distLabel.Position = UDim2.new(0, 0, 0.5, 0)
                    distLabel.BackgroundTransparency = 1
                    distLabel.Text = "Distance: calculating..."
                    distLabel.TextColor3 = CONFIG.COLORS.TEXT
                    distLabel.TextSize = 12
                    distLabel.Font = Enum.Font.Gotham
                    distLabel.Parent = esp
                    
                    local highlight = Instance.new("Highlight")
                    highlight.Name = "QuantumESP"
                    highlight.FillColor = CONFIG.COLORS.ACCENT
                    highlight.OutlineColor = CONFIG.COLORS.ACCENT_LIGHT
                    highlight.FillTransparency = 0.8
                    highlight.Parent = char
                end
            end
        end
    else
        ESPButton.Text = "ESP: OFF"
        ESPButton.BackgroundColor3 = CONFIG.COLORS.ACCENT
        ESPStatus.Text = "Status: OFF"
        ESPStatus.TextColor3 = CONFIG.COLORS.ERROR
        Notify("ESP Disabled", "Player ESP turned off", "warning")
        
        for _, otherPlayer in pairs(Players:GetPlayers()) do
            if otherPlayer.Character then
                local head = otherPlayer.Character:FindFirstChild("Head")
                if head then
                    local esp = head:FindFirstChild("ESP")
                    if esp then esp:Destroy() end
                end
                local highlight = otherPlayer.Character:FindFirstChild("QuantumESP")
                if highlight then highlight:Destroy() end
            end
        end
    end
end)

-- ============================================================
-- TELEPORT CATEGORY
-- ============================================================

local TeleportPanel = CreateCategory("Teleport", "🚀")

local TPFrame = Instance.new("Frame")
TPFrame.Size = UDim2.new(1, 0, 0, 280)
TPFrame.BackgroundColor3 = CONFIG.COLORS.BG
TPFrame.Parent = TeleportPanel

local tpCorner = Instance.new("UICorner")
tpCorner.CornerRadius = UDim.new(0, 10)
tpCorner.Parent = TPFrame

local TPLabel = Instance.new("TextLabel")
TPLabel.Size = UDim2.new(1, -20, 0, 30)
TPLabel.Position = UDim2.new(0, 12, 0, 12)
TPLabel.BackgroundTransparency = 1
TPLabel.Text = "Teleport to Player"
TPLabel.TextColor3 = CONFIG.COLORS.ACCENT_LIGHT
TPLabel.TextSize = 18
TPLabel.Font = Enum.Font.GothamBold
TPLabel.Parent = TPFrame

local TPInput = Instance.new("TextBox")
TPInput.Size = UDim2.new(1, -24, 0, 38)
TPInput.Position = UDim2.new(0, 12, 0, 50)
TPInput.BackgroundColor3 = CONFIG.COLORS.SECONDARY
TPInput.TextColor3 = CONFIG.COLORS.TEXT
TPInput.PlaceholderText = "Enter player name..."
TPInput.TextSize = 14
TPInput.Font = Enum.Font.Gotham
TPInput.Parent = TPFrame

local tpInputCorner = Instance.new("UICorner")
tpInputCorner.CornerRadius = UDim.new(0, 8)
tpInputCorner.Parent = TPInput

local TPGotoBtn = Instance.new("TextButton")
TPGotoBtn.Size = UDim2.new(0, 160, 0, 38)
TPGotoBtn.Position = UDim2.new(0.5, -80, 0, 100)
TPGotoBtn.BackgroundColor3 = CONFIG.COLORS.ACCENT
TPGotoBtn.Text = "Teleport"
TPGotoBtn.TextColor3 = Color3.new(1, 1, 1)
TPGotoBtn.TextSize = 14
TPGotoBtn.Font = Enum.Font.GothamBold
TPGotoBtn.Parent = TPFrame

local tpGotoCorner = Instance.new("UICorner")
tpGotoCorner.CornerRadius = UDim.new(0, 10)
tpGotoCorner.Parent = TPGotoBtn

TPGotoBtn.MouseButton1Click:Connect(function()
    local targetName = TPInput.Text
    if targetName ~= "" then
        local target = Players:FindFirstChild(targetName)
        if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
            local char = player.Character
            if char and char:FindFirstChild("HumanoidRootPart") then
                char.HumanoidRootPart.CFrame = target.Character.HumanoidRootPart.CFrame
                Notify("Teleported", "Moved to " .. targetName, "success")
            end
        else
            Notify("Error", "Player not found!", "error")
        end
    end
end)

local TPRandomBtn = Instance.new("TextButton")
TPRandomBtn.Size = UDim2.new(0, 160, 0, 38)
TPRandomBtn.Position = UDim2.new(0.5, -80, 0, 155)
TPRandomBtn.BackgroundColor3 = CONFIG.COLORS.WARNING
TPRandomBtn.Text = "Random Teleport"
TPRandomBtn.TextColor3 = Color3.new(0, 0, 0)
TPRandomBtn.TextSize = 14
TPRandomBtn.Font = Enum.Font.GothamBold
TPRandomBtn.Parent = TPFrame

local tpRandomCorner = Instance.new("UICorner")
tpRandomCorner.CornerRadius = UDim.new(0, 10)
tpRandomCorner.Parent = TPRandomBtn

TPRandomBtn.MouseButton1Click:Connect(function()
    local char = player.Character
    if char and char:FindFirstChild("HumanoidRootPart") then
        local randomPos = Vector3.new(
            math.random(-500, 500),
            math.random(50, 200),
            math.random(-500, 500)
        )
        char.HumanoidRootPart.CFrame = CFrame.new(randomPos)
        Notify("Teleported", "Random location reached!", "success")
    end
end)

local TPBackBtn = Instance.new("TextButton")
TPBackBtn.Size = UDim2.new(0, 160, 0, 38)
TPBackBtn.Position = UDim2.new(0.5, -80, 0, 210)
TPBackBtn.BackgroundColor3 = CONFIG.COLORS.ACCENT
TPBackBtn.Text = "Reset Position"
TPBackBtn.TextColor3 = Color3.new(1, 1, 1)
TPBackBtn.TextSize = 14
TPBackBtn.Font = Enum.Font.GothamBold
TPBackBtn.Parent = TPFrame

local tpBackCorner = Instance.new("UICorner")
tpBackCorner.CornerRadius = UDim.new(0, 10)
tpBackCorner.Parent = TPBackBtn

local lastPosition = nil
TPBackBtn.MouseButton1Click:Connect(function()
    local char = player.Character
    if char and char:FindFirstChild("HumanoidRootPart") then
        if lastPosition then
            char.HumanoidRootPart.CFrame = lastPosition
            Notify("Reset", "Position restored!", "success")
        else
            lastPosition = char.HumanoidRootPart.CFrame
            Notify("Saved", "Current position saved!", "info")
        end
    end
end)

-- ============================================================
-- PLAYER CATEGORY
-- ============================================================

local PlayerPanel = CreateCategory("Player", "👤")

local PlayerFrame = Instance.new("Frame")
PlayerFrame.Size = UDim2.new(1, 0, 0, 320)
PlayerFrame.BackgroundColor3 = CONFIG.COLORS.BG
PlayerFrame.Parent = PlayerPanel

local playerCorner = Instance.new("UICorner")
playerCorner.CornerRadius = UDim.new(0, 10)
playerCorner.Parent = PlayerFrame

-- WalkSpeed
local WalkSpeedLabel = Instance.new("TextLabel")
WalkSpeedLabel.Size = UDim2.new(1, -20, 0, 25)
WalkSpeedLabel.Position = UDim2.new(0, 12, 0, 12)
WalkSpeedLabel.BackgroundTransparency = 1
WalkSpeedLabel.Text = "WalkSpeed: 16"
WalkSpeedLabel.TextColor3 = CONFIG.COLORS.TEXT
WalkSpeedLabel.TextSize = 14
WalkSpeedLabel.Font = Enum.Font.GothamSemibold
WalkSpeedLabel.Parent = PlayerFrame

local WalkSpeedSlider = Instance.new("TextButton")
WalkSpeedSlider.Size = UDim2.new(1, -24, 0, 22)
WalkSpeedSlider.Position = UDim2.new(0, 12, 0, 40)
WalkSpeedSlider.BackgroundColor3 = CONFIG.COLORS.SECONDARY
WalkSpeedSlider.Text = ""
WalkSpeedSlider.Parent = PlayerFrame

local walkSliderCorner = Instance.new("UICorner")
walkSliderCorner.CornerRadius = UDim.new(1, 0)
walkSliderCorner.Parent = WalkSpeedSlider

local WalkSliderFill = Instance.new("Frame")
WalkSliderFill.Size = UDim2.new(0.16, 0, 1, 0)
WalkSliderFill.BackgroundColor3 = CONFIG.COLORS.ACCENT
WalkSliderFill.BorderSizePixel = 0
WalkSliderFill.Parent = WalkSpeedSlider

local walkFillCorner = Instance.new("UICorner")
walkFillCorner.CornerRadius = UDim.new(1, 0)
walkFillCorner.Parent = WalkSliderFill

WalkSpeedSlider.MouseButton1Click:Connect(function()
    local char = player.Character
    if char and char:FindFirstChild("Humanoid") then
        local newSpeed = math.random(16, 200)
        char.Humanoid.WalkSpeed = newSpeed
        WalkSpeedLabel.Text = "WalkSpeed: " .. newSpeed
        TweenService:Create(WalkSliderFill, TweenInfo.new(0.3), {
            Size = UDim2.new(newSpeed/200, 0, 1, 0)
        }):Play()
        Notify("Speed Changed", "WalkSpeed set to " .. newSpeed, "success")
    end
end)

-- JumpPower
local JumpLabel = Instance.new("TextLabel")
JumpLabel.Size = UDim2.new(1, -20, 0, 25)
JumpLabel.Position = UDim2.new(0, 12, 0, 80)
JumpLabel.BackgroundTransparency = 1
JumpLabel.Text = "JumpPower: 50"
JumpLabel.TextColor3 = CONFIG.COLORS.TEXT
JumpLabel.TextSize = 14
JumpLabel.Font = Enum.Font.GothamSemibold
JumpLabel.Parent = PlayerFrame

local JumpSlider = Instance.new("TextButton")
JumpSlider.Size = UDim2.new(1, -24, 0, 22)
JumpSlider.Position = UDim2.new(0, 12, 0, 108)
JumpSlider.BackgroundColor3 = CONFIG.COLORS.SECONDARY
JumpSlider.Text = ""
JumpSlider.Parent = PlayerFrame

local jumpSliderCorner = Instance.new("UICorner")
jumpSliderCorner.CornerRadius = UDim.new(1, 0)
jumpSliderCorner.Parent = JumpSlider

local JumpSliderFill = Instance.new("Frame")
JumpSliderFill.Size = UDim2.new(0.25, 0, 1, 0)
JumpSliderFill.BackgroundColor3 = CONFIG.COLORS.ACCENT
JumpSliderFill.BorderSizePixel = 0
JumpSliderFill.Parent = JumpSlider

local jumpFillCorner = Instance.new("UICorner")
jumpFillCorner.CornerRadius = UDim.new(1, 0)
jumpFillCorner.Parent = JumpSliderFill

JumpSlider.MouseButton1Click:Connect(function()
    local char = player.Character
    if char and char:FindFirstChild("Humanoid") then
        local newJump = math.random(50, 200)
        char.Humanoid.JumpPower = newJump
        JumpLabel.Text = "JumpPower: " .. newJump
        TweenService:Create(JumpSliderFill, TweenInfo.new(0.3), {
            Size = UDim2.new(newJump/200, 0, 1, 0)
        }):Play()
        Notify("Jump Changed", "JumpPower set to " .. newJump, "success")
    end
end)

-- Action Buttons
local HealBtn = Instance.new("TextButton")
HealBtn.Size = UDim2.new(0, 160, 0, 38)
HealBtn.Position = UDim2.new(0.5, -165, 0, 160)
HealBtn.BackgroundColor3 = CONFIG.COLORS.SUCCESS
HealBtn.Text = "Full Heal"
HealBtn.TextColor3 = Color3.new(0, 0, 0)
HealBtn.TextSize = 14
HealBtn.Font = Enum.Font.GothamBold
HealBtn.Parent = PlayerFrame

local healCorner = Instance.new("UICorner")
healCorner.CornerRadius = UDim.new(0, 10)
healCorner.Parent = HealBtn

HealBtn.MouseButton1Click:Connect(function()
    local char = player.Character
    if char and char:FindFirstChild("Humanoid") then
        char.Humanoid.Health = char.Humanoid.MaxHealth
        Notify("Healed", "Health restored to full!", "success")
    end
end)

local GodBtn = Instance.new("TextButton")
GodBtn.Size = UDim2.new(0, 160, 0, 38)
GodBtn.Position = UDim2.new(0.5, 5, 0, 160)
GodBtn.BackgroundColor3 = CONFIG.COLORS.ERROR
GodBtn.Text = "God Mode"
GodBtn.TextColor3 = Color3.new(1, 1, 1)
GodBtn.TextSize = 14
GodBtn.Font = Enum.Font.GothamBold
GodBtn.Parent = PlayerFrame

local godCorner = Instance.new("UICorner")
godCorner.CornerRadius = UDim.new(0, 10)
godCorner.Parent = GodBtn

GodBtn.MouseButton1Click:Connect(function()
    local char = player.Character
    if char and char:FindFirstChild("Humanoid") then
        char.Humanoid.MaxHealth = math.huge
        char.Humanoid.Health = math.huge
        Notify("God Mode", "You are now invincible!", "success")
    end
end)

local ResetCharBtn = Instance.new("TextButton")
ResetCharBtn.Size = UDim2.new(0, 330, 0, 38)
ResetCharBtn.Position = UDim2.new(0.5, -165, 0, 215)
ResetCharBtn.BackgroundColor3 = CONFIG.COLORS.WARNING
ResetCharBtn.Text = "Reset Character"
ResetCharBtn.TextColor3 = Color3.new(0, 0, 0)
ResetCharBtn.TextSize = 14
ResetCharBtn.Font = Enum.Font.GothamBold
ResetCharBtn.Parent = PlayerFrame

local resetCorner2 = Instance.new("UICorner")
resetCorner2.CornerRadius = UDim.new(0, 10)
resetCorner2.Parent = ResetCharBtn

ResetCharBtn.MouseButton1Click:Connect(function()
    local char = player.Character
    if char then
        char:BreakJoints()
        Notify("Reset", "Character reset!", "info")
    end
end)

-- ============================================================
-- SETTINGS CATEGORY
-- ============================================================

local SettingsPanel = CreateCategory("Settings", "⚙️")

local SettingsFrame = Instance.new("Frame")
SettingsFrame.Size = UDim2.new(1, 0, 0, 250)
SettingsFrame.BackgroundColor3 = CONFIG.COLORS.BG
SettingsFrame.Parent = SettingsPanel

local settingsCorner = Instance.new("UICorner")
settingsCorner.CornerRadius = UDim.new(0, 10)
settingsCorner.Parent = SettingsFrame

local SettingsTitle = Instance.new("TextLabel")
SettingsTitle.Size = UDim2.new(1, -20, 0, 30)
SettingsTitle.Position = UDim2.new(0, 12, 0, 12)
SettingsTitle.BackgroundTransparency = 1
SettingsTitle.Text = "Settings"
SettingsTitle.TextColor3 = CONFIG.COLORS.ACCENT_LIGHT
SettingsTitle.TextSize = 18
SettingsTitle.Font = Enum.Font.GothamBold
SettingsTitle.Parent = SettingsFrame

local ResetGUIBtn = Instance.new("TextButton")
ResetGUIBtn.Size = UDim2.new(0, 200, 0, 40)
ResetGUIBtn.Position = UDim2.new(0.5, -100, 0, 60)
ResetGUIBtn.BackgroundColor3 = CONFIG.COLORS.ACCENT
ResetGUIBtn.Text = "Reset GUI Position"
ResetGUIBtn.TextColor3 = Color3.new(1, 1, 1)
ResetGUIBtn.TextSize = 14
ResetGUIBtn.Font = Enum.Font.GothamBold
ResetGUIBtn.Parent = SettingsFrame

local resetGUICorner = Instance.new("UICorner")
resetGUICorner.CornerRadius = UDim.new(0, 10)
resetGUICorner.Parent = ResetGUIBtn

ResetGUIBtn.MouseButton1Click:Connect(function()
    MainShadow.Size = UDim2.new(0, 750, 0, 480)
    MainShadow.Position = UDim2.new(0.5, -375, 0.5, -240)
    MainShadow.Visible = true
    FloatingBubble.Visible = false
    Notify("Reset", "GUI position reset!", "success")
end)

local DestroyBtn = Instance.new("TextButton")
DestroyBtn.Size = UDim2.new(0, 200, 0, 40)
DestroyBtn.Position = UDim2.new(0.5, -100, 0, 115)
DestroyBtn.BackgroundColor3 = CONFIG.COLORS.ERROR
DestroyBtn.Text = "Destroy GUI"
DestroyBtn.TextColor3 = Color3.new(1, 1, 1)
DestroyBtn.TextSize = 14
DestroyBtn.Font = Enum.Font.GothamBold
DestroyBtn.Parent = SettingsFrame

local destroyCorner = Instance.new("UICorner")
destroyCorner.CornerRadius = UDim.new(0, 10)
destroyCorner.Parent = DestroyBtn

DestroyBtn.MouseButton1Click:Connect(function()
    ScreenGui:Destroy()
end)

local Credits = Instance.new("TextLabel")
Credits.Size = UDim2.new(1, -20, 0, 50)
Credits.Position = UDim2.new(0, 10, 0, 175)
Credits.BackgroundTransparency = 1
Credits.Text = "Quantum Hub " .. CONFIG.VERSION .. "\nMade with 💜 for Roblox"
Credits.TextColor3 = CONFIG.COLORS.TEXT_DARK
Credits.TextSize = 12
Credits.Font = Enum.Font.Gotham
Credits.TextWrapped = true
Credits.Parent = SettingsFrame

-- ============================================================
-- QUANTUM AI CATEGORY
-- ============================================================

local AIPanel = CreateCategory("Quantum AI", "🤖")

local AIFrame = Instance.new("Frame")
AIFrame.Size = UDim2.new(1, 0, 0, 280)
AIFrame.BackgroundColor3 = CONFIG.COLORS.BG
AIFrame.Parent = AIPanel

local aiCorner = Instance.new("UICorner")
aiCorner.CornerRadius = UDim.new(0, 10)
aiCorner.Parent = AIFrame

local AIChat = Instance.new("ScrollingFrame")
AIChat.Name = "Chat"
AIChat.Size = UDim2.new(1, -20, 0, 200)
AIChat.Position = UDim2.new(0, 10, 0, 10)
AIChat.BackgroundColor3 = Color3.fromRGB(5, 3, 12)
AIChat.ScrollBarThickness = 4
AIChat.ScrollBarImageColor3 = CONFIG.COLORS.ACCENT
AIChat.AutomaticCanvasSize = Enum.AutomaticSize.Y
AIChat.Parent = AIFrame

local aiChatCorner = Instance.new("UICorner")
aiChatCorner.CornerRadius = UDim.new(0, 8)
aiChatCorner.Parent = AIChat

local aiChatLayout = Instance.new("UIListLayout")
aiChatLayout.Padding = UDim.new(0, 8)
aiChatLayout.SortOrder = Enum.SortOrder.LayoutOrder
aiChatLayout.Parent = AIChat

local AIInput = Instance.new("TextBox")
AIInput.Size = UDim2.new(1, -100, 0, 38)
AIInput.Position = UDim2.new(0, 10, 0, 220)
AIInput.BackgroundColor3 = CONFIG.COLORS.SECONDARY
AIInput.TextColor3 = CONFIG.COLORS.TEXT
AIInput.PlaceholderText = "Ask Quantum AI..."
AIInput.TextSize = 14
AIInput.Font = Enum.Font.Gotham
AIInput.Parent = AIFrame

local aiInputCorner = Instance.new("UICorner")
aiInputCorner.CornerRadius = UDim.new(0, 8)
aiInputCorner.Parent = AIInput

local AISendBtn = Instance.new("TextButton")
AISendBtn.Size = UDim2.new(0, 80, 0, 38)
AISendBtn.Position = UDim2.new(1, -90, 0, 220)
AISendBtn.BackgroundColor3 = CONFIG.COLORS.ACCENT
AISendBtn.Text = "Send"
AISendBtn.TextColor3 = Color3.new(1, 1, 1)
AISendBtn.TextSize = 14
AISendBtn.Font = Enum.Font.GothamBold
AISendBtn.Parent = AIFrame

local aiSendCorner = Instance.new("UICorner")
aiSendCorner.CornerRadius = UDim.new(0, 8)
aiSendCorner.Parent = AISendBtn

local function AddMessage(text, isUser)
    local msg = Instance.new("Frame")
    msg.Size = UDim2.new(1, -20, 0, 0)
    msg.AutomaticSize = Enum.AutomaticSize.Y
    msg.BackgroundTransparency = 1
    msg.Parent = AIChat
    
    local msgBg = Instance.new("Frame")
    msgBg.Size = UDim2.new(0, 0, 0, 0)
    msgBg.AutomaticSize = Enum.AutomaticSize.XY
    msgBg.BackgroundColor3 = isUser and CONFIG.COLORS.ACCENT or CONFIG.COLORS.SECONDARY
    msgBg.Parent = msg
    
    local msgCorner = Instance.new("UICorner")
    msgCorner.CornerRadius = UDim.new(0, 10)
    msgCorner.Parent = msgBg
    
    local msgText = Instance.new("TextLabel")
    msgText.Size = UDim2.new(0, 0, 0, 0)
    msgText.AutomaticSize = Enum.AutomaticSize.XY
    msgText.BackgroundTransparency = 1
    msgText.Text = text
    msgText.TextColor3 = CONFIG.COLORS.TEXT
    msgText.TextSize = 13
    msgText.Font = Enum.Font.Gotham
    msgText.TextWrapped = true
    msgText.Parent = msgBg
    
    local msgPadding = Instance.new("UIPadding")
    msgPadding.PaddingLeft = UDim.new(0, 12)
    msgPadding.PaddingRight = UDim.new(0, 12)
    msgPadding.PaddingTop = UDim.new(0, 10)
    msgPadding.PaddingBottom = UDim.new(0, 10)
    msgPadding.Parent = msgBg
    
    AIChat.CanvasPosition = Vector2.new(0, AIChat.AbsoluteCanvasSize.Y)
end

local AIResponses = {
    ["hello"] = "Hello! I'm Quantum AI, your Roblox assistant. How can I help you today?",
    ["help"] = "I can help you with:\n• Script execution\n• Game exploits\n• Player modifications\n• Teleportation\nWhat do you need?",
    ["fly"] = "You can enable flying from the Tools tab. Use the Fly Script in the Scripts section!",
    ["esp"] = "ESP (Extra Sensory Perception) allows you to see players through walls. Toggle it in the ESP tab!",
    ["speed"] = "Use the Player tab to adjust your WalkSpeed. Default is 16, you can go up to 200!",
    ["who are you"] = "I am Quantum AI, the intelligent assistant built into Quantum Hub. I process your requests with quantum speed!",
    ["quantum"] = "Quantum mechanics is fascinating! Just like this GUI, I operate on multiple states simultaneously.",
    ["default"] = "I'm analyzing your request... Quantum processing complete. Could you be more specific about what you need?"
}

AISendBtn.MouseButton1Click:Connect(function()
    local question = AIInput.Text:lower()
    if question ~= "" then
        AddMessage(AIInput.Text, true)
        AIInput.Text = ""
        
        AddMessage("Quantum AI is thinking...", false)
        
        task.wait(5 + math.random())
        
        for _, child in pairs(AIChat:GetChildren()) do
            if child:IsA("Frame") and child:FindFirstChildOfClass("Frame") then
                local txt = child:FindFirstChildOfClass("Frame"):FindFirstChildOfClass("TextLabel")
                if txt and txt.Text == "Quantum AI is thinking..." then
                    child:Destroy()
                end
            end
        end
        
        local response = AIResponses["default"]
        for key, resp in pairs(AIResponses) do
            if question:find(key) then
                response = resp
                break
            end
        end
        
        AddMessage(response, false)
    end
end)

-- ============================================================
-- WINDOW CONTROLS
-- ============================================================

local isMinimized = false
local isMaximized = false
local normalSize = UDim2.new(0, 750, 0, 480)
local normalPos = UDim2.new(0.5, -375, 0.5, -240)

-- Close
CloseBtn.MouseButton1Click:Connect(function()
    TweenService:Create(MainShadow, TweenInfo.new(0.3), {
        Size = UDim2.new(0, 0, 0, 0),
        Position = UDim2.new(0.5, 0, 0.5, 0)
    }):Play()
    task.wait(0.3)
    ScreenGui:Destroy()
end)

-- Minimize to Floating Bubble
MinimizeBtn.MouseButton1Click:Connect(function()
    if not isMinimized then
        TweenService:Create(MainShadow, TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.In), {
            Size = UDim2.new(0, 0, 0, 0),
            Position = UDim2.new(0.5, 0, 0.5, 0)
        }):Play()
        
        task.wait(0.3)
        MainShadow.Visible = false
        
        FloatingBubble.Position = UDim2.new(0.85, 0, 0.85, 0)
        FloatingBubble.Visible = true
        FloatingBubble.Size = UDim2.new(0, 0, 0, 0)
        
        TweenService:Create(FloatingBubble, TweenInfo.new(0.5, Enum.EasingStyle.Elastic), {
            Size = UDim2.new(0, 65, 0, 65)
        }):Play()
        
        Notify("Minimized", "Click the bubble to restore", "info")
        
        isMinimized = true
    end
end)

-- Bubble click to restore
FloatingBubble.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        if isMinimized then
            FloatingBubble.Visible = false
            
            MainShadow.Visible = true
            MainShadow.Size = UDim2.new(0, 0, 0, 0)
            
            TweenService:Create(MainShadow, TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
                Size = normalSize,
                Position = normalPos
            }):Play()
            
            isMinimized = false
            Notify("Restored", "Quantum Hub is back!", "success")
        end
    end
end)

-- Maximize
MaximizeBtn.MouseButton1Click:Connect(function()
    if not isMaximized then
        normalSize = MainShadow.Size
        normalPos = MainShadow.Position
        
        TweenService:Create(MainShadow, TweenInfo.new(0.3), {
            Size = UDim2.new(1, -20, 1, -20),
            Position = UDim2.new(0, 10, 0, 10)
        }):Play()
        
        MaximizeBtn.Text = "❐"
        isMaximized = true
        Notify("Maximized", "Full screen mode enabled", "info")
    else
        TweenService:Create(MainShadow, TweenInfo.new(0.3), {
            Size = normalSize,
            Position = normalPos
        }):Play()
        
        MaximizeBtn.Text = "□"
        isMaximized = false
        Notify("Restored", "Window size restored", "info")
    end
end)

-- ============================================================
-- DRAG SYSTEM
-- ============================================================

local dragging = false
local dragInput, dragStart, startPos

TitleBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = MainShadow.Position
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

TitleBar.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
        dragInput = input
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if input == dragInput and dragging then
        local delta = input.Position - dragStart
        MainShadow.Position = UDim2.new(
            startPos.X.Scale, startPos.X.Offset + delta.X,
            startPos.Y.Scale, startPos.Y.Offset + delta.Y
        )
    end
end)

-- ============================================================
-- ANIMATIONS & EFFECTS
-- ============================================================

-- Black hole rotation
local rotation = 0
RunService.RenderStepped:Connect(function(dt)
    rotation = rotation + dt * 60
    if blackHole then
        blackHole.Rotation = rotation
    end
    if bubbleBH then
        bubbleBH.Rotation = -rotation
    end
    if accretionDisk then
        accretionDisk.Rotation = -rotation * 0.5
    end
    if bubbleAccretion then
        bubbleAccretion.Rotation = rotation * 0.5
    end
    
    -- Notch pulse
    if notchGlow then
        local pulse = 0.5 + math.sin(tick() * 3) * 0.2
        notchGlow.BackgroundTransparency = pulse
    end
    
    -- Outer glow pulse
    if outerGlow then
        local glowPulse = 0.88 + math.sin(tick() * 2) * 0.04
        outerGlow.BackgroundTransparency = glowPulse
    end
end)

-- Bubble hover effects
FloatingBubble.MouseEnter:Connect(function()
    TweenService:Create(FloatingBubble, TweenInfo.new(0.3), {
        Size = UDim2.new(0, 75, 0, 75)
    }):Play()
    TweenService:Create(bubbleRing, TweenInfo.new(0.3), {
        BackgroundTransparency = 0.6
    }):Play()
end)

FloatingBubble.MouseLeave:Connect(function()
    TweenService:Create(FloatingBubble, TweenInfo.new(0.3), {
        Size = UDim2.new(0, 65, 0, 65)
    }):Play()
    TweenService:Create(bubbleRing, TweenInfo.new(0.3), {
        BackgroundTransparency = 0.8
    }):Play()
end)

-- Opening animation
MainShadow.Size = UDim2.new(0, 0, 0, 0)
MainShadow.Position = UDim2.new(0.5, 0, 0.5, 0)

TweenService:Create(MainShadow, TweenInfo.new(0.7, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
    Size = UDim2.new(0, 750, 0, 480),
    Position = UDim2.new(0.5, -375, 0.5, -240)
}):Play()

-- ============================================================
-- MOBILE SUPPORT
-- ============================================================

local function SetupMobile()
    if UserInputService.TouchEnabled then
        for _, btn in pairs(MainFrame:GetDescendants()) do
            if btn:IsA("TextButton") then
                btn.Size = UDim2.new(btn.Size.X.Scale, btn.Size.X.Offset, 
                                    btn.Size.Y.Scale, math.max(btn.Size.Y.Offset, 46))
            end
        end
        
        Sidebar.Size = UDim2.new(0, 180, 1, 0)
        RightPanel.Size = UDim2.new(1, -190, 1, 0)
        RightPanel.Position = UDim2.new(0, 190, 0, 0)
    end
end

task.spawn(SetupMobile)

-- ============================================================
-- INSERT KEY TOGGLE
-- ============================================================

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if not gameProcessed and input.KeyCode == Enum.KeyCode.Insert then
        MainShadow.Visible = not MainShadow.Visible
        if FloatingBubble.Visible then
            FloatingBubble.Visible = false
            isMinimized = false
        end
    end
end)

-- ============================================================
-- STARTUP - OPEN MAIN CATEGORY
-- ============================================================

task.spawn(function()
    task.wait(0.2)
    Categories["Main"].Button.MouseButton1Click:Fire()
    Notify("Welcome", "Quantum Hub " .. CONFIG.VERSION .. " loaded!", "success")
end)

-- ============================================================
-- CONSOLE OUTPUT
-- ============================================================

print("╔══════════════════════════════════════════╗")
print("║       QUANTUM HUB " .. CONFIG.VERSION .. " - LOADED        ║")
print("║       Theme: Navy Blue-Purple            ║")
print("║       Language: English                  ║")
print("║       Status: Ready                      ║")
print("╚══════════════════════════════════════════╝")
print("Press INSERT to toggle GUI")

-- Global access
_G.QuantumHub = {
    GUI = ScreenGui,
    Main = MainShadow,
    Editor = EditorBox,
    Output = OutputLabel,
    Categories = Categories,
    Notify = Notify
}

return _G.QuantumHub

Features & Information

Feature Description Theme Navy Blue-Purple gradient Logo Black and white 3D black hole (rotating animation) Dynamic Notch Purple glow effect in top bar Close ❌ Red button Minimize − Green button → Floating balloon (with logo) Full Screen □ Yellow button Categories Editor, Scripts, Tools, ESP, Teleport, Player, Settings, Quantum AI Running Codes Execute, Fly, Speed, Jump, ESP, Teleport, Heal, God Mode Quantum AI Realistic 5-6 second cooldown Mobile Support Touch-compatible buttons
#HUB#MODERN#KEYLESS#QUANTUM HUB#PC AND MOBILE SUPPORTED

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts