local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")

-- Variables
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

-- State Variables
local IsAutoMaxMoney = false
local IsAutoCleanMoney = false

-- Duping-related global removed (kept only what's still used)
getgenv().SwimMethod = true
getgenv().TeleportSettings = {
    Speed = 0.15
}

-- ============================================
-- LOADING SCREEN WITH PROFILE
-- ============================================

local LoadingGui = Instance.new("ScreenGui")
LoadingGui.Name = "WoahServices"
LoadingGui.ResetOnSpawn = false
LoadingGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
LoadingGui.Parent = PlayerGui

local LoadingFrame = Instance.new("Frame")
LoadingFrame.Name = "WoahServices"
LoadingFrame.Size = UDim2.new(1, 0, 1, 0)
LoadingFrame.Position = UDim2.new(0, 0, 0, 0)
LoadingFrame.BackgroundColor3 = Color3.fromRGB(57, 255, 20)
LoadingFrame.BorderSizePixel = 0
LoadingFrame.ZIndex = 1000
LoadingFrame.Parent = LoadingGui

-- Gradient background
local LoadingGradient = Instance.new("UIGradient")
LoadingGradient.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0, Color3.fromRGB(50, 100, 200)),
    ColorSequenceKeypoint.new(0.5, Color3.fromRGB(57, 255, 20)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(50, 100, 200))
}
LoadingGradient.Rotation = 45
LoadingGradient.Parent = LoadingFrame

-- Animate the gradient
task.spawn(function()
    while LoadingFrame and LoadingFrame.Parent do
        for i = 0, 360, 2 do
            if LoadingGradient and LoadingGradient.Parent then
                LoadingGradient.Rotation = i
            end
            task.wait(0.02)
        end
    end
end)

-- Player Avatar (Center)
local AvatarFrame = Instance.new("Frame")
AvatarFrame.Size = UDim2.new(0, 150, 0, 150)
AvatarFrame.Position = UDim2.new(0.5, -75, 0.35, -75)
AvatarFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
AvatarFrame.BorderSizePixel = 0
AvatarFrame.ZIndex = 1001
AvatarFrame.Parent = LoadingFrame

local AvatarCorner = Instance.new("UICorner")
AvatarCorner.CornerRadius = UDim.new(0, 75)
AvatarCorner.Parent = AvatarFrame

local AvatarStroke = Instance.new("UIStroke")
AvatarStroke.Thickness = 4
AvatarStroke.Color = Color3.fromRGB(0, 150, 255)
AvatarStroke.Parent = AvatarFrame

-- Glow effect for avatar
task.spawn(function()
    while AvatarStroke and AvatarStroke.Parent do
        for i = 0, 1, 0.05 do
            if AvatarStroke and AvatarStroke.Parent then
                AvatarStroke.Transparency = 0.2 + (math.sin(i * math.pi * 2) * 0.3)
            end
            task.wait(0.05)
        end
    end
end)

local AvatarImage = Instance.new("ImageLabel")
AvatarImage.Size = UDim2.new(1, -8, 1, -8)
AvatarImage.Position = UDim2.new(0, 4, 0, 4)
AvatarImage.BackgroundTransparency = 1
AvatarImage.Image = Players:GetUserThumbnailAsync(LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size150x150)
AvatarImage.ZIndex = 1002
AvatarImage.Parent = AvatarFrame

local AvatarImageCorner = Instance.new("UICorner")
AvatarImageCorner.CornerRadius = UDim.new(0, 71)
AvatarImageCorner.Parent = AvatarImage

-- Username below avatar
local UsernameText = Instance.new("TextLabel")
UsernameText.Size = UDim2.new(0, 400, 0, 40)
UsernameText.Position = UDim2.new(0.5, -200, 0.55, 0)
UsernameText.BackgroundTransparency = 1
UsernameText.Text = "@" .. LocalPlayer.Name
UsernameText.TextColor3 = Color3.fromRGB(255, 255, 255)
UsernameText.TextSize = 28
UsernameText.Font = Enum.Font.GothamBold
UsernameText.TextTransparency = 0
UsernameText.ZIndex = 1001
UsernameText.Parent = LoadingFrame

-- Loading text
local LoadingText = Instance.new("TextLabel")
LoadingText.Size = UDim2.new(0, 400, 0, 50)
LoadingText.Position = UDim2.new(0.5, -200, 0.65, 0)
LoadingText.BackgroundTransparency = 1
LoadingText.Text = "Loading..."
LoadingText.TextColor3 = Color3.fromRGB(0, 150, 255)
LoadingText.TextSize = 24
LoadingText.Font = Enum.Font.GothamBold
LoadingText.TextTransparency = 0
LoadingText.ZIndex = 1001
LoadingText.Parent = LoadingFrame

-- Credits
local CreditsText = Instance.new("TextLabel")
CreditsText.Size = UDim2.new(0, 500, 0, 40)
CreditsText.Position = UDim2.new(0.5, -250, 0.75, 0)
CreditsText.BackgroundTransparency = 1
CreditsText.Text = "WoahServices"
CreditsText.TextColor3 = Color3.fromRGB(180, 180, 180)
CreditsText.TextSize = 18
CreditsText.Font = Enum.Font.Gotham
CreditsText.TextTransparency = 0
CreditsText.ZIndex = 1001
CreditsText.Parent = LoadingFrame

-- Loading dots animation
task.spawn(function()
    local dots = {"Loading.", "Loading..", "Loading..."}
    local index = 1
    while LoadingFrame.Parent and LoadingText.TextTransparency < 0.9 do
        LoadingText.Text = dots[index]
        index = index + 1
        if index > 3 then index = 1 end
        task.wait(0.4)
    end
end)

-- Fade out after 3 seconds
task.spawn(function()
    task.wait(3)
    
    -- Fade out animation
    local fadeInfo = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
    
    local frameTween = TweenService:Create(LoadingFrame, fadeInfo, {BackgroundTransparency = 1})
    local textTween = TweenService:Create(LoadingText, fadeInfo, {TextTransparency = 1})
    local creditsTween = TweenService:Create(CreditsText, fadeInfo, {TextTransparency = 1})
    local usernameTween = TweenService:Create(UsernameText, fadeInfo, {TextTransparency = 1})
    
    frameTween:Play()
    textTween:Play()
    creditsTween:Play()
    usernameTween:Play()
    
    frameTween.Completed:Connect(function()
        LoadingGui:Destroy()
    end)
end)

local BackgroundImage = Instance.new("ImageLabel")
BackgroundImage.Size = UDim2.new(1, 0, 1, 0)
BackgroundImage.Position = UDim2.new(0, 0, 0, 0)
BackgroundImage.BackgroundTransparency = 1
BackgroundImage.Image = "rbxassetid://133696879604235"
BackgroundImage.ScaleType = Enum.ScaleType.Crop
BackgroundImage.ZIndex = 0
BackgroundImage.Parent = LoadingFrame

local DarkOverlay = Instance.new("Frame")
DarkOverlay.Size = UDim2.new(1,0,1,0)
DarkOverlay.BackgroundColor3 = Color3.fromRGB(0,0,0)
DarkOverlay.BackgroundTransparency = 0.4
DarkOverlay.ZIndex = 1
DarkOverlay.Parent = LoadingFrame

-- ============================================
-- WAIT FOR LOADING TO COMPLETE
-- ============================================
task.wait(3.2)

-- ============================================
-- UTILITY FUNCTIONS
-- ============================================

local function _fireproximityprompt(prompt)
    if prompt and prompt:IsA("ProximityPrompt") then
        fireproximityprompt(prompt)
    end
end

function FastTP(input)
    local char = LocalPlayer.Character
    local hrp = char and char:FindFirstChild("HumanoidRootPart")
    local humanoid = char and char:FindFirstChild("Humanoid")

    if not hrp or not humanoid then return end

    local destinationCFrame

    if typeof(input) == "Vector3" then
        destinationCFrame = CFrame.new(input)
    elseif typeof(input) == "CFrame" then
        destinationCFrame = input
    else
        return
    end

    getgenv().SwimMethod = true
    humanoid:ChangeState(0)
    repeat task.wait(0.0001) until not LocalPlayer:GetAttribute("LastACPos")
    hrp.CFrame = destinationCFrame
end

getgenv().Teleportt = function(CF)
    local player = LocalPlayer
    if not player.Character then return end

    local character = player.Character
    local humanoid = character:FindFirstChild("Humanoid")
    local hrp = character:FindFirstChild("HumanoidRootPart")

    if not humanoid or not hrp then return end

    humanoid:ChangeState(0)

    if player:GetAttribute("LastACPos") ~= nil then
        repeat task.wait() until not player:GetAttribute("LastACPos")
    end

    hrp.CFrame = CF
    task.wait()
    humanoid:ChangeState(2)

    return true
end

getgenv().Teleport = function(CF)
    if not LocalPlayer.Character then return end
    local hum = LocalPlayer.Character:FindFirstChild("Humanoid")
    local hrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")

    getgenv().SwimMethod = true

    if not hum or not hrp then return end
    hum.WalkSpeed = 0
    hum.JumpPower = 0
    hum.AutoRotate = false
    task.wait(0.5)

    hum:ChangeState(0)
    repeat task.wait() until not LocalPlayer:GetAttribute("LastACPos")

    hrp.CFrame = CF

    task.wait(0.5)
    hum:ChangeState(2)
    hum.WalkSpeed = 16
    hum.JumpPower = 50
    hum.AutoRotate = true

    getgenv().SwimMethod = false

    task.wait()
    hrp.Anchored = false
    hum.PlatformStand = false

    return true
end

-- ============================================
-- ICE FRUIT FUNCTIONS
-- ============================================

local function GetFruitCup()
    for _, item in ipairs(LocalPlayer.Backpack:GetChildren()) do
        if item.Name == "Ice-Fruit Cupz" then
            return true, item
        end
    end
    for _, item in ipairs(LocalPlayer.Character:GetChildren()) do
        if item.Name == "Ice-Fruit Cupz" then
            return true, item
        end
    end
    return false, nil
end

local function FreezeCharacter()
    local char = LocalPlayer.Character
    if not char then return end

    local hum = char:FindFirstChild("Humanoid")
    local hrp = char:FindFirstChild("HumanoidRootPart")

    if hum then
        hum.WalkSpeed = 0
        hum.JumpPower = 0
        hum.AutoRotate = false
    end

    if hrp then
        hrp.Anchored = true
    end
end

local function UnfreezeCharacter()
    local char = LocalPlayer.Character
    if not char then return end

    local hum = char:FindFirstChild("Humanoid")
    local hrp = char:FindFirstChild("HumanoidRootPart")

    if hum then
        hum.WalkSpeed = 16
        hum.JumpPower = 50
        hum.AutoRotate = true
    end

    if hrp then
        hrp.Anchored = false
    end
end

local function IceFruitSell()
    local Found, Cup = GetFruitCup()

    if Cup and Found then
        local OLDCFrame = LocalPlayer.Character.HumanoidRootPart.CFrame

        if Cup.Parent == LocalPlayer.Backpack then
            LocalPlayer.Character.Humanoid:EquipTool(Cup)
            task.wait(1)
        end

        FastTP(Workspace["IceFruit Sell"].CFrame)
        task.wait(0.5)

        for i = 1, 1900 do
            task.spawn(function()
                _fireproximityprompt(Workspace["IceFruit Sell"].ProximityPrompt)
            end)
        end

        Teleportt(OLDCFrame)
    else
        local OLDCFrame = LocalPlayer.Character.HumanoidRootPart.CFrame

        local Itemz = {"FijiWater", "FreshWater", "Ice-Fruit Bag", "Ice-Fruit Cupz"}
        local Stove

        for _, v in Workspace.CookingPots:GetChildren() do
            if v:IsA("Model") then
                local Prompt = v:FindFirstChildWhichIsA("ProximityPrompt", true)
                if Prompt and Prompt.ActionText == "Turn On" and Prompt.Enabled then
                    Stove = v
                    break
                end
            end
        end

        for _, item in Itemz do
            if not LocalPlayer.Backpack:FindFirstChild(item) then
                ReplicatedStorage.ExoticShopRemote:InvokeServer(item)
                task.wait(0.1)
            end
        end

        for _, item in Itemz do
            if not LocalPlayer.Backpack:FindFirstChild(item) then
                return
            end
        end

        Teleportt(Stove.CookPart.CFrame)
        task.wait(1)
        FreezeCharacter()

        fireproximityprompt(Stove:FindFirstChildWhichIsA("ProximityPrompt", true))
        task.wait(2)

        for _, item in {"FijiWater", "FreshWater", "Ice-Fruit Bag"} do
            LocalPlayer.Character.Humanoid:EquipTool(LocalPlayer.Backpack[item])
            task.wait(1)
            fireproximityprompt(Stove:FindFirstChildWhichIsA("ProximityPrompt", true))
            task.wait(3)
        end

        repeat task.wait() until Stove.CookPart.Steam.LoadUI.Enabled == false

        LocalPlayer.Character.Humanoid:EquipTool(LocalPlayer.Backpack["Ice-Fruit Cupz"])
        task.wait(1)
        fireproximityprompt(Stove:FindFirstChildWhichIsA("ProximityPrompt", true))

        task.wait(3)
        UnfreezeCharacter()

        Teleportt(Workspace["IceFruit Sell"].CFrame)
        task.wait(1)
        FreezeCharacter()

        Workspace["IceFruit Sell"].ProximityPrompt.HoldDuration = 0

        for i = 1, 1900 do
            task.spawn(function()
                _fireproximityprompt(Workspace["IceFruit Sell"].ProximityPrompt)
            end)
        end

        UnfreezeCharacter()
        FastTP(OLDCFrame)
    end
end

-- ============================================
-- AUTO CLEAN MONEY FUNCTIONS
-- ============================================

local function GetGoodCleaner()
    local CounterInstance

    for Index, Value in Workspace["1# Map"]:GetChildren() do
        if Value:FindFirstChild("CounterM") then
            CounterInstance = Value
        end
    end

    for Index, Value in next, {Workspace.CounterBag:GetChildren(), CounterInstance:GetChildren()} do
        for _Index, _Value in Value do
            if _Value:FindFirstChild("CashPrompt", true) and _Value:FindFirstChild("CashPrompt", true).Enabled and _Value:FindFirstChild("CashPrompt", true).ObjectText == "Count Bread" and _Value:FindFirstChild("GrabPrompt", true) and not _Value:FindFirstChild("GrabPrompt", true).Enabled then
                return _Value
            end
        end
    end
end

local function CleanMoney()
    local character = LocalPlayer.Character
    local humanoid = character and character:FindFirstChild("Humanoid")

    if not LocalPlayer.stored.FilthyStack or LocalPlayer.stored.FilthyStack.Value == 0 then
        return
    end

    if not character or not character:FindFirstChild("HumanoidRootPart") or not humanoid or humanoid.Health == 0 then
        return
    end

    local Cleaner = GetGoodCleaner()
    if not Cleaner then
        return
    end

    local OldCF = character.HumanoidRootPart.CFrame

    FastTP(Cleaner.WorldPivot)
    task.wait(0.4)
    fireproximityprompt(Cleaner:FindFirstChild("CashPrompt", true))

    repeat task.wait() until Cleaner:FindFirstChild("On", true).Color == Color3.fromRGB(74,156,69)
    task.wait(0.5)
    fireproximityprompt(Cleaner:FindFirstChild("CashPrompt", true))
    task.wait(0.25)

    FastTP(Cleaner.WorldPivot)
    task.wait(0.4)

    repeat task.wait() until LocalPlayer.Backpack:FindFirstChild("MoneyReady")
    humanoid:EquipTool(LocalPlayer.Backpack["MoneyReady"])

    repeat
        fireproximityprompt(Cleaner:FindFirstChild("GrabPrompt", true))
        task.wait(3)
    until not character:FindFirstChild("MoneyReady")

    repeat task.wait() until LocalPlayer.Backpack:FindFirstChild("BagOfMoney")
    FastTP(CFrame.new(-222.29, 283.81, -1200.90))
    humanoid:EquipTool(LocalPlayer.Backpack["BagOfMoney"])
    task.wait(1)
    fireproximityprompt(Workspace.ATMMoney.Prompt)

    FastTP(OldCF)
end

-- ============================================
-- GUI + ENHANCED PARTICLES
-- ============================================

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "WoahServices"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

-- Enhanced Falling Particles
local ParticleFrame = Instance.new("Frame")
ParticleFrame.Name = "Particles"
ParticleFrame.Size = UDim2.new(1, 0, 1, 0)
ParticleFrame.BackgroundTransparency = 1
ParticleFrame.ZIndex = -10
ParticleFrame.Parent = ScreenGui

-- Create multiple particle emitters for layered effect
for i = 1, 3 do
    local particle = Instance.new("ParticleEmitter")
    particle.Texture = "rbxassetid://114102372151784"
    
    -- Vary colors for depth
    if i == 1 then
        particle.Color = ColorSequence.new(Color3.new(0.2, 0.5, 1))
    elseif i == 2 then
        particle.Color = ColorSequence.new(Color3.new(0.3, 0.6, 1))
    else
        particle.Color = ColorSequence.new(Color3.new(0.4, 0.7, 1))
    end
    
    particle.Lifetime = NumberRange.new(10 + i*2, 16 + i*2)
    particle.Rate = 25 + i*5
    particle.RotSpeed = NumberRange.new(-50, 50)
    particle.Rotation = NumberRange.new(0, 360)
    particle.Size = NumberSequence.new(0.3 + i*0.1, 0.3 + i*0.1)
    particle.Speed = NumberRange.new(18 + i*3, 28 + i*3)
    particle.SpreadAngle = Vector2.new(0, 360)
    particle.VelocitySpread = 360
    particle.Acceleration = Vector3.new(0, -12 - i*2, 0)
    particle.Drag = 1.5 + i*0.2
    particle.LightEmission = 0.3 + i*0.1
    particle.LightInfluence = 0
    particle.Transparency = NumberSequence.new(0.3 + i*0.2, 0.9)
    particle.Enabled = true
    particle.ZOffset = -5 - i
    particle.Parent = ParticleFrame
end

-- Main GUI container - SQUARE
local GradientContainer = Instance.new("Frame")
GradientContainer.Name = "GradientContainer"
GradientContainer.Size = UDim2.new(0, 420, 0, 480)
GradientContainer.Position = UDim2.new(0.5, -210, 0.5, -240)
GradientContainer.BackgroundColor3 = Color3.fromRGB(57, 255, 20)
GradientContainer.BorderSizePixel = 0
GradientContainer.Visible = false
GradientContainer.Active = true
GradientContainer.Draggable = true
GradientContainer.ClipsDescendants = true
GradientContainer.Parent = ScreenGui

local GradientCorner = Instance.new("UICorner")
GradientCorner.CornerRadius = UDim.new(0, 12)
GradientCorner.Parent = GradientContainer

-- GREEN NEON STROKE
local GradientBorder = Instance.new("UIStroke")
GradientBorder.Thickness = 3
GradientBorder.Transparency = 0
GradientBorder.Color = Color3.fromRGB(57, 255, 20)
GradientBorder.Parent = GradientContainer

-- Animate the blue neon glow
task.spawn(function()
    while GradientContainer and GradientContainer.Parent do
        for i = 0, 1, 0.05 do
            if GradientBorder and GradientBorder.Parent then
                GradientBorder.Transparency = 0.2 + (math.sin(i * math.pi * 2) * 0.25)
            end
            task.wait(0.05)
        end
    end
end)

-- Background gradient overlay
local BackgroundGradient = Instance.new("Frame")
BackgroundGradient.Size = UDim2.new(1,0,1,0)
BackgroundGradient.BackgroundTransparency = 0.3
BackgroundGradient.BorderSizePixel = 0
BackgroundGradient.Parent = GradientContainer

local BGCorner = Instance.new("UICorner")
BGCorner.CornerRadius = UDim.new(0, 12)
BGCorner.Parent = BackgroundGradient

local BGGradient = Instance.new("UIGradient")
BGGradient.Color = ColorSequence.new{
    ColorSequenceKeypoint.new(0, Color3.fromRGB(20, 25, 40)),
    ColorSequenceKeypoint.new(1, Color3.fromRGB(10, 15, 25))
}
BGGradient.Rotation = 135
BGGradient.Parent = BackgroundGradient

local MainBG = Instance.new("ImageLabel")
MainBG.Size = UDim2.new(1,0,1,0)
MainBG.BackgroundTransparency = 1
MainBG.Image = "rbxassetid://133696879604235"
MainBG.ScaleType = Enum.ScaleType.Crop
MainBG.ZIndex = -1
MainBG.Parent = GradientContainer

-- Title Bar
local TitleBar = Instance.new("Frame")
TitleBar.Size = UDim2.new(1, 0, 0, 45)
TitleBar.BackgroundTransparency = 1
TitleBar.ZIndex = 10
TitleBar.Parent = GradientContainer

local Title = Instance.new("TextLabel")
Title.Size = UDim2.new(1, -50, 1, 0)
Title.Position = UDim2.new(0, 15, 0, 0)
Title.BackgroundTransparency = 1
Title.Text = "WoahServices"
Title.TextColor3 = Color3.fromRGB(57, 225, 20)
Title.TextSize = 24
Title.Font = Enum.Font.GothamBold
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.ZIndex = 11
Title.Parent = TitleBar

local CloseButton = Instance.new("TextButton")
CloseButton.Size = UDim2.new(0, 35, 0, 35)
CloseButton.Position = UDim2.new(1, -42, 0, 5)
CloseButton.BackgroundColor3 = Color3.fromRGB(57, 255, 20)
CloseButton.Text = "✕"
CloseButton.TextColor3 = Color3.fromRGB(57, 255, 20)
CloseButton.TextSize = 18
CloseButton.Font = Enum.Font.GothamBold
CloseButton.BorderSizePixel = 0
CloseButton.ZIndex = 11
CloseButton.Parent = TitleBar

local CloseCorner = Instance.new("UICorner")
CloseCorner.CornerRadius = UDim.new(0, 8)
CloseCorner.Parent = CloseButton

-- Content Frame
local ContentFrame = Instance.new("ScrollingFrame")
ContentFrame.Size = UDim2.new(1, -24, 1, -115)
ContentFrame.Position = UDim2.new(0, 12, 0, 50)
ContentFrame.BackgroundTransparency = 1
ContentFrame.ScrollBarThickness = 4
ContentFrame.ScrollBarImageColor3 = Color3.fromRGB(57, 255, 20)
ContentFrame.CanvasSize = UDim2.new(0, 0, 0, 500)
ContentFrame.ZIndex = 10
ContentFrame.Parent = GradientContainer

local ContentLayout = Instance.new("UIListLayout")
ContentLayout.SortOrder = Enum.SortOrder.LayoutOrder
ContentLayout.Padding = UDim.new(0, 10)
ContentLayout.Parent = ContentFrame

ContentLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    ContentFrame.CanvasSize = UDim2.new(0, 0, 0, ContentLayout.AbsoluteContentSize.Y + 20)
end)

-- ============================================
-- USER PROFILE AT BOTTOM
-- ============================================

local ProfileFrame = Instance.new("Frame")
ProfileFrame.Size = UDim2.new(1, 0, 0, 55)
ProfileFrame.Position = UDim2.new(0, 0, 1, -55)
ProfileFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 23)
ProfileFrame.BorderSizePixel = 0
ProfileFrame.ZIndex = 10
ProfileFrame.Parent = GradientContainer

local ProfileCorner = Instance.new("UICorner")
ProfileCorner.CornerRadius = UDim.new(0, 0)
ProfileCorner.Parent = ProfileFrame

local ProfileTopStroke = Instance.new("Frame")
ProfileTopStroke.Size = UDim2.new(1, 0, 0, 2)
ProfileTopStroke.Position = UDim2.new(0, 0, 0, 0)
ProfileTopStroke.BackgroundColor3 = Color3.fromRGB(0, 150, 255)
ProfileTopStroke.BorderSizePixel = 0
ProfileTopStroke.ZIndex = 11
ProfileTopStroke.Parent = ProfileFrame

-- Avatar in bottom left
local BottomAvatarFrame = Instance.new("Frame")
BottomAvatarFrame.Size = UDim2.new(0, 40, 0, 40)
BottomAvatarFrame.Position = UDim2.new(0, 8, 0.5, -20)
BottomAvatarFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 30)
BottomAvatarFrame.BorderSizePixel = 0
BottomAvatarFrame.ZIndex = 11
BottomAvatarFrame.Parent = ProfileFrame

local BottomAvatarCorner = Instance.new("UICorner")
BottomAvatarCorner.CornerRadius = UDim.new(0, 20)
BottomAvatarCorner.Parent = BottomAvatarFrame

local BottomAvatarStroke = Instance.new("UIStroke")
BottomAvatarStroke.Thickness = 2
BottomAvatarStroke.Color = Color3.fromRGB(0, 150, 255)
BottomAvatarStroke.Transparency = 0.4
BottomAvatarStroke.Parent = BottomAvatarFrame

local BottomAvatarImage = Instance.new("ImageLabel")
BottomAvatarImage.Size = UDim2.new(1, -4, 1, -4)
BottomAvatarImage.Position = UDim2.new(0, 2, 0, 2)
BottomAvatarImage.BackgroundTransparency = 1
BottomAvatarImage.Image = Players:GetUserThumbnailAsync(LocalPlayer.UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size150x150)
BottomAvatarImage.ZIndex = 12
BottomAvatarImage.Parent = BottomAvatarFrame

local BottomAvatarImageCorner = Instance.new("UICorner")
BottomAvatarImageCorner.CornerRadius = UDim.new(0, 18)
BottomAvatarImageCorner.Parent = BottomAvatarImage

-- Username next to avatar
local BottomUsernameLabel = Instance.new("TextLabel")
BottomUsernameLabel.Size = UDim2.new(0, 200, 0, 20)
BottomUsernameLabel.Position = UDim2.new(0, 55, 0, 10)
BottomUsernameLabel.BackgroundTransparency = 1
BottomUsernameLabel.Text = LocalPlayer.DisplayName
BottomUsernameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
BottomUsernameLabel.TextSize = 14
BottomUsernameLabel.Font = Enum.Font.GothamBold
BottomUsernameLabel.TextXAlignment = Enum.TextXAlignment.Left
BottomUsernameLabel.ZIndex = 11
BottomUsernameLabel.Parent = ProfileFrame

local BottomUsernameTag = Instance.new("TextLabel")
BottomUsernameTag.Size = UDim2.new(0, 200, 0, 16)
BottomUsernameTag.Position = UDim2.new(0, 55, 0, 28)
BottomUsernameTag.BackgroundTransparency = 1
BottomUsernameTag.Text = "@" .. LocalPlayer.Name
BottomUsernameTag.TextColor3 = Color3.fromRGB(150, 150, 150)
BottomUsernameTag.TextSize = 11
BottomUsernameTag.Font = Enum.Font.Gotham
BottomUsernameTag.TextXAlignment = Enum.TextXAlignment.Left
BottomUsernameTag.ZIndex = 11
BottomUsernameTag.Parent = ProfileFrame

-- ============================================
-- AUTO MAX MONEY SECTION
-- ============================================

local MaxMoneySection = Instance.new("Frame")
MaxMoneySection.Size = UDim2.new(1, 0, 0, 88)
MaxMoneySection.BackgroundColor3 = Color3.fromRGB(22, 22, 27)
MaxMoneySection.BorderSizePixel = 0
MaxMoneySection.ZIndex = 10
MaxMoneySection.Parent = ContentFrame

local MaxMoneyCorner = Instance.new("UICorner")
MaxMoneyCorner.CornerRadius = UDim.new(0, 10)
MaxMoneyCorner.Parent = MaxMoneySection

local MaxMoneyStroke = Instance.new("UIStroke")
MaxMoneyStroke.Color = Color3.fromRGB(40, 40, 50)
MaxMoneyStroke.Thickness = 1
MaxMoneyStroke.Transparency = 0.5
MaxMoneyStroke.Parent = MaxMoneySection

local MaxMoneyTitle = Instance.new("TextLabel")
MaxMoneyTitle.Size = UDim2.new(1, -16, 0, 24)
MaxMoneyTitle.Position = UDim2.new(0, 8, 0, 4)
MaxMoneyTitle.BackgroundTransparency = 1
MaxMoneyTitle.Text = "💰 Auto Max Money"
MaxMoneyTitle.TextColor3 = Color3.fromRGB(0, 150, 255)
MaxMoneyTitle.TextSize = 15
MaxMoneyTitle.Font = Enum.Font.GothamBold
MaxMoneyTitle.TextXAlignment = Enum.TextXAlignment.Left
MaxMoneyTitle.ZIndex = 11
MaxMoneyTitle.Parent = MaxMoneySection

local MaxMoneyStatus = Instance.new("TextLabel")
MaxMoneyStatus.Size = UDim2.new(1, -16, 0, 16)
MaxMoneyStatus.Position = UDim2.new(0, 8, 0, 28)
MaxMoneyStatus.BackgroundTransparency = 1
MaxMoneyStatus.Text = "Auto farm ice fruit for max money"
MaxMoneyStatus.TextColor3 = Color3.fromRGB(180, 180, 180)
MaxMoneyStatus.TextSize = 11
MaxMoneyStatus.Font = Enum.Font.Gotham
MaxMoneyStatus.TextXAlignment = Enum.TextXAlignment.Left
MaxMoneyStatus.ZIndex = 11
MaxMoneyStatus.Parent = MaxMoneySection

local MaxMoneyToggle = Instance.new("TextButton")
MaxMoneyToggle.Size = UDim2.new(1, -16, 0, 32)
MaxMoneyToggle.Position = UDim2.new(0, 8, 0, 48)
MaxMoneyToggle.BackgroundColor3 = Color3.fromRGB(57, 255, 20)
MaxMoneyToggle.Text = "START"
MaxMoneyToggle.TextColor3 = Color3.fromRGB(57, 255, 20)
MaxMoneyToggle.TextSize = 13
MaxMoneyToggle.Font = Enum.Font.GothamBold
MaxMoneyToggle.BorderSizePixel = 0
MaxMoneyToggle.ZIndex = 11
MaxMoneyToggle.Parent = MaxMoneySection

local MaxMoneyToggleCorner = Instance.new("UICorner")
MaxMoneyToggleCorner.CornerRadius = UDim.new(0, 6)
MaxMoneyToggleCorner.Parent = MaxMoneyToggle

local MaxMoneyToggleStroke = Instance.new("UIStroke")
MaxMoneyToggleStroke.Color = Color3.fromRGB(0, 150, 255)
MaxMoneyToggleStroke.Thickness = 2
MaxMoneyToggleStroke.Transparency = 0.6
MaxMoneyToggleStroke.Parent = MaxMoneyToggle

-- ============================================
-- AUTO CLEAN MONEY SECTION
-- ============================================

local CleanMoneySection = Instance.new("Frame")
CleanMoneySection.Size = UDim2.new(1, 0, 0, 88)
CleanMoneySection.BackgroundColor3 = Color3.fromRGB(22, 22, 27)
CleanMoneySection.BorderSizePixel = 0
CleanMoneySection.ZIndex = 10
CleanMoneySection.Parent = ContentFrame

local CleanMoneyCorner = Instance.new("UICorner")
CleanMoneyCorner.CornerRadius = UDim.new(0, 10)
CleanMoneyCorner.Parent = CleanMoneySection

local CleanMoneyStroke = Instance.new("UIStroke")
CleanMoneyStroke.Color = Color3.fromRGB(40, 40, 50)
CleanMoneyStroke.Thickness = 1
CleanMoneyStroke.Transparency = 0.5
CleanMoneyStroke.Parent = CleanMoneySection

local CleanMoneyTitle = Instance.new("TextLabel")
CleanMoneyTitle.Size = UDim2.new(1, -16, 0, 24)
CleanMoneyTitle.Position = UDim2.new(0, 8, 0, 4)
CleanMoneyTitle.BackgroundTransparency = 1
CleanMoneyTitle.Text = "💵 Auto Clean Money"
CleanMoneyTitle.TextColor3 = Color3.fromRGB(0, 150, 255)
CleanMoneyTitle.TextSize = 15
CleanMoneyTitle.Font = Enum.Font.GothamBold
CleanMoneyTitle.TextXAlignment = Enum.TextXAlignment.Left
CleanMoneyTitle.ZIndex = 11
CleanMoneyTitle.Parent = CleanMoneySection

local CleanMoneyStatus = Instance.new("TextLabel")
CleanMoneyStatus.Size = UDim2.new(1, -16, 0, 16)
CleanMoneyStatus.Position = UDim2.new(0, 8, 0, 28)
CleanMoneyStatus.BackgroundTransparency = 1
CleanMoneyStatus.Text = "Auto clean dirty money"
CleanMoneyStatus.TextColor3 = Color3.fromRGB(180, 180, 180)
CleanMoneyStatus.TextSize = 11
CleanMoneyStatus.Font = Enum.Font.Gotham
CleanMoneyStatus.TextXAlignment = Enum.TextXAlignment.Left
CleanMoneyStatus.ZIndex = 11
CleanMoneyStatus.Parent = CleanMoneySection

local CleanMoneyToggle = Instance.new("TextButton")
CleanMoneyToggle.Size = UDim2.new(1, -16, 0, 32)
CleanMoneyToggle.Position = UDim2.new(0, 8, 0, 48)
CleanMoneyToggle.BackgroundColor3 = Color3.fromRGB(35, 35, 40)
CleanMoneyToggle.Text = "START"
CleanMoneyToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
CleanMoneyToggle.TextSize = 13
CleanMoneyToggle.Font = Enum.Font.GothamBold
CleanMoneyToggle.BorderSizePixel = 0
CleanMoneyToggle.ZIndex = 11
CleanMoneyToggle.Parent = CleanMoneySection

local CleanMoneyToggleCorner = Instance.new("UICorner")
CleanMoneyToggleCorner.CornerRadius = UDim.new(0, 6)
CleanMoneyToggleCorner.Parent = CleanMoneyToggle

local CleanMoneyToggleStroke = Instance.new("UIStroke")
CleanMoneyToggleStroke.Color = Color3.fromRGB(0, 150, 255)
CleanMoneyToggleStroke.Thickness = 2
CleanMoneyToggleStroke.Transparency = 0.6
CleanMoneyToggleStroke.Parent = CleanMoneyToggle

-- ============================================
-- OPEN BUTTON WITH "WoahServices"
-- ============================================

local OpenButton = Instance.new("TextButton")
OpenButton.Size = UDim2.new(0, 110, 0, 42)
OpenButton.Position = UDim2.new(0.5, -55, 0, 12)
OpenButton.BackgroundColor3 = Color3.fromRGB(18, 18, 23)
OpenButton.Text = "WoahServices"
OpenButton.TextColor3 = Color3.fromRGB(57, 255, 20)
OpenButton.TextSize = 18
OpenButton.Font = Enum.Font.GothamBold
OpenButton.BorderSizePixel = 0
OpenButton.ZIndex = 125
OpenButton.Parent = ScreenGui

local OpenCorner = Instance.new("UICorner")
OpenCorner.CornerRadius = UDim.new(0, 10)
OpenCorner.Parent = OpenButton

local OpenStroke = Instance.new("UIStroke")
OpenStroke.Thickness = 3
OpenStroke.Color = Color3.fromRGB(57, 255, 20)
OpenStroke.Transparency = 0.3
OpenStroke.Parent = OpenButton

-- Pulsing glow effect
task.spawn(function()
    while OpenStroke and OpenStroke.Parent do
        for i = 0, 1, 0.05 do
            if OpenStroke and OpenStroke.Parent then
                OpenStroke.Transparency = 0.2 + (math.sin(i * math.pi * 2) * 0.3)
            end
            task.wait(0.05)
        end
    end
end)

-- ============================================
-- GUI ANIMATIONS & EVENT HANDLERS
-- ============================================

local isOpen = false

local function openGUI()
    isOpen = true
    GradientContainer.Visible = true
    GradientContainer.Size = UDim2.new(0, 0, 0, 0)
    GradientContainer.Position = UDim2.new(0.5, 0, 0.5, 0)
    
    local tweenInfo = TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out)
    local openTween = TweenService:Create(GradientContainer, tweenInfo, {
        Size = UDim2.new(0, 420, 0, 480),
        Position = UDim2.new(0.5, -210, 0.5, -240)
    })
    openTween:Play()
end

local function closeGUI()
    isOpen = false
    
    local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.In)
    local closeTween = TweenService:Create(GradientContainer, tweenInfo, {
        Size = UDim2.new(0, 0, 0, 0),
        Position = UDim2.new(0.5, 0, 0.5, 0)
    })
    closeTween:Play()
    
    closeTween.Completed:Connect(function()
        GradientContainer.Visible = false
    end)
end

OpenButton.MouseButton1Click:Connect(function()
    if isOpen then
        closeGUI()
    else
        openGUI()
    end
end)

CloseButton.MouseButton1Click:Connect(function()
    closeGUI()
end)

-- Auto Max Money Toggle
MaxMoneyToggle.MouseButton1Click:Connect(function()
    if IsAutoMaxMoney then
        IsAutoMaxMoney = false
        MaxMoneyToggle.Text = "START"
        MaxMoneyToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
        MaxMoneyToggleStroke.Color = Color3.fromRGB(0, 150, 255)
        MaxMoneyStatus.Text = "Auto farm stopped"
    else
        IsAutoMaxMoney = true
        MaxMoneyToggle.Text = "STOP"
        MaxMoneyToggle.TextColor3 = Color3.fromRGB(255, 100, 100)
        MaxMoneyToggleStroke.Color = Color3.fromRGB(255, 100, 100)
        MaxMoneyStatus.Text = "Auto farming ice fruit..."
        
        task.spawn(function()
            while IsAutoMaxMoney do
                pcall(IceFruitSell)
                task.wait(4)
            end
        end)
    end
end)

-- Clean Money Toggle
CleanMoneyToggle.MouseButton1Click:Connect(function()
    if IsAutoCleanMoney then
        IsAutoCleanMoney = false
        CleanMoneyToggle.Text = "START"
        CleanMoneyToggle.TextColor3 = Color3.fromRGB(0, 150, 255)
        CleanMoneyToggleStroke.Color = Color3.fromRGB(0, 150, 255)
        CleanMoneyStatus.Text = "Auto clean stopped"
    else
        IsAutoCleanMoney = true
        CleanMoneyToggle.Text = "STOP"
        CleanMoneyToggle.TextColor3 = Color3.fromRGB(255, 100, 100)
        CleanMoneyToggleStroke.Color = Color3.fromRGB(255, 100, 100)
        CleanMoneyStatus.Text = "Cleaning money..."
        
        task.spawn(function()
            while IsAutoCleanMoney do
                pcall(CleanMoney)
                task.wait(2)
            end
        end)
    end
end)

ScreenGui.Parent = PlayerGui

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: