diff --git a/init/skins.xml b/init/skins.xml
index 89a0a3af..16d3c957 100644
--- a/init/skins.xml
+++ b/init/skins.xml
@@ -39,6 +39,13 @@
+
+
+
+
+
+
+
diff --git a/skins/blizzard/arena_score.lua b/skins/blizzard/arena_score.lua
new file mode 100644
index 00000000..41d784b0
--- /dev/null
+++ b/skins/blizzard/arena_score.lua
@@ -0,0 +1,22 @@
+pfUI:RegisterSkin("Arena Score", "vanilla", function ()
+ if not ArenaScoreFrame then return end
+
+ local rawborder, border = GetBorderSize()
+ local bpad = rawborder > 1 and border - GetPerfectPixel() or GetPerfectPixel()
+
+ -- Main frame
+ StripTextures(ArenaScoreFrame)
+ CreateBackdrop(ArenaScoreFrame, nil, nil, .75)
+ CreateBackdropShadow(ArenaScoreFrame)
+
+ ArenaScoreFrame.backdrop:SetPoint("TOPLEFT", 10, -14)
+ ArenaScoreFrame.backdrop:SetPoint("BOTTOMRIGHT", -112, 68)
+ ArenaScoreFrame:SetHitRectInsets(10, 112, 14, 68)
+
+ -- Close button
+ SkinCloseButton(ArenaScoreFrameCloseButton, ArenaScoreFrame.backdrop, -6, -6)
+
+ -- Title
+ ArenaScoreFrameTitle:ClearAllPoints()
+ ArenaScoreFrameTitle:SetPoint("TOP", ArenaScoreFrame.backdrop, "TOP", 0, -10)
+end)
diff --git a/skins/blizzard/barbershop.lua b/skins/blizzard/barbershop.lua
new file mode 100644
index 00000000..1bdf1395
--- /dev/null
+++ b/skins/blizzard/barbershop.lua
@@ -0,0 +1,75 @@
+pfUI:RegisterSkin("Barbershop", "vanilla", function ()
+ if not BarbershopFrame then return end
+
+ local rawborder, border = GetBorderSize()
+ local bpad = rawborder > 1 and border - GetPerfectPixel() or GetPerfectPixel()
+
+ -- Main frame
+ StripTextures(BarbershopFrame)
+ CreateBackdrop(BarbershopFrame, nil, nil, .75)
+ CreateBackdropShadow(BarbershopFrame)
+
+ BarbershopFrame.backdrop:SetPoint("TOPLEFT", 0, 0)
+ BarbershopFrame.backdrop:SetPoint("BOTTOMRIGHT", 0, 0)
+ EnableMovable(BarbershopFrame)
+
+ -- Banner frame (title decoration)
+ StripTextures(BarbershopBannerFrame)
+
+ -- Selectors (hair style, color, facial hair)
+ for i = 1, 3 do
+ local selector = _G["BarbershopFrameSelector" .. i]
+ if selector then
+ StripTextures(selector)
+ CreateBackdrop(selector, nil, true)
+
+ local prev = _G["BarbershopFrameSelector" .. i .. "Prev"]
+ local next = _G["BarbershopFrameSelector" .. i .. "Next"]
+ if prev then
+ StripTextures(prev)
+ SkinArrowButton(prev, "left", 18)
+ end
+ if next then
+ StripTextures(next)
+ SkinArrowButton(next, "right", 18)
+ end
+ end
+ end
+
+ -- Money frame border
+ if BarbershopFrameMoneyFrame then
+ StripTextures(BarbershopFrameMoneyFrame)
+ end
+
+ -- Buttons
+ SkinButton(BarbershopFrameOkayButton)
+ SkinButton(BarbershopFrameCancelButton)
+ SkinButton(BarbershopFrameResetButton)
+
+ -- Fix: disable TargetFrameDebuff OnEnter scripts while barbershop is open
+ -- to prevent SetUnitDebuff crash (TargetFrame is hidden but scripts remain active)
+ local savedOnEnter = {}
+
+ local origOnShow = BarbershopFrame:GetScript("OnShow")
+ BarbershopFrame:SetScript("OnShow", function()
+ for i = 1, 16 do
+ local debuff = _G["TargetFrameDebuff" .. i]
+ if debuff then
+ savedOnEnter[i] = debuff:GetScript("OnEnter")
+ debuff:SetScript("OnEnter", nil)
+ end
+ end
+ if origOnShow then origOnShow() end
+ end)
+
+ local origOnHide = BarbershopFrame:GetScript("OnHide")
+ BarbershopFrame:SetScript("OnHide", function()
+ for i = 1, 16 do
+ local debuff = _G["TargetFrameDebuff" .. i]
+ if debuff and savedOnEnter[i] then
+ debuff:SetScript("OnEnter", savedOnEnter[i])
+ end
+ end
+ if origOnHide then origOnHide() end
+ end)
+end)
diff --git a/skins/blizzard/custom_merchant.lua b/skins/blizzard/custom_merchant.lua
new file mode 100644
index 00000000..0084a667
--- /dev/null
+++ b/skins/blizzard/custom_merchant.lua
@@ -0,0 +1,51 @@
+pfUI:RegisterSkin("Custom Merchant", "vanilla", function ()
+ if not CustomMerchantFrame then return end
+
+ local rawborder, border = GetBorderSize()
+ local bpad = rawborder > 1 and border - GetPerfectPixel() or GetPerfectPixel()
+
+ -- Main frame
+ StripTextures(CustomMerchantFrame)
+ CreateBackdrop(CustomMerchantFrame, nil, nil, .75)
+ CreateBackdropShadow(CustomMerchantFrame)
+
+ CustomMerchantFrame.backdrop:SetPoint("TOPLEFT", 10, -10)
+ CustomMerchantFrame.backdrop:SetPoint("BOTTOMRIGHT", -32, 58)
+ CustomMerchantFrame:SetHitRectInsets(10, 32, 10, 58)
+ EnableMovable(CustomMerchantFrame)
+
+ -- Close button
+ SkinCloseButton(CustomMerchantFrameCloseButton, CustomMerchantFrame.backdrop, -6, -6)
+
+ -- Title
+ CustomMerchantNameText:ClearAllPoints()
+ CustomMerchantNameText:SetPoint("TOP", CustomMerchantFrame.backdrop, "TOP", 0, -10)
+
+ -- Item frames
+ for i = 1, 10 do
+ local item = _G["CustomMerchantItem" .. i]
+ if item then
+ StripTextures(item)
+
+ local bg = item:CreateTexture(nil, "LOW")
+ bg:SetTexture(1, 1, 1, .05)
+ bg:SetAllPoints()
+
+ local itemButton = _G["CustomMerchantItem" .. i .. "ItemButton"]
+ if itemButton then
+ StripTextures(itemButton)
+ SkinButton(itemButton, nil, nil, nil, _G[itemButton:GetName() .. "IconTexture"])
+ end
+ end
+ end
+
+ -- Pagination buttons
+ if CustomMerchantPrevPageButton then
+ StripTextures(CustomMerchantPrevPageButton)
+ SkinArrowButton(CustomMerchantPrevPageButton, "left", 18)
+ end
+ if CustomMerchantNextPageButton then
+ StripTextures(CustomMerchantNextPageButton)
+ SkinArrowButton(CustomMerchantNextPageButton, "right", 18)
+ end
+end)
diff --git a/skins/blizzard/ebc.lua b/skins/blizzard/ebc.lua
new file mode 100644
index 00000000..012c399e
--- /dev/null
+++ b/skins/blizzard/ebc.lua
@@ -0,0 +1,30 @@
+pfUI:RegisterSkin("Everlook Broadcasting", "vanilla", function ()
+ if not EBC_Minimap then return end
+
+ -- Minimap button border
+ for _, region in ipairs({ EBC_Minimap:GetRegions() }) do
+ if region.GetTexture and region:GetTexture() == "Interface\\Minimap\\MiniMap-TrackingBorder" then
+ region:SetTexture(nil)
+ end
+ end
+
+ -- Dropdown panel
+ if EBCMinimapDropdown then
+ StripTextures(EBCMinimapDropdown)
+ CreateBackdrop(EBCMinimapDropdown, nil, nil, .75)
+ CreateBackdropShadow(EBCMinimapDropdown)
+
+ -- Checkbuttons
+ for i = 1, 2 do
+ local cb = _G["EBCMinimapDropdownCheckButton" .. i]
+ if cb then
+ SkinCheckbox(cb)
+ end
+ end
+
+ -- Volume slider
+ if EBCMinimapDropdownSlider then
+ SkinSlider(EBCMinimapDropdownSlider)
+ end
+ end
+end)
diff --git a/skins/blizzard/transmog.lua b/skins/blizzard/transmog.lua
new file mode 100644
index 00000000..f7127201
--- /dev/null
+++ b/skins/blizzard/transmog.lua
@@ -0,0 +1,73 @@
+pfUI:RegisterSkin("Transmog", "vanilla", function ()
+ if not TransmogFrame then return end
+
+ local rawborder, border = GetBorderSize()
+ local bpad = rawborder > 1 and border - GetPerfectPixel() or GetPerfectPixel()
+
+ -- Main frame
+ StripTextures(TransmogFrame, true)
+ CreateBackdrop(TransmogFrame, nil, nil, .75)
+ CreateBackdropShadow(TransmogFrame)
+
+ TransmogFrame.backdrop:SetPoint("TOPLEFT", 14, -10)
+ TransmogFrame.backdrop:SetPoint("BOTTOMRIGHT", -14, 10)
+ TransmogFrame:SetHitRectInsets(14, 14, 10, 10)
+ EnableMovable(TransmogFrame)
+
+ -- Close button
+ SkinCloseButton(TransmogFrameCloseButton, TransmogFrame.backdrop, -6, -6)
+
+ -- Title
+ TransmogFrameTitleText:ClearAllPoints()
+ TransmogFrameTitleText:SetPoint("TOP", TransmogFrame.backdrop, "TOP", 0, -10)
+
+ -- Search box
+ if TransmogFrameSearch then
+ StripTextures(TransmogFrameSearch)
+ CreateBackdrop(TransmogFrameSearch)
+ end
+
+ -- Outfits dropdown
+ if TransmogFrameOutfits then
+ SkinDropDown(TransmogFrameOutfits)
+ end
+
+ -- Tab buttons (Items / Outfits)
+ if TransmogFrameItemsButton then SkinButton(TransmogFrameItemsButton) end
+ if TransmogFrameSetsButton then SkinButton(TransmogFrameSetsButton) end
+ if TransmogFrameApplyButton then SkinButton(TransmogFrameApplyButton) end
+ if TransmogFrameSaveOutfit then SkinButton(TransmogFrameSaveOutfit) end
+
+ -- Arrow buttons (pagination)
+ if TransmogFrameLeftArrow then
+ StripTextures(TransmogFrameLeftArrow)
+ SkinArrowButton(TransmogFrameLeftArrow, "left", 18)
+ end
+ if TransmogFrameRightArrow then
+ StripTextures(TransmogFrameRightArrow)
+ SkinArrowButton(TransmogFrameRightArrow, "right", 18)
+ end
+
+ -- Equipment slot buttons
+ local slots = {
+ "HeadSlot", "ShoulderSlot", "BackSlot", "ChestSlot",
+ "ShirtSlot", "TabardSlot", "WristSlot", "HandsSlot",
+ "WaistSlot", "LegsSlot", "FeetSlot",
+ "MainHandSlot", "SecondaryHandSlot", "RangedSlot",
+ }
+
+ for _, name in ipairs(slots) do
+ local slot = _G[name]
+ if slot then
+ local icon = _G[name .. "ItemIcon"]
+ StripTextures(slot)
+ CreateBackdrop(slot, nil, true)
+ if icon then
+ icon:SetTexCoord(.08, .92, .08, .92)
+ icon:ClearAllPoints()
+ icon:SetPoint("TOPLEFT", slot, "TOPLEFT", 1, -1)
+ icon:SetPoint("BOTTOMRIGHT", slot, "BOTTOMRIGHT", -1, 1)
+ end
+ end
+ end
+end)