diff --git a/esoui/ingame/crafting/gamepad/smithingcreation_gamepad.lua b/esoui/ingame/crafting/gamepad/smithingcreation_gamepad.lua
index 029f85e..6ae780c 100755
--- a/esoui/ingame/crafting/gamepad/smithingcreation_gamepad.lua
+++ b/esoui/ingame/crafting/gamepad/smithingcreation_gamepad.lua
@@ -1,10 +1,12 @@
 local GAMEPAD_SMITHING_CREATION_OPTIONS_SCENE_NAME = "gamepad_smithing_creation_options"
 
-local GAMEPAD_SMITHING_CREATION_OPTIONS_TEMPLATE = "ZO_GamepadLeftCheckboxOptionTemplate"
+local GAMEPAD_SMITHING_CREATION_OPTIONS_TEMPLATE = "ZO_CheckBoxTemplate_Gamepad"
 
 local GAMEPAD_SMITHING_CREATION_OPTION_FILTER_MATERIALS = 1
 local GAMEPAD_SMITHING_CREATION_OPTION_FILTER_KNOWLEDGE = 2
 
+local GAMEPAD_SMITHING_TOGGLE_TYPE_STYLE = 1
+
 local g_options =
 {
     [GAMEPAD_SMITHING_CREATION_OPTION_FILTER_MATERIALS] =
@@ -21,6 +23,23 @@ local g_options =
 
 ZO_GAMEPAD_SMITHING_CONTAINER_ITEM_PADDING_Y = 3
 
+--[[ SmithingHorizontalScrollList ]]--
+ZO_SmithingHorizontalScrollList_Gamepad = ZO_HorizontalScrollList_Gamepad:Subclass()
+
+function ZO_SmithingHorizontalScrollList_Gamepad:New(...)
+    return ZO_HorizontalScrollList_Gamepad.New(self, ...)
+end
+
+function ZO_SmithingHorizontalScrollList_Gamepad:SetToggleType(type)
+    self.toggleType = type
+end
+
+function ZO_SmithingHorizontalScrollList_Gamepad:GetToggleType()
+    return self.toggleType
+end
+
+--[[ ZO_GamepadSmithingCreation ]]--
+
 ZO_GamepadSmithingCreation = ZO_SharedSmithingCreation:Subclass()
 
 function ZO_GamepadSmithingCreation:New(...)
@@ -68,6 +87,10 @@ function ZO_GamepadSmithingCreation:Initialize(panelControl, floatingControl, ow
             GAMEPAD_CRAFTING_RESULTS:SetTooltipAnimationSounds(self:GetCreateTooltipSound())
 
             self:RefreshScrollPanel()
+
+            SCENE_MANAGER:AddFragment(self.universalStyleItemInfoFragment)
+
+            self:TriggerUSITutorial()
         elseif newState == SCENE_HIDDEN then
             GAMEPAD_CRAFTING_RESULTS:SetCraftingTooltip(nil)
             ZO_InventorySlot_RemoveMouseOverKeybinds()
@@ -81,6 +104,7 @@ function ZO_GamepadSmithingCreation:Initialize(panelControl, floatingControl, ow
 			self.owner:SetEnableSkillBar(false)
 
 			ZO_GamepadGenericHeader_Deactivate(self.owner.header)
+            SCENE_MANAGER:RemoveFragment(self.universalStyleItemInfoFragment)
         end
     end)
 
@@ -123,14 +147,49 @@ function ZO_GamepadSmithingCreation:Initialize(panelControl, floatingControl, ow
             end
 
             self.isCrafting = false
+
+            self:RefreshTooltips()
         end
     end)
 end
 
+function ZO_GamepadSmithingCreation:UpdateUniversalStyleItemBarInfo()
+    local universalStyleItemCount = GetCurrentSmithingStyleItemCount(ZO_ADJUSTED_UNIVERSAL_STYLE_ITEM_INDEX)
+    local amountControl = self.universalStyleItemInfo:GetNamedChild("Amount")
+    local textureControl = self.universalStyleItemInfo:GetNamedChild("USITexture")
+    amountControl:SetText(universalStyleItemCount)
+    if universalStyleItemCount == 0 then
+        amountControl:SetColor(ZO_ERROR_COLOR:UnpackRGBA())
+        textureControl:SetColor(ZO_ERROR_COLOR:UnpackRGBA())
+    else
+        amountControl:SetColor(ZO_DEFAULT_ENABLED_COLOR:UnpackRGB())
+        textureControl:SetColor(ZO_DEFAULT_ENABLED_COLOR:UnpackRGB())
+    end
+end
+
+function ZO_GamepadSmithingCreation:InitializeUniversalStyleItemInfo()
+    self.universalStyleItemInfo = SMITHING_GAMEPAD.skillInfoBar:GetNamedChild("UniversalStyleItemAmount")
+    self.universalStyleItemInfo:SetHidden(true)
+    self.universalStyleItemInfoFragment = ZO_FadeSceneFragment:New(self.universalStyleItemInfo)
+    local textureControl = self.universalStyleItemInfo:GetNamedChild("USITexture")
+    local itemLink = self:GetUniversalStyleItemLink()
+    local icon = GetItemLinkInfo(itemLink)
+    textureControl:SetTexture(icon)
+
+    local function HandleInventoryChanged()
+        self:UpdateUniversalStyleItemBarInfo()
+    end
+
+    self.universalStyleItemInfo:RegisterForEvent(EVENT_INVENTORY_FULL_UPDATE, HandleInventoryChanged)
+    self.universalStyleItemInfo:RegisterForEvent(EVENT_INVENTORY_SINGLE_SLOT_UPDATE, HandleInventoryChanged)
+
+    self:UpdateUniversalStyleItemBarInfo()
+end
+
 function ZO_GamepadSmithingCreation:PerformDeferredInitialization()
     if self.keybindStripDescriptor then return end
 
-    local scrollListControl = ZO_HorizontalScrollList_Gamepad
+    local scrollListControl = ZO_SmithingHorizontalScrollList_Gamepad
     local traitUnknownFont = "ZoFontGamepadCondensed34"
     local notEnoughInInventoryFont = "ZoFontGamepadCondensed34"
     local listSlotTemplate = "ZO_GamepadSmithingListSlot"
@@ -154,6 +213,10 @@ function ZO_GamepadSmithingCreation:PerformDeferredInitialization()
 
     self:SetupScrollPanel()
     self:InitializeFocusItems()
+
+    self:InitializeUniversalStyleItemInfo()
+
+    self.styleList:SetToggleType(GAMEPAD_SMITHING_TOGGLE_TYPE_STYLE)
 end
 
 do
@@ -277,9 +340,8 @@ function ZO_GamepadSmithingCreation:InitializeKeybindStripDescriptors()
 		SCENE_MANAGER:HideCurrentScene()
     end
 
-    self.keybindStripDescriptor =
-    {
     -- Perform craft
+    local craftButton =
     {
         keybind = "UI_SHORTCUT_SECONDARY",
         alignment = KEYBIND_STRIP_ALIGN_LEFT,
@@ -301,8 +363,52 @@ function ZO_GamepadSmithingCreation:InitializeKeybindStripDescriptors()
                 return self:IsCraftable()
             end
         end
-        },
+    }
+
+    local function ShowUniversalItemKeybind()
+        if self.selectedList and self.selectedList:GetToggleType() then
+            if self.selectedList:GetToggleType() == GAMEPAD_SMITHING_TOGGLE_TYPE_STYLE then
+                return true
+            end
+        else
+            return false
+        end
+    end
+
+    local toggleTypeButton =
+    {
+        keybind = "UI_SHORTCUT_PRIMARY",
+        alignment = KEYBIND_STRIP_ALIGN_LEFT,
+
+        name = GetString(SI_GAMEPAD_SMITHING_TOGGLE_UNIVERSAL_STYLE),
+
+        callback = function()
+            local haveMaterialChecked = self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_MATERIALS].checked
+            local haveKnowledgeChecked = self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_KNOWLEDGE].checked
+            self:OnFilterChanged(haveMaterialChecked, haveKnowledgeChecked, not  self:GetIsUsingUniversalStyleItem())
+            self:RefreshStyleList()
+            self:RefreshTooltips()
+        end,
+
+        visible = ShowUniversalItemKeybind
+    }
+
+    local purchaseButton = 
+    {
+        keybind= "UI_SHORTCUT_RIGHT_STICK",
+        alignment = KEYBIND_STRIP_ALIGN_LEFT,
+
+        name = GetString(SI_GAMEPAD_SMITHING_PURCHASE_MORE),
+
+        callback = function()
+            ShowMarketAndSearch("", MARKET_OPEN_OPERATION_UNIVERSAL_STYLE_ITEM)
+        end,
 
+        visible = ShowUniversalItemKeybind
+    }
+
+    self.keybindStripDescriptor =
+    {
         -- Options (filtering)
         {
             alignment = KEYBIND_STRIP_ALIGN_LEFT,
@@ -322,8 +428,11 @@ function ZO_GamepadSmithingCreation:InitializeKeybindStripDescriptors()
         },
     }
 
+	table.insert(self.keybindStripDescriptor, craftButton)
 	table.insert(self.keybindStripDescriptor, startButton)
 	table.insert(self.keybindStripDescriptor, backButton)
+    table.insert(self.keybindStripDescriptor, toggleTypeButton)
+    table.insert(self.keybindStripDescriptor, purchaseButton)
     ZO_CraftingUtils_ConnectKeybindButtonGroupToCraftingProcess(self.keybindStripDescriptor)
 
     -- options list keybinds
@@ -331,6 +440,21 @@ function ZO_GamepadSmithingCreation:InitializeKeybindStripDescriptors()
     ZO_Gamepad_AddForwardNavigationKeybindDescriptors(self.optionsKeybindStripDescriptor, GAME_NAVIGATION_TYPE_BUTTON, function() self:SelectOption() end)
     table.insert(self.optionsKeybindStripDescriptor, startButton)
 	table.insert(self.optionsKeybindStripDescriptor, optionsBackButton)
+
+end
+
+function ZO_GamepadSmithingCreation:RefreshTooltips()
+    if self.selectedList and self.selectedList:GetToggleType() then
+        if self.selectedList:GetToggleType() == GAMEPAD_SMITHING_TOGGLE_TYPE_STYLE then
+            if self.savedVars.useUniversalStyleItemChecked then
+                GAMEPAD_TOOLTIPS:LayoutUniversalStyleItem(GAMEPAD_LEFT_TOOLTIP, self:GetUniversalStyleItemLink())
+            else
+                GAMEPAD_TOOLTIPS:ClearTooltip(GAMEPAD_LEFT_TOOLTIP)
+            end
+        end
+    else
+        GAMEPAD_TOOLTIPS:ClearTooltip(GAMEPAD_LEFT_TOOLTIP)
+    end
 end
 
 do
@@ -338,9 +462,12 @@ do
 
     function ZO_GamepadSmithingCreation:InitializeFocusItems()
         self.activateFn = function(focus, data)
+            self.selectedList = focus
             focus:Activate()
             self:UpdateScrollPanel(focus)
+            KEYBIND_STRIP:UpdateKeybindButtonGroup(self.keybindStripDescriptor)
             self:UpdateBorderHighlight(focus, ACTIVE)
+            self:RefreshTooltips()
         end
 
         self.deactivateFn = function(focus, data)
@@ -360,9 +487,12 @@ do
                 control = self.materialQuantitySpinner,
                 canFocus = function(item) return not item:GetControl():IsHidden() end,
                 activate = function(focus, data)
+                    self.selectedList = nil
+                    KEYBIND_STRIP:UpdateKeybindButtonGroup(self.keybindStripDescriptor)
                     self:ActivateMaterialQuantitySpinner()
                     self:UpdateScrollPanel(focus)
                     self:UpdateBorderHighlight(focus, ACTIVE)
+                    self:RefreshTooltips()
                 end,
             },
             {
@@ -445,23 +575,52 @@ function ZO_GamepadSmithingCreation:UpdateBorderHighlight(focus, active)
     focusControlParent.activeBG:SetHidden(not active)
 end
 
+function ZO_GamepadSmithingCreation:UpdateUniversalStyleItemInfo()
+    self:RefreshFilters()
+    self:RefreshStyleList()
+end
+
 function ZO_GamepadSmithingCreation:InitializeOptionList()
     self.optionList = ZO_GamepadVerticalItemParametricScrollList:New(self.panelControl:GetNamedChild("OptionsList"))
     self.optionList:SetAlignToScreenCenter(true)
 
-    self.optionList:AddDataTemplate(GAMEPAD_SMITHING_CREATION_OPTIONS_TEMPLATE, ZO_GamepadCheckboxOptionTemplate_Setup, ZO_GamepadMenuEntryTemplateParametricListFunction)
-    self.optionList:AddDataTemplateWithHeader(GAMEPAD_SMITHING_CREATION_OPTIONS_TEMPLATE, ZO_GamepadCheckboxOptionTemplate_Setup, ZO_GamepadMenuEntryTemplateParametricListFunction, nil, "ZO_GamepadOptionsMenuEntryHeaderTemplate")
+    self.optionList:AddDataTemplate(GAMEPAD_SMITHING_CREATION_OPTIONS_TEMPLATE, ZO_GamepadCheckBoxTemplate_Setup, ZO_GamepadMenuEntryTemplateParametricListFunction)
+    self.optionList:AddDataTemplateWithHeader(GAMEPAD_SMITHING_CREATION_OPTIONS_TEMPLATE, ZO_GamepadCheckBoxTemplate_Setup, ZO_GamepadMenuEntryTemplateParametricListFunction, nil, "ZO_GamepadOptionsMenuEntryHeaderTemplate")
+
+    local function HandleInventoryChanged()
+        self:UpdateUniversalStyleItemInfo()
+    end
+
+    self.control:RegisterForEvent(EVENT_INVENTORY_FULL_UPDATE, HandleInventoryChanged)
+    self.control:RegisterForEvent(EVENT_INVENTORY_SINGLE_SLOT_UPDATE, HandleInventoryChanged)
 
     self.optionDataList = {}
     self:SetupOptionData()
+
+    self.optionList:SetOnSelectedDataChangedCallback(
+        function(list, selectedData)
+            self.currentlySelectedOptionData = selectedData
+            self:UpdateOptionLeftTooltip(selectedData)
+        end
+    )
+end
+
+function ZO_GamepadSmithingCreation:UpdateOptionLeftTooltip(selectedData)
+    if selectedData then
+        if selectedData.optionType == GAMEPAD_SMITHING_CREATION_OPTION_FILTER_KNOWLEDGE then
+            GAMEPAD_TOOLTIPS:LayoutTitleAndDescriptionTooltip(GAMEPAD_LEFT_TOOLTIP, selectedData.text, GetString(SI_CRAFTING_HAVE_KNOWLEDGE_TOOLTIP))
+        elseif selectedData.optionType == GAMEPAD_SMITHING_CREATION_OPTION_FILTER_MATERIALS then
+            GAMEPAD_TOOLTIPS:LayoutTitleAndDescriptionTooltip(GAMEPAD_LEFT_TOOLTIP, selectedData.text, GetString(SI_CRAFTING_HAVE_MATERIALS_TOOLTIP))
+        end
+    end
 end
 
 function ZO_GamepadSmithingCreation:SetupSavedVars()
-    local defaults = { haveMaterialChecked = false, haveKnowledgeChecked = false, }
+    local defaults = { haveMaterialChecked = false, haveKnowledgeChecked = false, useUniversalStyleItemChecked = false}
     self.savedVars = ZO_SavedVars:New("ZO_Ingame_SavedVariables", 2, "GamepadSmithingCreation", defaults)
 
-    self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_MATERIALS].currentValue = self.savedVars.haveMaterialChecked
-    self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_KNOWLEDGE].currentValue = self.savedVars.haveKnowledgeChecked
+    self:AddCheckedStateToOption(GAMEPAD_SMITHING_CREATION_OPTION_FILTER_MATERIALS, self.savedVars.haveMaterialChecked)
+    self:AddCheckedStateToOption(GAMEPAD_SMITHING_CREATION_OPTION_FILTER_KNOWLEDGE, self.savedVars.haveKnowledgeChecked)
 
    	if self.savedVars.haveKnowledgeChecked then
 		self:SelectValidKnowledgeIndices()
@@ -469,6 +628,12 @@ function ZO_GamepadSmithingCreation:SetupSavedVars()
     self:HandleDirtyEvent()
 end
 
+function ZO_GamepadSmithingCreation:AddCheckedStateToOption(option, checkedState)
+    if self.optionDataList[option] then
+        self.optionDataList[option].checked = checkedState
+    end
+end
+
 function ZO_GamepadSmithingCreation:ShowOptions()
     SCENE_MANAGER:Push(GAMEPAD_SMITHING_CREATION_OPTIONS_SCENE_NAME)
 end
@@ -485,14 +650,19 @@ function ZO_GamepadSmithingCreation:SetupOptionData()
         end
 
         local newOptionData = ZO_GamepadEntryData:New(optionInfo.optionName)
+        local savedVarTarget = optionInfo.toggleFunctionTarget
+        newOptionData.setChecked = function(control,checked) 
+                                        self.optionDataList[key].checked = checked
+                                   end
         newOptionData:SetHeader(headerText)
+        newOptionData.optionType = key
 
         self.optionDataList[key] = newOptionData
     end
 
 	if self.savedVars then
-		self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_MATERIALS].currentValue = self.savedVars.haveMaterialChecked
-		self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_KNOWLEDGE].currentValue = self.savedVars.haveKnowledgeChecked
+		self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_MATERIALS].checked = self.savedVars.haveMaterialChecked
+		self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_KNOWLEDGE].checked = self.savedVars.haveKnowledgeChecked
 	end
 end
 
@@ -513,17 +683,19 @@ function ZO_GamepadSmithingCreation:RefreshOptionList()
 end
 
 function ZO_GamepadSmithingCreation:SelectOption()
-    ZO_GamepadCraftingUtils_SelectOptionFromOptionList(self)
+    local targetControl = self.optionList:GetTargetControl()
+    ZO_GamepadCheckBoxTemplate_OnClicked(targetControl)
+    self:RefreshFilters()
 end
 
 function ZO_GamepadSmithingCreation:RefreshFilters()
-    local haveMaterialChecked = self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_MATERIALS].currentValue
-    local haveKnowledgeChecked = self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_KNOWLEDGE].currentValue
+    local haveMaterialChecked = self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_MATERIALS].checked
+    local haveKnowledgeChecked = self.optionDataList[GAMEPAD_SMITHING_CREATION_OPTION_FILTER_KNOWLEDGE].checked
 
     local filterChanged = (haveMaterialChecked ~= self.savedVars.haveMaterialChecked) or
                           (haveKnowledgeChecked ~= self.savedVars.haveKnowledgeChecked)
     if filterChanged then
-        self:OnFilterChanged(haveMaterialChecked, haveKnowledgeChecked)
+        self:OnFilterChanged(haveMaterialChecked, haveKnowledgeChecked,  self:GetIsUsingUniversalStyleItem())
     end
 end
 
@@ -556,6 +728,7 @@ do
         [SI_SMITHING_MATERIAL_QUANTITY] = SI_GAMEPAD_SMITHING_MATERIAL_QUANTITY,
         [SI_SMITHING_STYLE_DESCRIPTION] = SI_GAMEPAD_SMITHING_STYLE_DESCRIPTION,
         [SI_SMITHING_TRAIT_DESCRIPTION] = SI_GAMEPAD_SMITHING_TRAIT_DESCRIPTION,
+        [SI_CRAFTING_UNIVERSAL_STYLE_DESCRIPTION] = SI_GAMEPAD_SMITHING_UNIVERSAL_STYLE_DESCRIPTION,
     }
 
     function ZO_GamepadSmithingCreation:GetPlatformFormattedTextString(stringId, ...)