PageSourceSearch

https://wpfactory.com/blog/

html wpfactory.com collected 2026-10-02 10:00:05 UTC 178,556 bytes, 2,281 lines download raw bytes

1<!doctype html>
2<html lang="en-US" prefix="og: https://ogp.me/ns#">
3<head>
4<meta charset="UTF-8">
5<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
6<meta name="theme-color" content="#FFFFFF" media="(prefers-color-scheme: light)">
7<meta name="theme-color" content="#0A0E1A" media="(prefers-color-scheme: dark)">
8<link rel="profile" href="https://gmpg.org/xfn/11">
9<link rel="pingback" href="https://wpfactory.com/xmlrpc.php">
10
11<!-- Pre-paint theme set: prevents dark-mode flash. Defaults to light on first visit; respects saved preference on return. -->
12<script>(function(){try{var s=localStorage.getItem('wpf-theme');document.documentElement.setAttribute('data-theme',s||'light');}catch(e){}})();</script>
12
13
14<!-- Fonts: Inter (UI), JetBrains Mono (numerics), Caveat (accents) -->
15<link rel="preconnect" href="https://fonts.googleapis.com">
16<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
17<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=Caveat:wght@600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
18
19<!-- Google Tag Manager -->
20	
20<script>
vendor: 331 bytes, lines 20-24
20(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
21	new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
22	j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
23	'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
24	})(window,document,'script','dataLayer','
24GTM-K2S23LK
vendor: 3 bytes, line 24
24');
24</script>
24
25	<!-- End Google Tag Manager -->
25<script data-cfasync="false" data-cookieconsent="ignore" data-ezscrex="false" data-no-defer="1" data-pagespeed-no-defer>
26var ctPublicFunctions = {"_ajax_nonce":"0863f401ff","_rest_nonce":"a989a8ebef","_ajax_url":"\/wp-admin\/admin-ajax.php","_rest_url":"https:\/\/wpfactory.com\/wp-json\/","data__cookies_type":"alternative","data__ajax_type":"rest","bot_detector_enabled":true,"data__frontend_data_log_enabled":1,"data__bot_detector_enabled":1,"cookiePrefix":"","wprocket_detected":false,"host_url":"wpfactory.com","text__ee_click_to_select":"Click to select the whole data","text__ee_original_email":"The complete one is","text__ee_got_it":"Got it","text__ee_blocked":"Blocked","text__ee_cannot_connect":"Cannot connect","text__ee_cannot_decode":"Can not decode email. Unknown reason","text__ee_email_decoder":"CleanTalk email decoder","text__ee_wait_for_decoding":"The magic is on the way!","text__ee_decoding_process":"Please wait a few seconds while we decode the contact data."}
27</script>
vendor: 1 bytes, line 27
27
28<script data-cfasync="false" data-cookieconsent="ignore" data-ezscrex="false" data-no-defer="1" data-pagespeed-no-defer>
29var ctPublic = {"_ajax_nonce":"0863f401ff","settings__forms__check_internal":"1","settings__forms__check_external":"1","settings__forms__force_protection":"0","settings__forms__search_test":"1","settings__forms__wc_add_to_cart":"0","bot_detector_enabled":true,"settings__sfw__anti_crawler":0,"blog_home":"https:\/\/wpfactory.com\/","pixel__setting":"3","pixel__enabled":true,"pixel__url":null,"data__email_check_before_post":"1","data__email_check_exist_post":"1","data__cookies_type":"alternative","data__key_is_ok":true,"data__visible_fields_required":true,"wl_brandname":"Anti-Spam by CleanTalk","wl_brandname_short":"CleanTalk","ct_checkjs_key":"ac714095a4f56fd6a5081a67cfeee52db5a13ad307ee23ff8ac647d7ca5ed197","emailEncoderPassKey":"5975e56d77b6f8f4e231059643f34555","bot_detector_forms_excluded":"W10=","advancedCacheExists":false,"varnishCacheExists":true,"wc_ajax_add_to_cart":true,"theRealPerson":{"phrases":{"trpHeading":"The Real Person Badge!","trpContent1":"Verified as a real person and not a bot. The comment was approved without pre-moderation.","trpContent2":" Anti-Spam by CleanTalk","trpContentLearnMore":"Learn more"},"trpContentLink":"https:\/\/cleantalk.org\/help\/the-real-person?utm_id=&amp;utm_term=&amp;utm_source=admin_side&amp;utm_medium=trp_badge&amp;utm_content=trp_badge_link_click&amp;utm_campaign=apbct_links","imgPersonUrl":"https:\/\/wpfactory.com\/wp-content\/plugins\/cleantalk-spam-protect\/css\/images\/real_user.svg","imgShieldUrl":"https:\/\/wpfactory.com\/wp-content\/plugins\/cleantalk-spam-protect\/css\/images\/shield.svg"}}
30</script>
30
31
32<!-- Google Tag Manager for WordPress by gtm4wp.com -->
33<script data-cfasync="false" data-pagespeed-no-defer>
34	var gtm4wp_datalayer_name = "dataLayer";
35	var dataLayer = dataLayer || [];
36	(function(){function gtag(){dataLayer.push(arguments);}gtag('set', 'developer_id.dNGJiYT', true);})();
37	const gtm4wp_use_sku_instead = 1;
38	const gtm4wp_currency = "USD";
39	const gtm4wp_product_per_impression = 10;
40	const gtm4wp_clear_ecommerce = false;
41	const gtm4wp_datalayer_max_timeout = 2000;
42	const gtm4wp_console_log = true;
43	const gtm4wp_remarketing_prod_id_prefix = "";
44	const gtm4wp_list_attribution = 0;
45	const gtm4wp_checkoutwc = 0;
46</script>
46
47<!-- End Google Tag Manager for WordPress by gtm4wp.com -->	<link rel="preload"
48	      href="https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2"
49	      as="font"
50	      type="font/woff2"
51	      crossorigin>
52	
53<!-- Search Engine Optimization by Rank Math - https://rankmath.com/ -->
54<title>WooCommerce Tips &amp; Tutorials - WPFactory Blog</title>
55<meta name="description" content="Discover expert WooCommerce tips, tutorials, and strategies to optimize your store. Learn from real-world plugin development insights and ecommerce best practices."/>
56<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/>
57<link rel="canonical" href="https://wpfactory.com/blog/" />
58<link rel="next" href="https://wpfactory.com/blog/page/2/" />
59<meta property="og:locale" content="en_US" />
60<meta property="og:type" content="website" />
61<meta property="og:title" content="WooCommerce Tips &amp; Tutorials - WPFactory Blog" />
62<meta property="og:description" content="Discover expert WooCommerce tips, tutorials, and strategies to optimize your store. Learn from real-world plugin development insights and ecommerce best practices." />
63<meta property="og:url" content="https://wpfactory.com/blog/" />
64<meta property="og:site_name" content="WPFactory" />
65<meta name="twitter:card" content="summary_large_image" />
66<meta name="twitter:title" content="WooCommerce Tips &amp; Tutorials - WPFactory Blog" />
67<meta name="twitter:description" content="Discover expert WooCommerce tips, tutorials, and strategies to optimize your store. Learn from real-world plugin development insights and ecommerce best practices." />
68<script type="application/ld+json" class="rank-math-schema">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://wpfactory.com/#organization","name":"WPFactory","url":"https://wpfactory.com/","description":"WPFactory builds WooCommerce and WordPress plugins for online stores: 50+ plugins for pricing, quantities, checkout, payments, shipping, tax and store management.","foundingDate":"2013","sameAs":["https://profiles.wordpress.org/wpcodefactory/","https://github.com/wpcodefactory","https://www.linkedin.com/company/wpfactory","https://web.facebook.com/wordpresscodefactory"]},{"@type":"WebSite","@id":"https://wpfactory.com/#website","url":"https://wpfactory.com","name":"WPFactory","alternateName":"WP &amp; WC Plugins","publisher":{"@id":"https://wpfactory.com/#organization"},"inLanguage":"en-US"},{"@type":"CollectionPage","@id":"https://wpfactory.com/blog/#webpage","url":"https://wpfactory.com/blog/","name":"WooCommerce Tips &amp; Tutorials - WPFactory Blog","isPartOf":{"@id":"https://wpfactory.com/#website"},"inLanguage":"en-US"}]}</script>
68
69<!-- /Rank Math WordPress SEO plugin -->
70
71<link rel='dns-prefetch' href='//fd.cleantalk.org' />
72<link rel="alternate" type="application/rss+xml" title="WPFactory &raquo; Feed" href="https://wpfactory.com/feed/" />
73<link rel="alternate" type="application/rss+xml" title="WPFactory &raquo; Comments Feed" href="https://wpfactory.com/comments/feed/" />
74<!-- wpfactory.com is managing ads with Advanced Ads 2.0.26 – https://wpadvancedads.com/ -->
74<script id="wpfac-ready">
75			window.advanced_ads_ready=function(e,a){a=a||"complete";var d=function(e){return"interactive"===a?"loading"!==e:"complete"===e};d(document.readyState)?e():document.addEventListener("readystatechange",(function(a){d(a.target.readyState)&&e()}),{once:"interactive"===a})},window.advanced_ads_ready_queue=window.advanced_ads_ready_queue||[];		</script>
75
76		<style id="wp-img-auto-sizes-contain-inline-css">
77img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
78/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
79</style>
80<style id="wp-block-library-inline-css">
81:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
81--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
82
83/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
84</style>
85<style id="classic-theme-styles-inline-css">
86/*! This file is auto-generated */
87.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
88/*# sourceURL=/wp-includes/css/classic-themes.min.css */
89</style>
90
91<link rel='stylesheet' id='storefront-gutenberg-blocks-css' href='https://wpfactory.com/wp-content/themes/storefront/assets/css/base/gutenberg-blocks.css?ver=4.6.2' media='all' />
92<style id="storefront-gutenberg-blocks-inline-css">
93
94				.wp-block-button__link:not(.has-text-color) {
95					color: #333333;
96				}
97
98				.wp-block-button__link:not(.has-text-color):hover,
99				.wp-block-button__link:not(.has-text-color):focus,
100				.wp-block-button__link:not(.has-text-color):active {
101					color: #333333;
102				}
103
104				.wp-block-button__link:not(.has-background) {
105					background-color: #eeeeee;
106				}
107
108				.wp-block-button__link:not(.has-background):hover,
109				.wp-block-button__link:not(.has-background):focus,
110				.wp-block-button__link:not(.has-background):active {
111					border-color: #d5d5d5;
112					background-color: #d5d5d5;
113				}
114
115				.wc-block-grid__products .wc-block-grid__product .wp-block-button__link {
116					background-color: #eeeeee;
117					border-color: #eeeeee;
118					color: #333333;
119				}
120
121				.wp-block-quote footer,
122				.wp-block-quote cite,
123				.wp-block-quote__citation {
124					color: #6d6d6d;
125				}
126
127				.wp-block-pullquote cite,
128				.wp-block-pullquote footer,
129				.wp-block-pullquote__citation {
130					color: #6d6d6d;
131				}
132
133				.wp-block-image figcaption {
134					color: #6d6d6d;
135				}
136
137				.wp-block-separator.is-style-dots::before {
138					color: #333333;
139				}
140
141				.wp-block-file a.wp-block-file__button {
142					color: #333333;
143					background-color: #eeeeee;
144					border-color: #eeeeee;
145				}
146
147				.wp-block-file a.wp-block-file__button:hover,
148				.wp-block-file a.wp-block-file__button:focus,
149				.wp-block-file a.wp-block-file__button:active {
150					color: #333333;
151					background-color: #d5d5d5;
152				}
153
154				.wp-block-code,
155				.wp-block-preformatted pre {
156					color: #6d6d6d;
157				}
158
159				.wp-block-table:not( .has-background ):not( .is-style-stripes ) tbody tr:nth-child(2n) td {
160					background-color: #fdfdfd;
161				}
162
163				.wp-block-cover .wp-block-cover__inner-container h1:not(.has-text-color),
164				.wp-block-cover .wp-block-cover__inner-container h2:not(.has-text-color),
165				.wp-block-cover .wp-block-cover__inner-container h3:not(.has-text-color),
166				.wp-block-cover .wp-block-cover__inner-container h4:not(.has-text-color),
167				.wp-block-cover .wp-block-cover__inner-container h5:not(.has-text-color),
168				.wp-block-cover .wp-block-cover__inner-container h6:not(.has-text-color) {
169					color: #000000;
170				}
171
172				div.wc-block-components-price-slider__range-input-progress,
173				.rtl .wc-block-components-price-slider__range-input-progress {
174					--range-color: #7f54b3;
175				}
176
177				/* Target only IE11 */
178				@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
179					.wc-block-components-price-slider__range-input-progress {
180						background: #7f54b3;
181					}
182				}
183
184				.wc-block-components-button:not(.is-link) {
185					background-color: #333333;
186					color: #ffffff;
187				}
188
189				.wc-block-components-button:not(.is-link):hover,
190				.wc-block-components-button:not(.is-link):focus,
191				.wc-block-components-button:not(.is-link):active {
192					background-color: #1a1a1a;
193					color: #ffffff;
194				}
195
196				.wc-block-components-button:not(.is-link):disabled {
197					background-color: #333333;
198					color: #ffffff;
199				}
200
201				.wc-block-cart__submit-container {
202					background-color: #ffffff;
203				}
204
205				.wc-block-cart__submit-container::before {
206					color: rgba(220,220,220,0.5);
207				}
208
209				.wc-block-components-order-summary-item__quantity {
210					background-color: #ffffff;
211					border-color: #6d6d6d;
212					box-shadow: 0 0 0 2px #ffffff;
213					color: #6d6d6d;
214				}
215			
216/*# sourceURL=storefront-gutenberg-blocks-inline-css */
217</style>
218<link rel='stylesheet' id='bbp-default-css' href='https://wpfactory.com/wp-content/plugins/bbpress/templates/default/css/bbpress.min.css?ver=2.6.18' media='all' />
219<link rel='stylesheet' id='cleantalk-public-css-css' href='https://wpfactory.com/wp-content/plugins/cleantalk-spam-protect/css/cleantalk-public.min.css?ver=6.88_1789650612' media='all' />
220<link rel='stylesheet' id='cleantalk-email-decoder-css-css' href='https://wpfactory.com/wp-content/plugins/cleantalk-spam-protect/css/cleantalk-email-decoder.min.css?ver=6.88_1789650612' media='all' />
221<link rel='stylesheet' id='cleantalk-trp-css-css' href='https://wpfactory.com/wp-content/plugins/cleantalk-spam-protect/css/cleantalk-trp.min.css?ver=6.88_1789650612' media='all' />
222<style id="woocommerce-inline-inline-css">
223.woocommerce form .form-row .required { visibility: visible; }
224/*# sourceURL=woocommerce-inline-inline-css */
225</style>
226<link rel='stylesheet' id='affwp-forms-css' href='https://wpfactory.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.36.3' media='all' />
227<link rel='stylesheet' id='eztoc-css' href='https://wpfactory.com/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.88' media='all' />
228<style id="eztoc-inline-css">
229div#ez-toc-container .ez-toc-title, .ez-toc-split-section .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title, .ez-toc-split-section .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li , div#ez-toc-container ul li a, .ez-toc-split-section ul li , .ez-toc-split-section ul li a {font-size: 95%;}div#ez-toc-container ul li , div#ez-toc-container ul li a, .ez-toc-split-section ul li , .ez-toc-split-section ul li a {font-weight: 500;}div#ez-toc-container nav ul ul li, .ez-toc-split-section nav ul ul li {font-size: 90%;}.ez-toc-box-title {font-weight: bold; margin-bottom: 10px; text-align: center; text-transform: uppercase; letter-spacing: 1px; color: #666; padding-bottom: 5px;position:absolute;top:-4%;left:5%;background-color: inherit;transition: top 0.3s ease;}.ez-toc-box-title.toc-closed {top:-25%;}
230.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, '.', decimal) '. ';display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, '.', decimal) '. ';display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
231/*# sourceURL=eztoc-inline-css */
232</style>
233<link rel='stylesheet' id='wcsatt-css-css' href='https://wpfactory.com/wp-content/plugins/woocommerce-subscriptions/build/apfs-frontend.css?ver=9.2.0' media='all' />
234<link rel='stylesheet' id='storefront-style-css' href='https://wpfactory.com/wp-content/themes/storefront/style.css?ver=4.6.2' media='all' />
235<style id="storefront-style-inline-css">
236
237			.main-navigation ul li a,
238			.site-title a,
239			ul.menu li a,
240			.site-branding h1 a,
241			button.menu-toggle,
242			button.menu-toggle:hover,
243			.handheld-navigation .dropdown-toggle {
244				color: #333333;
245			}
246
247			button.menu-toggle,
248			button.menu-toggle:hover {
249				border-color: #333333;
250			}
251
252			.main-navigation ul li a:hover,
253			.main-navigation ul li:hover > a,
254			.site-title a:hover,
255			.site-header ul.menu li.current-menu-item > a {
256				color: #747474;
257			}
258
259			table:not( .has-background ) th {
260				background-color: #f8f8f8;
261			}
262
263			table:not( .has-background ) tbody td {
264				background-color: #fdfdfd;
265			}
266
267			table:not( .has-background ) tbody tr:nth-child(2n) td,
268			fieldset,
269			fieldset legend {
270				background-color: #fbfbfb;
271			}
272
273			.site-header,
274			.secondary-navigation ul ul,
275			.main-navigation ul.menu > li.menu-item-has-children:after,
276			.secondary-navigation ul.menu ul,
277			.storefront-handheld-footer-bar,
278			.storefront-handheld-footer-bar ul li > a,
279			.storefront-handheld-footer-bar ul li.search .site-search,
280			button.menu-toggle,
281			button.menu-toggle:hover {
282				background-color: #ffffff;
283			}
284
285			p.site-description,
286			.site-header,
287			.storefront-handheld-footer-bar {
288				color: #404040;
289			}
290
291			button.menu-toggle:after,
292			button.menu-toggle:before,
293			button.menu-toggle span:before {
294				background-color: #333333;
295			}
296
297			h1, h2, h3, h4, h5, h6, .wc-block-grid__product-title {
298				color: #333333;
299			}
300
301			.widget h1 {
302				border-bottom-color: #333333;
303			}
304
305			body,
306			.secondary-navigation a {
307				color: #6d6d6d;
308			}
309
310			.widget-area .widget a,
311			.hentry .entry-header .posted-on a,
312			.hentry .entry-header .post-author a,
313			.hentry .entry-header .post-comments a,
314			.hentry .entry-header .byline a {
315				color: #727272;
316			}
317
318			a {
319				color: #7f54b3;
320			}
321
322			a:focus,
323			button:focus,
324			.button.alt:focus,
325			input:focus,
326			textarea:focus,
327			input[type="button"]:focus,
328			input[type="reset"]:focus,
329			input[type="submit"]:focus,
330			input[type="email"]:focus,
331			input[type="tel"]:focus,
332			input[type="url"]:focus,
333			input[type="password"]:focus,
334			input[type="search"]:focus {
335				outline-color: #7f54b3;
336			}
337
338			button, input[type="button"], input[type="reset"], input[type="submit"], .button, .widget a.button {
339				background-color: #eeeeee;
340				border-color: #eeeeee;
341				color: #333333;
342			}
343
344			button:hover, input[type="button"]:hover, input[type="reset"]:hover, input[type="submit"]:hover, .button:hover, .widget a.button:hover {
345				background-color: #d5d5d5;
346				border-color: #d5d5d5;
347				color: #333333;
348			}
349
350			button.alt, input[type="button"].alt, input[type="reset"].alt, input[type="submit"].alt, .button.alt, .widget-area .widget a.button.alt {
351				background-color: #333333;
352				border-color: #333333;
353				color: #ffffff;
354			}
355
356			button.alt:hover, input[type="button"].alt:hover, input[type="reset"].alt:hover, input[type="submit"].alt:hover, .button.alt:hover, .widget-area .widget a.button.alt:hover {
357				background-color: #1a1a1a;
358				border-color: #1a1a1a;
359				color: #ffffff;
360			}
361
362			.pagination .page-numbers li .page-numbers.current {
363				background-color: #e6e6e6;
364				color: #636363;
365			}
366
367			#comments .comment-list .comment-content .comment-text {
368				background-color: #f8f8f8;
369			}
370
371			.site-footer {
372				background-color: #f0f0f0;
373				color: #6d6d6d;
374			}
375
376			.site-footer a:not(.button):not(.components-button) {
377				color: #333333;
378			}
379
380			.site-footer .storefront-handheld-footer-bar a:not(.button):not(.components-button) {
381				color: #333333;
382			}
383
384			.site-footer h1, .site-footer h2, .site-footer h3, .site-footer h4, .site-footer h5, .site-footer h6, .site-footer .widget .widget-title, .site-footer .widget .widgettitle {
385				color: #333333;
386			}
387
388			.page-template-template-homepage.has-post-thumbnail .type-page.has-post-thumbnail .entry-title {
389				color: #000000;
390			}
391
392			.page-template-template-homepage.has-post-thumbnail .type-page.has-post-thumbnail .entry-content {
393				color: #000000;
394			}
395
396			@media screen and ( min-width: 768px ) {
397				.secondary-navigation ul.menu a:hover {
398					color: #595959;
399				}
400
401				.secondary-navigation ul.menu a {
402					color: #404040;
403				}
404
405				.main-navigation ul.menu ul.sub-menu,
406				.main-navigation ul.nav-menu ul.children {
407					background-color: #f0f0f0;
408				}
409
410				.site-header {
411					border-bottom-color: #f0f0f0;
412				}
413			}
414/*# sourceURL=storefront-style-inline-css */
415</style>
416<link rel='stylesheet' id='storefront-icons-css' href='https://wpfactory.com/wp-content/themes/storefront/assets/css/base/icons.css?ver=4.6.2' media='all' />
417<link rel='stylesheet' id='wpft-splide-css-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/vendor/splide/splide.min.css?ver=7.1.2' media='all' />
418<link rel='stylesheet' id='storefront-woocommerce-style-css' href='https://wpfactory.com/wp-content/themes/storefront/assets/css/woocommerce/woocommerce.css?ver=4.6.2' media='all' />
419<style id="storefront-woocommerce-style-inline-css">
420@font-face {
421				font-family: star;
422				src: url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/star.eot);
423				src:
424					url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/star.eot?#iefix) format("embedded-opentype"),
425					url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/star.woff) format("woff"),
426					url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/star.ttf) format("truetype"),
427					url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/star.svg#star) format("svg");
428				font-weight: 400;
429				font-style: normal;
430			}
431			@font-face {
432				font-family: WooCommerce;
433				src: url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.eot);
434				src:
435					url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),
436					url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.woff) format("woff"),
437					url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.ttf) format("truetype"),
438					url(https://wpfactory.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.svg#WooCommerce) format("svg");
439				font-weight: 400;
440				font-style: normal;
441			}
442
443			a.cart-contents,
444			.site-header-cart .widget_shopping_cart a {
445				color: #333333;
446			}
447
448			a.cart-contents:hover,
449			.site-header-cart .widget_shopping_cart a:hover,
450			.site-header-cart:hover > li > a {
451				color: #747474;
452			}
453
454			table.cart td.product-remove,
455			table.cart td.actions {
456				border-top-color: #ffffff;
457			}
458
459			.storefront-handheld-footer-bar ul li.cart .count {
460				background-color: #333333;
461				color: #ffffff;
462				border-color: #ffffff;
463			}
464
465			.woocommerce-tabs ul.tabs li.active a,
466			ul.products li.product .price,
467			.onsale,
468			.wc-block-grid__product-onsale,
469			.widget_search form:before,
470			.widget_product_search form:before {
471				color: #6d6d6d;
472			}
473
474			.woocommerce-breadcrumb a,
475			a.woocommerce-review-link,
476			.product_meta a {
477				color: #727272;
478			}
479
480			.wc-block-grid__product-onsale,
481			.onsale {
482				border-color: #6d6d6d;
483			}
484
485			.star-rating span:before,
486			.quantity .plus, .quantity .minus,
487			p.stars a:hover:after,
488			p.stars a:after,
489			.star-rating span:before,
490			#payment .payment_methods li input[type=radio]:first-child:checked+label:before {
491				color: #7f54b3;
492			}
493
494			.widget_price_filter .ui-slider .ui-slider-range,
495			.widget_price_filter .ui-slider .ui-slider-handle {
496				background-color: #7f54b3;
497			}
498
499			.order_details {
500				background-color: #f8f8f8;
501			}
502
503			.order_details > li {
504				border-bottom: 1px dotted #e3e3e3;
505			}
506
507			.order_details:before,
508			.order_details:after {
509				background: -webkit-linear-gradient(transparent 0,transparent 0),-webkit-linear-gradient(135deg,#f8f8f8 33.33%,transparent 33.33%),-webkit-linear-gradient(45deg,#f8f8f8 33.33%,transparent 33.33%)
510			}
511
512			#order_review {
513				background-color: #ffffff;
514			}
515
516			#payment .payment_methods > li .payment_box,
517			#payment .place-order {
518				background-color: #fafafa;
519			}
520
521			#payment .payment_methods > li:not(.woocommerce-notice) {
522				background-color: #f5f5f5;
523			}
524
525			#payment .payment_methods > li:not(.woocommerce-notice):hover {
526				background-color: #f0f0f0;
527			}
528
529			.woocommerce-pagination .page-numbers li .page-numbers.current {
530				background-color: #e6e6e6;
531				color: #636363;
532			}
533
534			.wc-block-grid__product-onsale,
535			.onsale,
536			.woocommerce-pagination .page-numbers li .page-numbers:not(.current) {
537				color: #6d6d6d;
538			}
539
540			p.stars a:before,
541			p.stars a:hover~a:before,
542			p.stars.selected a.active~a:before {
543				color: #6d6d6d;
544			}
545
546			p.stars.selected a.active:before,
547			p.stars:hover a:before,
548			p.stars.selected a:not(.active):before,
549			p.stars.selected a.active:before {
550				color: #7f54b3;
551			}
552
553			.single-product div.product .woocommerce-product-gallery .woocommerce-product-gallery__trigger {
554				background-color: #eeeeee;
555				color: #333333;
556			}
557
558			.single-product div.product .woocommerce-product-gallery .woocommerce-product-gallery__trigger:hover {
559				background-color: #d5d5d5;
560				border-color: #d5d5d5;
561				color: #333333;
562			}
563
564			.button.added_to_cart:focus,
565			.button.wc-forward:focus {
566				outline-color: #7f54b3;
567			}
568
569			.added_to_cart,
570			.site-header-cart .widget_shopping_cart a.button,
571			.wc-block-grid__products .wc-block-grid__product .wp-block-button__link {
572				background-color: #eeeeee;
573				border-color: #eeeeee;
574				color: #333333;
575			}
576
577			.added_to_cart:hover,
578			.site-header-cart .widget_shopping_cart a.button:hover,
579			.wc-block-grid__products .wc-block-grid__product .wp-block-button__link:hover {
580				background-color: #d5d5d5;
581				border-color: #d5d5d5;
582				color: #333333;
583			}
584
585			.added_to_cart.alt, .added_to_cart, .widget a.button.checkout {
586				background-color: #333333;
587				border-color: #333333;
588				color: #ffffff;
589			}
590
591			.added_to_cart.alt:hover, .added_to_cart:hover, .widget a.button.checkout:hover {
592				background-color: #1a1a1a;
593				border-color: #1a1a1a;
594				color: #ffffff;
595			}
596
597			.button.loading {
598				color: #eeeeee;
599			}
600
601			.button.loading:hover {
602				background-color: #eeeeee;
603			}
604
605			.button.loading:after {
606				color: #333333;
607			}
608
609			@media screen and ( min-width: 768px ) {
610				.site-header-cart .widget_shopping_cart,
611				.site-header .product_list_widget li .quantity {
612					color: #404040;
613				}
614
615				.site-header-cart .widget_shopping_cart .buttons,
616				.site-header-cart .widget_shopping_cart .total {
617					background-color: #f5f5f5;
618				}
619
620				.site-header-cart .widget_shopping_cart {
621					background-color: #f0f0f0;
622				}
623			}
624				.storefront-product-pagination a {
625					color: #6d6d6d;
626					background-color: #ffffff;
627				}
628				.storefront-sticky-add-to-cart {
629					color: #6d6d6d;
630					background-color: #ffffff;
631				}
632
633				.storefront-sticky-add-to-cart a:not(.button) {
634					color: #333333;
635				}
636/*# sourceURL=storefront-woocommerce-style-inline-css */
637</style>
638<link rel='stylesheet' id='wpfactory-style-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/css/frontend.min.css?ver=2.0.0' media='all' />
639<link rel='stylesheet' id='wpfactory-carousal-style-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/vendor/flickity-carousal/flickity-carousal.min.css?ver=2.0.0' media='all' />
640<link rel='stylesheet' id='wpfactory-globals-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/css/wpfactory-globals.css?ver=1.2.9' media='all' />
641<link rel='stylesheet' id='storefront-child-style-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/style.css?ver=2.0.0' media='all' />
642<link rel='stylesheet' id='storefront-woocommerce-brands-style-css' href='https://wpfactory.com/wp-content/themes/storefront/assets/css/woocommerce/extensions/brands.css?ver=4.6.2' media='all' />
643<link rel='stylesheet' id='wpf-blog-css' href='https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/css/blog.css?ver=1782249326' media='all' />
644<link rel='stylesheet' id='wpfactory-snippets-bbpress-css' href='https://wpfactory.com/wp-content/plugins/wpfactory-snippets/snippets/bbpress/bbpress.css?ver=2.6.9' media='all' />
645<script id="apbct-public-bundle_full-protection.min-js-js" src="https://wpfactory.com/wp-content/plugins/cleantalk-spam-protect/js/apbct-public-bundle_full-protection.min.js?ver=6.88_1789650612"></script>
vendor: 1 bytes, line 645
645
646<script async data-wp-strategy="async" id="ct_bot_detector-js" src="https://fd.cleantalk.org/ct-bot-detector-wrapper.js?ver=6.88"></script>
vendor: 1 bytes, line 646
646
647<script id="jquery-core-js" src="https://wpfactory.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 647
647
648<script id="jquery-migrate-js" src="https://wpfactory.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 648
648
649<script data-wp-strategy="defer" defer id="wc-jquery-blockui-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?ver=2.7.0-wc.11.1.2"></script>
vendor: 1 bytes, line 649
649
650<script id="wc-add-to-cart-js-extra">
651var wc_add_to_cart_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_view_cart":"View cart","cart_url":"https://wpfactory.com/cart/","is_cart":"","cart_redirect_after_add":"yes"};
652//# sourceURL=wc-add-to-cart-js-extra
653</script>
vendor: 1 bytes, line 653
653
654<script data-wp-strategy="defer" defer id="wc-add-to-cart-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/frontend/add-to-cart.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 654
654
655<script data-wp-strategy="defer" defer id="wc-js-cookie-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver=2.1.4-wc.11.1.2"></script>
vendor: 1 bytes, line 655
655
656<script id="woocommerce-js-extra">
657var woocommerce_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_password_show":"Show password","i18n_password_hide":"Hide password"};
658//# sourceURL=woocommerce-js-extra
659</script>
vendor: 1 bytes, line 659
659
660<script data-wp-strategy="defer" defer id="woocommerce-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 660
660
661<script data-wp-strategy="defer" id="wc-jquery-cookie-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/jquery-cookie/jquery.cookie.min.js?ver=1.4.1-wc.11.1.2"></script>
vendor: 1 bytes, line 661
661
662<script id="jquery-cookie-js-extra">
663var affwp_scripts = {"ajaxurl":"https://wpfactory.com/wp-admin/admin-ajax.php"};
664//# sourceURL=jquery-cookie-js-extra
665</script>
vendor: 1 bytes, line 665
665
666<script id="affwp-tracking-js-extra">
667var affwp_debug_vars = {"integrations":{"contactform7":"Contact Form 7","woocommerce":"WooCommerce"},"version":"2.36.3","currency":"USD","ref_cookie":"affwp_ref","visit_cookie":"affwp_ref_visit_id","campaign_cookie":"affwp_campaign"};
668//# sourceURL=affwp-tracking-js-extra
669</script>
vendor: 1 bytes, line 669
669
670<script id="affwp-tracking-js" src="https://wpfactory.com/wp-content/plugins/affiliate-wp/assets/js/tracking.min.js?ver=2.36.3"></script>
vendor: 1 bytes, line 670
670
671<script id="wc-cart-fragments-js-extra">
672var wc_cart_fragments_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","cart_hash_key":"wc_cart_hash_e75229be763824a8104e3fb7f4f46e42","fragment_name":"wc_fragments_e75229be763824a8104e3fb7f4f46e42","request_timeout":"5000"};
673//# sourceURL=wc-cart-fragments-js-extra
674</script>
vendor: 1 bytes, line 674
674
675<script data-wp-strategy="defer" defer id="wc-cart-fragments-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 675
675
676<script id="advanced-ads-advanced-js-js-extra">
677var advads_options = {"blog_id":"1","privacy":{"enabled":false,"state":"not_needed"}};
678//# sourceURL=advanced-ads-advanced-js-js-extra
679</script>
vendor: 1 bytes, line 679
679
680<script id="advanced-ads-advanced-js-js" src="https://wpfactory.com/wp-content/plugins/advanced-ads/assets/dist/advanced.js?ver=4e4c7549b1472da4abe5"></script>
vendor: 1 bytes, line 680
680
681<script id="utils-js-extra">
682var userSettings = {"url":"/","uid":"0","time":"1790680354","secure":"1"};
683//# sourceURL=utils-js-extra
684</script>
vendor: 1 bytes, line 684
684
685<script id="utils-js" src="https://wpfactory.com/wp-includes/js/utils.min.js?ver=7.1.2"></script>
vendor: 1 bytes, line 685
685
686<script id="wpft-splide-js-js" src="https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/vendor/splide/splide.min.js?ver=7.1.2"></script>
686
687<link rel="https://api.w.org/" href="https://wpfactory.com/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://wpfactory.com/xmlrpc.php?rsd" />
688<meta name="generator" content="WordPress 7.1.2" />
689		
689<script type="text/javascript">
690		var AFFWP = AFFWP || {};
691		AFFWP.referral_var = 'ref';
692		AFFWP.expiration = 30;
693		AFFWP.debug = 0;
694
695		
696				AFFWP.referral_credit_last = 1;
697		</script>
697
698		
699<!-- Google Tag Manager for WordPress by gtm4wp.com -->
700<!-- GTM Container placement set to off -->
701<script data-cfasync="false" data-pagespeed-no-defer>
702	var dataLayer_content = {"pagePostType":"bloghome","customerTotalOrders":0,"customerTotalOrderValue":0,"customerFirstName":"","customerLastName":"","customerBillingFirstName":"","customerBillingLastName":"","customerBillingCompany":"","customerBillingAddress1":"","customerBillingAddress2":"","customerBillingCity":"","customerBillingState":"","customerBillingPostcode":"","customerBillingCountry":"","customerBillingEmail":"","customerBillingEmailHash":"","customerBillingPhone":"","customerShippingFirstName":"","customerShippingLastName":"","customerShippingCompany":"","customerShippingAddress1":"","customerShippingAddress2":"","customerShippingCity":"","customerShippingState":"","customerShippingPostcode":"","customerShippingCountry":"","cartContent":{"totals":{"applied_coupons":[],"discount_total":0,"subtotal":0,"total":0},"items":[]}};
703	dataLayer.push( dataLayer_content );
704</script>
vendor: 1 bytes, line 704
704
705<script data-cfasync="false" data-pagespeed-no-defer>
706	console.warn && console.warn("[GTM4WP] Google Tag Manager container code placement set to OFF !!!");
707	console.warn && console.warn("[GTM4WP] Data layer codes are active but GTM container must be loaded using custom coding !!!");
708</script>
708
709<!-- End Google Tag Manager for WordPress by gtm4wp.com --><style>
710		#bbpress-forums div.bbp-search-form {
711			display: none;
712		}
713	</style>	<noscript><style>.woocommerce-product-gallery{ opacity: 1 !important; }</style></noscript>
714			
714<script type="text/javascript">
715			var advadsCfpQueue = [];
716			var advadsCfpAd = function( adID ) {
717				if ( 'undefined' === typeof advadsProCfp ) {
718					advadsCfpQueue.push( adID )
719				} else {
720					advadsProCfp.addElement( adID )
721				}
722			}
723		</script>
723
724		<link rel="icon" href="https://wpfactory.com/wp-content/uploads/cropped-WPF-favicon-32x32.png" sizes="32x32" />
725<link rel="icon" href="https://wpfactory.com/wp-content/uploads/cropped-WPF-favicon-192x192.png" sizes="192x192" />
726<link rel="apple-touch-icon" href="https://wpfactory.com/wp-content/uploads/cropped-WPF-favicon-180x180.png" />
727<meta name="msapplication-TileImage" content="https://wpfactory.com/wp-content/uploads/cropped-WPF-favicon-270x270.png" />
728<style id="global-styles-inline-css">
729:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
729--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 14px;--wp--preset--font-size--medium: 23px;--wp--preset--font-size--large: 26px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--normal: 16px;--wp--preset--font-size--huge: 37px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.wp-site-blocks) > * { margin-block-start: 24px; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 24px; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 24px;}:root :where(.is-layout-grid){gap: 24px;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
729.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}.has-normal-font-size{font-size: var(--wp--preset--font-size--normal) !important;}.has-huge-font-size{font-size: var(--wp--preset--font-size--huge) !important;}
730/*# sourceURL=global-styles-inline-css */
731</style>
732
733</head>
734
735<body class="blog wp-custom-logo wp-embed-responsive wp-theme-storefront wp-child-theme-wpfactory-theme theme-storefront woocommerce-no-js wpf-full-width group-blog storefront-align-wide woocommerce-active aa-prefix-wpfac-">
736<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 736-737
736
737	<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
737GTM-K2S23LK
vendor: 85 bytes, lines 737-739
737"
738	height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
739	
739<!-- End Google Tag Manager (noscript) -->
740<script type="text/javascript" id="bbp-swap-no-js-body-class">
741	document.body.className = document.body.className.replace( 'bbp-no-js', 'bbp-js' );
742</script>
742
743
744
745<div class="wpft-full-width"></div>
746<div id="page" class="hfeed site">
747
748<style>
749/* ============================================================
750   HEADER — component-scoped styles
751   Assumes design tokens (--bg, --text, --grad, --line, etc.)
752   are already defined globally on :root.
753   ============================================================ */
754
755/* Sticky bar */
756.site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.85);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line);transition:background .25s}
757[data-theme="dark"] .site-header{background:rgba(10,14,26,.85)}
758.site-header .wrap{display:flex;align-items:center;gap:8px;height:64px}
759
760/* Brand */
761.site-header .brand{display:flex;align-items:center;flex-shrink:0;color:var(--text)}
762.site-header .brand-logo{height:45px;width:auto;display:block;color:inherit}
763
764/* Primary nav */
765.primary-nav{display:flex;align-items:center;gap:4px;margin-left:32px;flex:1}
766.primary-nav a, .primary-nav button.nav-trigger{display:inline-flex;align-items:center;gap:5px;padding:8px 14px;border-radius:var(--radius);font-size:14px;font-weight:600;color:var(--text-2);transition:color .15s,background .15s;background:transparent;border:0;cursor:pointer;font-family:inherit}
767.primary-nav a:hover, .primary-nav button.nav-trigger:hover{color:var(--text);background:var(--bg-2)}
768[data-theme="dark"] .primary-nav a:hover, [data-theme="dark"] .primary-nav button.nav-trigger:hover{background:var(--bg-3)}
769.primary-nav .caret{font-size:10px;opacity:.6;transition:transform .2s}
770.primary-nav .has-mega{position:relative}
771.primary-nav .has-mega.open .caret{transform:rotate(180deg)}
772
773/* Right-side CTA group */
774.nav-cta-group{display:flex;align-items:center;gap:8px;flex-shrink:0}
775/* Shared icon button (sign-in, cart, theme toggle all use this) */
776.icon-btn,.theme-toggle{width:36px;height:36px;padding:0;box-sizing:border-box;border-radius:50%;display:grid;place-items:center;color:var(--text-2,#5a6175);transition:background .15s,color .15s;background:transparent;border:0;cursor:pointer;position:relative}
777.icon-btn:hover,.theme-toggle:hover{background:var(--bg-2);color:var(--text)}
778[data-theme="dark"] .icon-btn,[data-theme="dark"] .theme-toggle{color:var(--text-2,#94a3b8)}
779[data-theme="dark"] .icon-btn:hover,[data-theme="dark"] .theme-toggle:hover{background:var(--bg-3)}
780.icon-btn svg,.theme-toggle svg{width:18px;height:18px}
781.theme-toggle .sun{display:none}
782.theme-toggle .moon{display:block}
783[data-theme="dark"] .theme-toggle .sun{display:block}
784[data-theme="dark"] .theme-toggle .moon{display:none}
785
786/* Cart count badge */
787.cart-btn{position:relative}
788.cart-count{position:absolute;top:1px;right:1px;min-width:17px;height:17px;padding:0 4px;border-radius:99px;background:var(--coral,#FF6B6B);color:#FFF;font-family:var(--font-mono);font-size:10px;font-weight:800;line-height:17px;text-align:center;letter-spacing:-.02em;box-shadow:0 0 0 2px var(--bg);transition:transform .15s,box-shadow .15s}
789.cart-btn:hover .cart-count{transform:scale(1.08)}
790.cart-count.is-empty{display:none}
791
792/* Mega panel container */
793.mega-panel{position:absolute;top:calc(100% + 10px);left:0;background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:24px;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .22s,transform .22s,visibility .22s;z-index:200;overflow:hidden}
794.has-mega.open > .mega-panel{opacity:1;visibility:visible;transform:translateY(0)}
795.mega-plugins{width:920px;max-width:calc(100vw - 48px)}
796.mega-resources{width:720px;max-width:calc(100vw - 48px)}
797.mega-panel::before{content:"";position:absolute;top:-30%;right:-10%;width:50%;height:140%;background:radial-gradient(circle,rgba(138,99,205,.06) 0%,transparent 60%);pointer-events:none;z-index:0}
798[data-theme="dark"] .mega-panel::before{background:radial-gradient(circle,rgba(168,138,224,.08) 0%,transparent 60%)}
799
800.mega-intro{position:relative;z-index:1;display:flex;align-items:baseline;gap:14px;margin-bottom:18px;padding:0 4px}
801.mega-intro .kicker-mini{font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--purple)}
802[data-theme="dark"] .mega-intro .kicker-mini{color:var(--purple-light)}
803.mega-intro h6{font-size:17px;font-weight:800;letter-spacing:-0.02em;color:var(--text);margin:0}
804
805.mega-row{position:relative;z-index:1;display:grid;gap:12px}
806.mega-resources .mega-row{grid-template-columns:repeat(3,1fr);gap:10px}
807.mega-resources .mega-row + .mega-row{margin-top:10px}
808
809/* Mega card */
810.mega-card{position:relative;display:flex;flex-direction:column;gap:6px;padding:18px 16px 18px;border-radius:14px;background:var(--bg-card,#FFF);border:1px solid #E2E5EC;overflow:hidden;transition:transform .25s cubic-bezier(.2,.7,.3,1),border-color .2s,box-shadow .25s;cursor:pointer}
811.mega-card:hover{transform:translateY(-3px);border-color:#7C3AED;box-shadow:var(--shadow-sm,0 2px 8px rgba(0,0,0,.06))}
812[data-theme="dark"] .mega-card{border-color:#2A3142}
813.mc-icon-wrap{position:relative;width:40px;height:40px;margin-bottom:6px}
814.mc-icon-bg{position:absolute;inset:0;border-radius:11px;background:var(--grad-soft);transition:transform .3s cubic-bezier(.2,.7,.3,1),background .25s}
815.mega-card:hover .mc-icon-bg{transform:scale(1.06);background:var(--grad)}
816.mc-icon{position:absolute;inset:0;margin:auto;width:18px;height:18px;color:var(--purple);transition:color .25s,transform .35s cubic-bezier(.2,.7,.3,1)}
817[data-theme="dark"] .mc-icon{color:var(--purple-light)}
818.mega-card:hover .mc-icon{color:#FFF;transform:rotate(-6deg) scale(1.06)}
819.mc-icon-glow{position:absolute;inset:-6px;border-radius:14px;background:radial-gradient(circle,rgba(138,99,205,.35) 0%,transparent 60%);opacity:0;transform:scale(.6);transition:opacity .35s,transform .4s cubic-bezier(.2,.7,.3,1);pointer-events:none;z-index:-1}
820.mega-card:hover .mc-icon-glow{opacity:1;transform:scale(1.1)}
821.mc-name{font-size:14px;font-weight:800;letter-spacing:-0.015em;color:var(--text);line-height:1.25}
822.mc-arrow{align-self:flex-end;font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--text-3);transition:transform .25s,color .2s;margin-top:auto;padding-top:14px}
823.mega-card:hover .mc-arrow{color:var(--purple);transform:translateX(4px)}
824[data-theme="dark"] .mega-card:hover .mc-arrow{color:var(--purple-light)}
825.mega-resources .mega-card{padding:14px 14px}
826.mega-resources .mega-card .mc-name{font-size:13px}
827.mega-resources .mc-icon-wrap{width:34px;height:34px;margin-bottom:4px}
828.mega-resources .mc-icon{width:15px;height:15px}
829.mega-resources .mc-arrow{font-size:13px;padding-top:10px}
830.mega-card .mc-blurb{font-size:11px;color:var(--text-3);line-height:1.45;margin-top:2px;font-style:normal;text-align:center}
831
832/* Plugins mega split layout */
833.mega-plugins-split{position:relative;z-index:1;display:grid;grid-template-columns:1.4fr 1fr;gap:14px}
834@media(max-width:880px){.mega-plugins-split{grid-template-columns:1fr;gap:12px}.mega-aa-promo{order:-1}}
835
836.mega-plugin-list{display:flex;flex-direction:column;gap:4px}
837.mega-plugin-row{position:relative;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:14px;padding:11px 14px 11px 12px;border-radius:11px;border:1px solid transparent;background:transparent;transition:transform .2s,background .2s,border-color .2s,box-shadow .25s}
838.mega-plugin-row:hover{transform:translateX(2px);background:var(--bg-card,#FFF);border-color:#7C3AED;box-shadow:var(--shadow-sm,0 2px 8px rgba(0,0,0,.06))}
839[data-theme="dark"] .mega-plugin-row:hover{background:var(--bg-card-2)}
840.mega-plugin-row .mc-icon-wrap{width:36px;height:36px;flex-shrink:0;margin-bottom:0}
841.mega-plugin-row .mc-icon{width:16px;height:16px}
842.mega-plugin-row .mpr-text{display:flex;flex-direction:column;gap:1px;min-width:0}
843.mega-plugin-row .mpr-name{font-size:13.5px;font-weight:800;color:var(--text);letter-spacing:-0.015em;line-height:1.2}
844.mega-plugin-row .mpr-desc{font-size:11px;color:var(--text-3);line-height:1.4;font-weight:500}
845.mega-plugin-row .mpr-meta{font-family:var(--font-mono);font-size:10.5px;font-weight:700;color:var(--purple);letter-spacing:.02em;background:var(--grad-soft);padding:3px 8px;border-radius:99px;flex-shrink:0;white-space:nowrap}
846[data-theme="dark"] .mega-plugin-row .mpr-meta{color:var(--purple-light)}
847.mega-plugin-row .mpr-arrow{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--text-3);transition:transform .2s,color .2s;flex-shrink:0}
848.mega-plugin-row:hover .mpr-arrow{color:var(--purple);transform:translateX(3px)}
849[data-theme="dark"] .mega-plugin-row:hover .mpr-arrow{color:var(--purple-light)}
850
851/* All Access promo card inside the Plugins mega */
852.mega-aa-promo{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:10px;padding:24px 22px;border-radius:16px;background:var(--bg-card);border:1px solid var(--line);overflow:hidden;transition:transform .25s,border-color .2s,box-shadow .3s}
853[data-theme="dark"] .mega-aa-promo{background:var(--bg-card-2)}
854.mega-aa-promo:hover{transform:translateY(-2px);border-color:var(--purple);box-shadow:var(--shadow-md)}
855.mega-aa-promo::before{content:"";position:absolute;top:-40%;right:-30%;width:120%;height:120%;background:radial-gradient(circle,rgba(138,99,205,.18) 0%,rgba(56,71,211,.12) 35%,transparent 65%);pointer-events:none;animation:aaPromoFloat 8s ease-in-out infinite alternate}
856[data-theme="dark"] .mega-aa-promo::before{background:radial-gradient(circle,rgba(168,138,224,.22) 0%,rgba(89,105,229,.16) 35%,transparent 65%)}
857@keyframes aaPromoFloat{from{transform:translate(0,0) scale(1)}to{transform:translate(-12px,8px) scale(1.05)}}
858.mega-aa-promo::after{content:"";position:absolute;bottom:-30%;left:-20%;width:80%;height:80%;background:radial-gradient(circle,rgba(1,176,125,.10) 0%,transparent 50%);pointer-events:none;animation:aaPromoFloat2 10s ease-in-out infinite alternate}
859[data-theme="dark"] .mega-aa-promo::after{background:radial-gradient(circle,rgba(1,244,160,.10) 0%,transparent 50%)}
860@keyframes aaPromoFloat2{from{transform:translate(0,0)}to{transform:translate(8px,-6px)}}
861.maa-tag{position:relative;z-index:2;display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--purple);background:var(--bg-2);padding:5px 11px;border-radius:99px;align-self:flex-start;border:1px solid var(--line)}
862[data-theme="dark"] .maa-tag{color:var(--purple-light);background:var(--bg-3)}
863.maa-tag-dot{width:6px;height:6px;border-radius:50%;background:var(--aqua-deep);box-shadow:0 0 0 3px rgba(1,176,125,.18);animation:pulse 2s ease-in-out infinite}
864[data-theme="dark"] .maa-tag-dot{background:var(--aqua)}
865.mega-aa-promo h6{position:relative;z-index:2;font-size:18px;font-weight:800;letter-spacing:-0.025em;color:var(--text);margin:0;line-height:1.2}
866.mega-aa-promo h6 .grad-text{display:inline}
867.mega-aa-promo p{position:relative;z-index:2;font-size:12px;line-height:1.5;color:var(--text-3);margin:0}
868.maa-price{position:relative;z-index:2;display:flex;align-items:baseline;gap:6px;margin-top:6px}
869.maa-num{font-family:var(--font-mono);font-size:36px;font-weight:800;color:var(--text);letter-spacing:-0.04em;line-height:1;font-feature-settings:"tnum"}
870.maa-once{font-family:var(--font-mono);font-size:12px;color:var(--text-3);font-weight:600;letter-spacing:.02em}
871.maa-vs{position:relative;z-index:2;font-family:var(--font-mono);font-size:10.5px;color:var(--text-3);letter-spacing:.01em}
872.maa-vs s{color:var(--coral);text-decoration-thickness:1.5px;text-decoration-color:var(--coral);opacity:.85;font-weight:700}
873.maa-cta{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding:11px 16px;background:var(--grad-aa);color:var(--aa-ink);border-radius:10px;font-size:13px;font-weight:800;letter-spacing:-0.01em;box-shadow:var(--shadow-sm);transition:transform .2s,box-shadow .25s}
874.mega-aa-promo:hover .maa-cta{transform:translateY(-1px);box-shadow:var(--shadow-aa)}
875.maa-arr{transition:transform .2s}
876.mega-aa-promo:hover .maa-arr{transform:translateX(3px)}
877
878/* Bottom CTA bar inside mega */
879.mega-cta-bar{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;padding:14px 18px;border-radius:12px;background:#F8F2E4;border:1px solid #ECE2C9;transition:transform .2s,border-color .2s,background .2s,box-shadow .25s}
880[data-theme="dark"] .mega-cta-bar{background:var(--bg-3);border-color:var(--line,#1E2330)}
881.mega-cta-bar:hover{transform:translateY(-1px);border-color:var(--purple);box-shadow:var(--shadow-sm)}
882.mcb-left{display:flex;align-items:center;gap:14px;min-width:0}
883.mcb-left > svg{flex-shrink:0;color:var(--purple);transition:transform .25s}
884[data-theme="dark"] .mcb-left > svg{color:var(--purple-light)}
885.mega-cta-bar:hover .mcb-left > svg{transform:rotate(-8deg) scale(1.08)}
886.mcb-text{display:flex;flex-direction:column;gap:1px;min-width:0}
887.mcb-text strong{font-size:14px;font-weight:800;color:var(--text);letter-spacing:-0.01em;line-height:1.2}
888.mcb-text em{font-style:normal;font-family:var(--font-mono);font-size:11px;color:var(--text-3);font-weight:500;letter-spacing:.02em}
889.mcb-arrow{font-family:var(--font-mono);font-size:18px;font-weight:700;color:var(--text-3);transition:transform .25s,color .2s;flex-shrink:0}
890.mega-cta-bar:hover .mcb-arrow{color:var(--purple);transform:translateX(4px)}
891[data-theme="dark"] .mega-cta-bar:hover .mcb-arrow{color:var(--purple-light)}
892
893@media(max-width:880px){.mega-resources .mega-row{grid-template-columns:repeat(2,1fr)}}
894@media(max-width:560px){.mega-resources .mega-row{grid-template-columns:1fr}.mega-cta-bar{flex-direction:row}}
895
896/* Burger + mobile drawer */
897.burger{display:none;width:40px;height:40px;padding:0;box-sizing:border-box;border-radius:var(--radius);align-items:center;justify-content:center;background:transparent;border:0;cursor:pointer}
898.burger:hover{background:var(--bg-2)}
899.burger-line{width:18px;height:2px;background:var(--text);border-radius:2px;display:block;position:relative}
900.burger-line::before, .burger-line::after{content:"";position:absolute;width:100%;height:2px;background:var(--text);left:0;border-radius:2px}
901.burger-line::before{top:-6px}
902.burger-line::after{top:6px}
903
904@media(max-width:980px){
905  .primary-nav{display:none}
906  .burger{display:inline-flex;flex-shrink:0}
907  /* Mobile header keeps only logo, search, cart, burger. The $499 pill, the
908     sign-in icon, and the theme toggle all live inside the burger drawer at
909     this breakpoint to keep the row uncluttered. */
910  .header-cta,
911  .nav-cta-group .signin,
912  .nav-cta-group .theme-toggle{display:none}
913  /* Push the icon cluster to the right edge, opposite the logo. On desktop
914     the primary nav already does this via flex:1. */
915  .nav-cta-group{margin-left:auto}
916}
917/* The $499 pill keeps .btn-primary for its sizing and mobile rules, but the
918   All Access mint overrides the purple fill. Two classes deep so it also wins
919   against the per-page stylesheets, which redeclare .btn-primary themselves. */
920.nav-cta-group .header-cta{background:var(--grad-aa);color:var(--aa-ink);box-shadow:var(--shadow-aa)}
921.nav-cta-group .header-cta:hover{color:var(--aa-ink);box-shadow:var(--shadow-aa-hover)}
922.header-cta .cta-short{display:none}
923@media(max-width:520px){
924  .nav-cta-group{gap:6px}
925  .icon-btn,.theme-toggle{width:34px;height:34px}
926}
927
928.mobile-drawer{position:fixed;top:0;right:0;
928width:min(100%,340px);height:100vh;background:var(--bg);box-shadow:var(--shadow-lg);z-index:9000;transform:translateX(100%);transition:transform .25s ease;overflow-y:auto;padding:72px 24px 24px}
929.mobile-drawer.open{transform:translateX(0)}
930.mobile-drawer ul{list-style:none;padding:0;margin:0}
931.mobile-drawer li{border-bottom:1px solid var(--line)}
932.mobile-drawer a{display:block;padding:14px 0;font-size:15px;font-weight:600;color:var(--text-2)}
933.mobile-drawer a:hover{color:var(--text)}
934.mobile-drawer .group-h{font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--purple);margin:24px 0 10px;padding-bottom:6px;border-bottom:1px dashed var(--line-2)}
935.mobile-drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:8000;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}
936.mobile-drawer-overlay.open{opacity:1;visibility:visible}
937/* WordPress admin bar offset — push drawer + overlay below the bar so the close
938   button isn't covered when an admin is logged in. WP admin bar is 32px desktop,
939   46px on viewports below 783px. */
940body.admin-bar .mobile-drawer{top:32px;height:calc(100vh - 32px)}
941body.admin-bar .mobile-drawer-overlay{top:32px}
942@media screen and (max-width:782px){
943  body.admin-bar .mobile-drawer{top:46px;height:calc(100vh - 46px)}
944  body.admin-bar .mobile-drawer-overlay{top:46px}
945}
946/* Close button — padding:0 defeats Storefront's button reset (same fix as .burger),
947   svg width/height explicit so the X actually renders. */
948.mobile-close{position:absolute;top:16px;right:16px;width:36px;height:36px;padding:0;box-sizing:border-box;border-radius:50%;display:grid;place-items:center;background:var(--bg-2);border:0;cursor:pointer;color:var(--text)}
949.mobile-close:hover{background:var(--bg-3)}
950.mobile-close svg{width:18px;height:18px;display:block}
951
952/* Drawer rows — icon + label, matches the desktop mega-menu icon treatment, sized down. */
953.mobile-drawer li a{display:flex;align-items:center;gap:12px}
954.mobile-drawer .md-icon-wrap{flex-shrink:0;width:32px;height:32px;border-radius:8px;background:var(--grad-soft);display:grid;place-items:center;overflow:hidden;transition:background .2s,transform .2s}
955.mobile-drawer .md-icon{width:16px;height:16px;color:var(--purple);transition:color .2s}
956[data-theme="dark"] .mobile-drawer .md-icon{color:var(--purple-light)}
957.mobile-drawer li a:hover .md-icon-wrap{background:var(--grad);transform:scale(1.05)}
958.mobile-drawer li a:hover .md-icon{color:#FFF}
959/* Product-image variant — fills the wrap, soft gradient still sits behind for any
960   transparent edges in the product PNG. */
961.mobile-drawer .md-icon-img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s}
962.mobile-drawer li a:hover .md-icon-img{transform:scale(1.05)}
963
964/* Mega-menu plugin rows: product image variant. Sits on top of .mc-icon-bg so the
965   gradient shows through transparent edges. Inherits the wrap's border-radius. */
966.mega-plugin-row .mc-icon-wrap{overflow:hidden}
967.mc-icon-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit;transition:transform .3s cubic-bezier(.2,.7,.3,1);z-index:1}
968.mega-plugin-row:hover .mc-icon-img{transform:scale(1.06)}
969
970/* Drawer theme-toggle row — sits at the bottom of the drawer, styled like a list row. */
971.mobile-drawer .m-theme-row{border-bottom:1px solid var(--line)}
972.mobile-drawer .m-theme-btn{display:flex;width:100%;padding:14px 0;background:transparent;border:0;cursor:pointer;font:inherit;font-size:15px;font-weight:600;color:var(--text-2);justify-content:space-between;align-items:center;text-align:left}
973.mobile-drawer .m-theme-btn:hover{color:var(--text)}
974.mobile-drawer .m-theme-state{display:inline-flex;align-items:center;gap:8px;color:var(--text-3);font-size:13px;font-weight:500}
975.mobile-drawer .m-theme-state svg{width:16px;height:16px}
976.mobile-drawer .m-sun{display:none}
977.mobile-drawer .m-moon{display:block}
978[data-theme="dark"] .mobile-drawer .m-sun{display:block}
979[data-theme="dark"] .mobile-drawer .m-moon{display:none}
980.mobile-drawer .m-theme-text::after{content:"Light"}
981[data-theme="dark"] .mobile-drawer .m-theme-text::after{content:"Dark"}
982
983@keyframes pulse{50%{box-shadow:0 0 0 6px rgba(1,176,125,.05)}}
984
985/* Minimal header (cart + checkout): centered logo only, nothing else. */
986.site-header.is-minimal .wrap{justify-content:center}
987.site-header.is-minimal .brand{margin:0 auto}
988
989/* Mini search — icon-btn that opens a small dropdown panel below. */
990.search-wrap{position:relative}
991.search-panel{position:absolute;top:calc(100% + 10px);right:0;width:320px;max-width:calc(100vw - 32px);background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:14px;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .2s,transform .2s,visibility .2s;z-index:200}
992.search-wrap.open .search-panel{opacity:1;visibility:visible;transform:translateY(0)}
993.search-form{display:flex;align-items:center;gap:8px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:8px 10px;transition:border-color .15s,background .15s}
994.search-form:focus-within{border-color:var(--purple);background:var(--bg-card)}
995[data-theme="dark"] .search-form{background:var(--bg-3)}
996[data-theme="dark"] .search-form:focus-within{background:var(--bg-card-2,var(--bg-2))}
997.search-form svg{flex-shrink:0;color:var(--text-3)}
998.search-input{flex:1;border:0;background:transparent;outline:none;font:inherit;font-size:14px;color:var(--text);padding:4px 0;min-width:0}
999.search-input::placeholder{color:var(--text-3)}
1000.search-submit{flex-shrink:0;padding:6px 12px;border:0;border-radius:8px;background:var(--grad);color:#FFF;font-weight:700;font-size:12.5px;letter-spacing:-.01em;cursor:pointer;transition:transform .15s,box-shadow .2s}
1001.search-submit:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}
1002.search-hint{display:block;margin-top:8px;padding:0 4px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;color:var(--text-3)}
1003@media(max-width:520px){.search-panel{position:fixed;top:64px;left:8px;right:8px;width:auto;max-width:none}}
1004</style>
1005
1006<header id="masthead" class="site-header" role="banner">
1007  <div class="wrap">
1008    <a class="brand" href="https://wpfactory.com/" aria-label="WPFactory home">
1009      <svg class="brand-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 712 201" fill="none" role="img" aria-hidden="true">
1010        <!-- Wordmark: uses currentColor so it inherits theme text color -->
1011        <path fill-rule="evenodd" clip-rule="evenodd" d="M648.803 92.7097C651.238 91.5676 653.604 90.5507 655.895 89.6578L654.698 76.3413C649.806 77.5478 644.837 79.9218 640.639 82.6324L639.474 77.2605H627.583V127.791H641.958V96.5327C644.137 95.0538 646.411 93.8312 648.803 92.7097ZM603.287 115.034C601.783 116.501 599.516 117.186 596.623 117.2C591.077 117.176 587.758 114.574 587.775 108.952V96.0961C587.757 90.4771 591.076 87.8768 596.623 87.8515C602.169 87.8756 605.49 90.4771 605.473 96.0961V108.952C605.482 111.518 604.779 113.576 603.287 115.034ZM582.421 125.87C585.77 127.775 590.484 128.789 596.623 128.852C604.93 128.77 614.226 126.727 617.884 118.437C619.241 115.358 619.901 112.057 619.851 108.534V96.5178C619.954 89.2798 617.432 82.9427 610.83 79.1829C607.477 77.2755 602.768 76.2609 596.624 76.2C588.319 76.2815 579.025 78.3257 575.363 86.614C574.005 89.6935 573.35 92.9959 573.401 96.5178V108.534C573.297 115.773 575.817 122.11 582.421 125.87ZM560.948 128.342C562.704 128.037 564.377 127.633 565.968 127.128L564.313 116.721C562.379 117.26 560.312 117.522 558.304 117.504C555.9
101165 117.535 554.478 116.452 554.447 114.046V88.3812H565.645L566.431 77.2605H554.447V62.7984L540.069 64.7576V76.6676V88.9741V116.164C540.138 125.861 546.311 128.929 555.374 128.851C557.157 128.846 559.018 128.674 560.948 128.342ZM511.325 108.631V96.4189C511.243 90.2944 514.527 88.0468 520.49 88.0641C523.931 88.079 527.458 88.5111 530.82 89.2166L532.588 77.6581C528.613 76.8055 524.566 76.185 520.49 76.1988C505.547 76.1161 496.812 80.9399 496.949 96.6235V108.426C496.812 124.11 505.549 128.934 520.49 128.85C524.569 128.866 528.617 128.242 532.588 127.391L530.82 115.837C527.407 116.579 523.99 116.984 520.49 116.984C514.527 117.004 511.243 114.756 511.325 108.631ZM474.201 109.201V116.12C471.3 117.469 468.919 118.137 465.679 118.155C462.42 118.179 460.813 116.763 460.84 113.518C460.801 110.017 462.914 109.153 466.116 109.2L474.201 109.201ZM476.849 127.791H488.576V95.3538C488.79 79.4897 482.344 76.1437 466.871 76.1988C460.811 76.2241 454.445 76.948 448.606 78.5728L450.46 88.9155C455.011 88.0652 459.625 87.5355 464.261 87.5321C470.553 87.4746 474.557 88.2295 474.199 95.2641V99.7788H462.2C452.082 99.6949 447.067 103.489 447.113 113.725C447.044 122.312 450.81 128.647 460.264 128.851C465.66 128.924 471.038 126.69 475.678 124.232L476.849 127.791ZM441.327 66.1847L443.092 55.3548C439.363 54.5941 435.682 54.0138 431.864 54C420.689 54.046 414.488 58.5894 414.604 69.964V78.3234H406.587V89.6555H414.604V127.79H428.98V89.6567H440.407L441.387 78.3246H428.98V71.6841C428.754 67.3269 430.312 65.5791 434.895 65.5447C437.037 65.555 439.221 65.8124 441.327 66.1847ZM368.854 115.375V92.6477C371.707 90.2255 375.618 88.3755 379.432 88.2744C383.726 88.3111 385.736 90.6035 385.686 94.7172V110.332C385.736 114.36 383.639 116.71 379.439 116.772C375.881 116.746 372.314 116.194 368.854 115.375ZM400.062 110.339V94.7252C400.018 84.1377 395.852 76.2126 384.002 76.1977C378.238 76.3356 372.222 78.6348 367.435 81.704L365.691 77.2605H354.48V146L368.856 144.039V127.208C373.45 128.279 378.191 128.831 382.91 128.851C395.241 128.785 400.119 121.841 400.062 110.339ZM310.467 92.5282L321.215 127.791H337.156L346.05 77.2605H332.983L328.081 107.027L326.902 107.1L317.925 77.2605H303.231L294.151 107.102L292.969 107.028L288.068 77.2617H275L283.893 127.792H299.835L310.467 92.5282ZM676.489 145.974H689.972L695.667 128.206L712 77.2605H697.462L686.28 115.456L675.098 77.2605H660.556L676.435 127.791H681.779L676.489 145.974Z" fill="currentColor"/>
1012        <!-- Factory icon: keeps its original gradients in both light and dark mode -->
1013        <path d="M0 170.022C0 161.978 12.8917 154.648 34.0285 149.141V157.118C34.0285 167.415 42.0076 168.904 49.8416 171.375C90.9929 184.358 164.802 183.326 216.044 171.375C220.842 170.256 226.466 169.111 226.466 162.307V149.142C247.601 154.648 260.49 161.979 260.49 170.024C260.49 187.132 202.179 200.999 130.247 200.999C58.3131 200.997 0 187.13 0 170.022Z" fill="url(#wpf_lg0)"/>
1014        <path fill-rule="evenodd" clip-rule="evenodd" d="M139.5 80.5L138 80L99.8411 59.7194C96.9579 58.1965 87.2534 57.5184 87.2534 67.7932V81.3454L50.1356 61.7538C45.2229 59.381 34.0234 61.0757 34.0234 72.0311V149.142C57.8424 142.937 92.1292 139.043 130.242 139.043C130.67 139.043 131.095 139.048 131.522 139.048L138.888 81.9968L139.5 80.5Z" fill="#8A63CD"/>
1015        <path d="M218.488 122.568L187.636 105.805L187.546 106.065L187.636 106.909L191.359 142.662C204.583 144.336 216.452 146.533 226.468 149.143V135.167C226.468 126.196 219.313 123.005 218.488 122.568Z" fill="url(#wpf_lg1)"/>
1016        <path d="M187.637 106.908L188 106L176.495 3.65522C176.319 1.79771 174.524 0 172.848 0H151.766C150.191 0 148.364 1.75573 148.137 3.49491L138 80L137.5 82L187.662 107.146L187.637 106.908Z" fill="url(#wpf_lg2)"/>
1017        <path fill-rule="evenodd" clip-rule="evenodd" d="M191.357 142.649L194.779 175.5C202.171 174.314 209.303 172.933 216.043 171.36C220.841 170.242 226.465 169.099 226.465 162.293V149.13C216.45 146.52 204.581 144.321 191.357 142.649Z" fill="url(#wpf_lg3)"/>
1018        <path d="M131.5 139C131.072 138.998 130.428 139 130 139C91.8871 139 57.8424 142.943 34.0234 149.145V157.124C34.0234 167.421 42.0025 168.91 49.8366 171.381C69.72 177.653 97.0941 180.921 126 181" fill="url(#wpf_lg4)"/>
1019        <path fill-rule="evenodd" clip-rule="evenodd" d="M188 106L140 81L138 80L125.5 181C148.51 181.109 173.103 179.064 194.791 175.648L188 106Z" fill="url(#wpf_lg5)"/>
1020        <defs>
1021          <linearGradient id="wpf_lg0" x1="-0.000254476" y1="175.069" x2="260.491" y2="175.069" gradientUnits="userSpaceOnUse"><stop stop-color="#48DBD7"/><stop offset="1" stop-color="#01F4A0"/></linearGradient>
1022          <linearGradient id="wpf_lg1" x1="135.313" y1="127.603" x2="227.846" y2="127.603" gradientUnits="userSpaceOnUse"><stop stop-color="#8C63CF"/><stop offset="1" stop-color="#3847D3"/></linearGradient>
1023          <linearGradient id="wpf_lg2" x1="133.268" y1="53.573" x2="216.772" y2="53.573" gradientUnits="userSpaceOnUse"><stop offset="0.0456" stop-color="#8C63CF"/><stop offset="1" stop-color="#3847D3"/></linearGradient>
1024          <linearGradient id="wpf_lg3" x1="191.358" y1="159.074" x2="226.466" y2="
1024159.074" gradientUnits="userSpaceOnUse"><stop stop-color="#059AE5"/><stop offset="1" stop-color="#01ACE7"/></linearGradient>
1025          <linearGradient id="wpf_lg4" x1="34.0234" y1="159.89" x2="131.522" y2="159.89" gradientUnits="userSpaceOnUse"><stop stop-color="#1C37D1"/><stop offset="1" stop-color="#0E70DD"/></linearGradient>
1026          <linearGradient id="wpf_lg5" x1="101.259" y1="122.802" x2="179.283" y2="143.417" gradientUnits="userSpaceOnUse"><stop stop-color="#2B42C9"/><stop offset="0.1908" stop-color="#2947CA"/><stop offset="0.4141" stop-color="#2255CE"/><stop offset="0.6537" stop-color="#176DD5"/><stop offset="0.9031" stop-color="#078DDE"/><stop offset="1" stop-color="#009CE2"/></linearGradient>
1027        </defs>
1028      </svg>
1029    </a>
1030
1031        <nav class="primary-nav" aria-label="Primary">
1032
1033      <!-- ============ PLUGINS MEGA ============ -->
1034      <div class="has-mega" data-mega="plugins">
1035        <button class="nav-trigger" type="button" aria-expanded="false" aria-haspopup="true">Plugins <span class="caret">▾</span></button>
1036        <div class="mega-panel mega-plugins" role="menu">
1037
1038          <div class="mega-intro">
1039            <span class="kicker-mini">most popular</span>
1040            <h6>The plugins most stores reach for first.</h6>
1041          </div>
1042
1043          <div class="mega-plugins-split">
1044
1045            <!-- Left: top plugins as a vertical list -->
1046            <div class="mega-plugin-list">
1047              <a class="mega-plugin-row" href="https://wpfactory.com/item/product-quantity-for-woocommerce/">
1048                <div class="mc-icon-wrap" aria-hidden="true">
1049                  <span class="mc-icon-bg"></span>
1050                                                      <img class="mc-icon-img" src="https://wpfactory.com/wp-content/uploads/wpf-Min-Max-Default-Quantity-Manager-for-WooCommerce-Icon.png" alt="" loading="lazy">
1051                                  </div>
1052                <div class="mpr-text">
1053                  <span class="mpr-name">WooCommerce Quantity Manager</span>
1054                  <span class="mpr-desc">Min, max, and step rules</span>
1055                </div>
1056                <span class="mpr-meta">10k stores</span>
1057                <span class="mpr-arrow" aria-hidden="true">→</span>
1058              </a>
1059
1060              <a class="mega-plugin-row" href="https://wpfactory.com/item/cost-of-goods-for-woocommerce/">
1061                <div class="mc-icon-wrap" aria-hidden="true">
1062                  <span class="mc-icon-bg"></span>
1063                                                      <img class="mc-icon-img" src="https://wpfactory.com/wp-content/uploads/wpf-Cost-of-Goods-for-Woocommerce-Icon.png" alt="" loading="lazy">
1064                                  </div>
1065                <div class="mpr-text">
1066                  <span class="mpr-name">Cost of Goods</span>
1067                  <span class="mpr-desc">Track real profit per SKU, per variation</span>
1068                </div>
1069                <span class="mpr-meta">15k stores</span>
1070                <span class="mpr-arrow" aria-hidden="true">→</span>
1071              </a>
1072
1073              <a class="mega-plugin-row" href="https://wpfactory.com/item/eu-vat-for-woocommerce/">
1074                <div class="mc-icon-wrap" aria-hidden="true">
1075                  <span class="mc-icon-bg"></span>
1076                                                      <img class="mc-icon-img" src="https://wpfactory.com/wp-content/uploads/wpf-eu-uk-vat-manager-for-woocommerce-Icon.png" alt="" loading="lazy">
1077                                  </div>
1078                <div class="mpr-text">
1079                  <span class="mpr-name">EU/UK VAT Compliance</span>
1080                  <span class="mpr-desc">VIES validation, OSS rates, B2B exemptions</span>
1081                </div>
1082                <span class="mpr-meta">11k stores</span>
1083                <span class="mpr-arrow" aria-hidden="true">→</span>
1084              </a>
1085
1086              <a class="mega-plugin-row" href="https://wpfactory.com/item/order-minimum-maximum-amount-for-woocommerce/">
1087                <div class="mc-icon-wrap" aria-hidden="true">
1088                  <span class="mc-icon-bg"></span>
1089                                                      <img class="mc-icon-img" src="https://wpfactory.com/wp-content/uploads/wpf-Order-Minimum-Maximum-Amount-for-WooCommerce-Icon.png" alt="" loading="lazy">
1090                                  </div>
1091                <div class="mpr-text">
1092                  <span class="mpr-name">Order Min/Max Amount</span>
1093                  <span class="mpr-desc">Cart totals within your limits</span>
1094                </div>
1095                <span class="mpr-meta">4k stores</span>
1096                <span class="mpr-arrow" aria-hidden="true">→</span>
1097              </a>
1098
1099              <a class="mega-plugin-row" href="https://wpfactory.com/item/product-price-by-quantity-for-woocommerce/">
1100                <div class="mc-icon-wrap" aria-hidden="true">
1101                  <span class="mc-icon-bg"></span>
1102                                                      <img class="mc-icon-img" src="https://wpfactory.com/wp-content/uploads/wpf-dynamic-pricing-bulk-quantity-discounts-for-woocommerce-Icon.png" alt="" loading="lazy">
1103                                  </div>
1104                <div class="mpr-text">
1105                  <span class="mpr-name">Dynamic Pricing &amp; Discounts</span>
1106                  <span class="mpr-desc">Tiered pricing, role-based, scheduled</span>
1107                </div>
1108                <span class="mpr-meta">8.4k stores</span>
1109                <span class="mpr-arrow" aria-hidden="true">→</span>
1110              </a>
1111
1112            </div>
1113
1114            <!-- Right: Featured All Access promo card -->
1115            <a class="mega-aa-promo" href="https://wpfactory.com/all-access-lifetime-deal/">
1116              <span class="maa-tag">
1117                <span class="maa-tag-dot" aria-hidden="true"></span>
1118                Best value
1119              </span>
1120              <h6>Take all <span class="grad-text">50+ plugins.</span><br>Pay once.</h6>
1121              <p>Lifetime updates, unlimited sites, every plugin we ever ship.</p>
1122
1123              <div class="maa-price">
1124                <span class="maa-num">$499</span>
1125                <span class="maa-once">once</span>
1126              </div>
1127              <div class="maa-vs"><s>$1,990</s> if bought separately</div>
1128
1129              <div class="maa-cta">
1130                Get All Access <span class="maa-arr" aria-hidden="true">→</span>
1131              </div>
1132            </a>
1133
1134          </div>
1135
1136          <!-- "Show all 50+ plugins" — link to wpfactory.com/items/ as requested -->
1137          <a class="mega-cta-bar" href="https://wpfactory.com/items/">
1138            <div class="mcb-left">
1139              <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg>
1140              <span class="mcb-text">
1141                <strong>Show all 50+ plugins</strong>
1142                <em>180k+ stores · 4.8★ across 720 reviews</em>
1143              </span>
1144            </div>
1145            <span class="mcb-arrow" aria-hidden="true">→</span>
1146          </a>
1147        </div>
1148      </div>
1149
1150      <!-- ============ RESOURCES MEGA ============ -->
1151      <div class="has-mega" data-mega="resources">
1152        <button class="nav-trigger" type="button" aria-expanded="false" aria-haspopup="true">Resources <span class="caret">▾</span></button>
1153        <div class="mega-panel mega-resources" role="menu">
1154
1155          <div class="mega-intro">
1156            <span class="kicker-mini">learn &amp; explore</span>
1157            <h6>Everything you need to get the most out of WPFactory.</h6>
1158          </div>
1159
1160          <div class="mega-row">
1161            <a class="mega-card" href="https://wpfactory.com/blog/">
1162              <div class="mc-icon-wrap" aria-hidden="true">
1163                <span class="mc-icon-bg"></span>
1164                <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>
1165                <span class="mc-icon-glow"></span>
1166              </div>
1167              <span class="mc-name">Blog</span>
1168              <span class="mc-blurb">WooCommerce guides &amp; news</span>
1169              <span class="mc-arrow" aria-hidden="true">→</span>
1170            </a>
1171
1172            <a class="mega-card" href="https://wpfactory.com/docs/">
1173              <div class="mc-icon-wrap" aria-hidden="true">
1174                <span class="mc-icon-bg"></span>
1175                <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg>
1176                <span class="mc-icon-glow"></span>
1177              </div>
1178              <span class="mc-name">Documentation</span>
1179              <span class="mc-blurb">Setup &amp; configuration</span>
1180              <span class="mc-arrow" aria-hidden="true">→</span>
1181            </a>
1182
1183            <a class="mega-card" href="https://wpfactory.com/glossary/">
1184              <div class="mc-icon-wrap" aria-hidden="true">
1185                <span class="mc-icon-bg"></span>
1186                <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 7 4 4 20 4 20 7"/><line x1="9" y1="20" x2="15" y2="20"/><line x1="12" y1="4" x2="12" y2="20"/></svg>
1187                <span class="mc-icon-glow"></span>
1188              </div>
1189              <span class="mc-name">Glossary</span>
1190              <span class="mc-blurb">Plain-language WooCommerce terms</span>
1191              <span class="mc-arrow" aria-hidden="true">→</span>
1192            </a>
1193          </div>
1194
1195          <div class="mega-row">
1196            <a class="mega-card" href="https://wpfactory.com/tools/">
1197              <div class="mc-icon-wrap" aria-hidden="true">
1198                <span class="mc-icon-bg"></span>
1199                <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>
1200                <span class="mc-icon-glow"></span>
1201              </div>
1202              <span class="mc-name">Free Tools</span>
1203              <span class="mc-blurb">Calculators &amp; generators</span>
1204              <span class="mc-arrow" aria-hidden="true">→</span>
1205            </a>
1206
1207            <a class="mega-card" href="https://wpfactory.com/blog/category/wpfactory-ebooks/">
1208              <div class="mc-icon-wrap" aria-hidden="true">
1209                <span class="mc-icon-bg"></span>
1210                <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>
1211                <span class="mc-icon-glow"></span>
1212              </div>
1213              <span class="mc-name">Free eBooks</span>
1214              <span class="mc-blurb">Margin, pricing, UX guides</span>
1215              <span class="mc-arrow" aria-hidden="true">→</span>
1216            </a>
1217
1218            <a class="mega-card" href="https://wpfactory.com/blog/category/case-study/">
1219              <div class="mc-icon-wrap" aria-hidden="true">
1220                <span class="mc-icon-bg"></span>
1221                <svg class="mc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"/></svg>
1222                <span class="mc-icon-glow"></span>
1223              </div>
1224              <span class="mc-name">Case Studies</span>
1225              <span class="mc-blurb">Real stores, real numbers</span>
1226              <span class="mc-arrow" aria-hidden="true">→</span>
1227            </a>
1228          </div>
1229
1230          <a class="mega-cta-bar" href="https://wpfactory.com/contact-us/">
1231            <div class="mcb-left">
1232              <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22 6 12 13 2 6"/></svg>
1233              <span class="mcb-text">
1234                <strong>Need help? Email support</strong>
1235                <em>real engineers</em>
1236              </span>
1237            </div>
1238            <span class="mcb-arrow" aria-hidden="true">→</span>
1239          </a>
1240        </div>
1241      </div>
1242    </nav>
1243    
1244        <div class="nav-cta-group">
1245      
1246      <!-- Mini search -->
1247      <div class="search-wrap" id="wpf-search">
1248        <button class="icon-btn search-btn" type="button" aria-label="Search" aria-expanded="false" aria-controls="wpf-search-panel">
1249          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><line x1="20" y1="20" x2="16.65" y2="16.65"/></svg>
1250        </button>
1251        <div class="search-panel" id="wpf-search-panel" role="search">
1252          <form class="search-form" role="search" method="get" action="https://wpfactory.com/">
1253            <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><line x1="20" y1="20" x2="16.65" y2="16.65"/></svg>
1254            <input class="search-input" type="search" name="s" placeholder="Search plugins, docs, blog…" aria-label="Search the site" autocomplete="off">
1255            <button class="search-submit" type="submit">Go</button>
1256          </form>
1257          <span class="search-hint">Press Enter to search · Esc to close</span>
1258        </div>
1259      </div>
1260
1261      <!-- Sign in / My account -->
1262      <a class="icon-btn signin" href="https://wpfactory.com/my-account/" aria-label="My account">
1263        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
1264      </a>
1265
1266      <!-- Cart -->
1267      <a class="icon-btn cart-btn" href="https://wpfactory.com/cart/" aria-label="Cart">
1268        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/></svg>
1269        <span class="cart-count is-empty">0</span>
1270      </a>
1271
1272      <button class="theme-toggle" type="button" aria-label="Toggle theme">
1273        <svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg>
1274        <svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
1275      </button>
1276
1277      <a class="btn btn-primary btn-sm header-cta" href="https://wpfactory.com/all-access-lifetime-deal/">
1278        <span class="cta-long">Get All Access - $499</span>
1279        <span class="cta-short">$499</span>
1280        <span class="arrow" aria-hidden="true">→</span>
1281      </a>
1282      <button class="burger" type="button" aria-label="Open menu" aria-expanded="false"><span class="burger-line" aria-hidden="true"></span></button>
1283    </div>
1284      </div>
1285</header>
1286
1287<!-- Mobile drawer (lives outside <header> so it overlays the page) -->
1288<div class="mobile-drawer-overlay" id="m-overlay"></div>
1289<div class="mobile-drawer" id="m-drawer" aria-label="Mobile navigation">
1290  <button class="mobile-close" aria-label="Close menu" id="m-close">
1291    <svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
1292  </button>
1293  <ul>
1294    <li class="group-h">Plugins</li>
1295    <li>
1296      <a href="https://wpfactory.com/items/">
1297        <span class="md-icon-wrap" aria-hidden="true">
1298          <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg>
1299        </span>
1300        <span>All Items</span>
1301      </a>
1302    </li>
1303    <li class="group-h">Resources</li>
1304    <li>
1305      <a href="https://wpfactory.com/blog/">
1306        <span class="md-icon-wrap" aria-hidden="true">
1307          <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/></svg>
1308        </span>
1309        <span>Blog</span>
1310      </a>
1311    </li>
1312    <li>
1313      <a href="https://wpfactory.com/docs/">
1314        <span class="md-icon-wrap" aria-hidden="true">
1315          <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg>
1316        </span>
1317        <span>Documentation</span>
1318      </a>
1319    </li>
1320    <li>
1321      <a href="https://wpfactory.com/support/">
1322        <span class="md-icon-wrap" aria-hidden="true">
1323          <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="4"/><line x1="4.93" y1="4.93" x2="9.17" y2="9.17"/><line x1="14.83" y1="14.83" x2="19.07" y2="19.07"/><line x1="14.83" y1="9.17" x2="19.07" y2="4.93"/><line x1="4.93" y1="19.07" x2="9.17" y2="14.83"/></svg>
1324        </span>
1325        <span>Support</span>
1326      </a>
1327    </li>
1328    <li class="group-h">Account</li>
1329    <li>
1330      <a href="https://wpfactory.com/my-account/">
1331        <span class="md-icon-wrap" aria-hidden="true">
1332          <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
1333        </span>
1334        <span>Sign in / My Account</span>
1335      </a>
1336    </li>
1337    <li>
1338      <a href="https://wpfactory.com/cart/">
1339        <span class="md-icon-wrap" aria-hidden="true">
1340          <svg class="md-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"/></svg>
1341        </span>
1342        <span>Cart</span>
1343      </a>
1344    </li>
1345    <li class="group-h">Appearance</li>
1346    <li class="m-theme-row">
1347      <button class="m-theme-btn" type="button" aria-label="Toggle theme">
1348        <span>Theme</span>
1349        <span class="m-theme-state">
1350          <svg class="m-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"/></svg>
1351          <svg class="m-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
1352          <span class="m-theme-text"></span>
1353        </span>
1354      </button>
1355    </li>
1356  </ul>
1357</div>
1358
1359<script>
1360(function(){
1361  // ===== Theme toggle =====
1362  // Controls light/dark on the <html> element. As long as each page defines
1363  // the design tokens for both themes on :root[data-theme="light"] and
1364  // :root[data-theme="dark"], one toggle here handles every page.
1365  // Binds to both the header icon (.theme-toggle) and the drawer row (.m-theme-btn).
1366  var themeBtns = document.querySelectorAll('.theme-toggle, .m-theme-btn');
1367  themeBtns.forEach(function(btn){
1368    btn.addEventListener('click', function(){
1369      var current = document.documentElement.getAttribute('data-theme');
1370      var next = current === 'dark' ? 'light' : 'dark';
1371      document.documentElement.setAttribute('data-theme', next);
1372      try{ localStorage.setItem('wpf-theme', next); }catch(e){}
1373    });
1374  });
1375
1376  // ===== Mega-menu: hover + click + edge-aware positioning =====
1377  function positionMegaPanel(megaItem){
1378    var panel = megaItem.querySelector('.mega-panel');
1379    if(!panel) return;
1380    panel.style.left = '0';
1381    panel.style.right = 'auto';
1382    var rect = panel.getBoundingClientRect();
1383    var vw = window.innerWidth;
1384    var safeMargin = 24;
1385    if(rect.right > vw - safeMargin){
1386      var overflow = rect.right - (vw - safeMargin);
1387      panel.style.left = (-overflow) + 'px';
1388    }
1389    rect = panel.getBoundingClientRect();
1390    if(rect.left < safeMargin){
1391      var fix = safeMargin - rect.left;
1392      panel.style.left = (parseFloat(panel.style.left || 0) + fix) + 'px';
1393    }
1394  }
1395
1396  var megaItems = document.querySelectorAll('.has-mega');
1397  var openMega = null;
1398  megaItems.forEach(function(el){
1399    var trigger = el.querySelector('.nav-trigger');
1400    el.addEventListener('mouseenter', function(){
1401      megaItems.forEach(function(m){ m.classList.remove('open'); });
1402      el.classList.add('open');
1403      requestAnimationFrame(function(){ positionMegaPanel(el); });
1404      openMega = el;
1405      if(trigger) trigger.setAttribute('aria-expanded','true');
1406    });
1407    el.addEventListener('mouseleave', function(){
1408      el.classList.remove('open');
1409      if(trigger) trigger.setAttribute('aria-expanded','false');
1410      if(openMega === el) openMega = null;
1411    });
1412    if(trigger){
1413      trigger.addEventListener('click', function(e){
1414        e.preventDefault();
1415        var isOpen = el.classList.contains('open');
1416        megaItems.forEach(function(m){ m.classList.remove('open'); });
1417        if(!isOpen){
1418          el.classList.add('open');
1419          requestAnimationFrame(function(){ positionMegaPanel(el); });
1420          openMega = el;
1421        }
1422        trigger.setAttribute('aria-expanded', !isOpen ? 'true' : 'false');
1423      });
1424    }
1425  });
1426  document.addEventListener('click', function(e){
1427    if(openMega && !openMega.contains(e.target)){
1428      openMega.classList.remove('open');
1429      var t = openMega.querySelector('.nav-trigger');
1430      if(t) t.setAttribute('aria-expanded','false');
1431      openMega = null;
1432    }
1433  });
1434  window.addEventListener('resize', function(){
1435    if(openMega) positionMegaPanel(openMega);
1436  });
1437
1438  // ===== Mini search =====
1439  var searchWrap = document.getElementById('wpf-search');
1440  if(searchWrap){
1441    var searchBtn = searchWrap.querySelector('.search-btn');
1442    var searchInput = searchWrap.querySelector('.search-input');
1443    function openSearch(){
1444      searchWrap.classList.add('open');
1445      if(searchBtn) searchBtn.setAttribute('aria-expanded','true');
1446      // Defer focus until after the transition starts so iOS doesn't jump.
1447      setTimeout(function(){ if(searchInput) searchInput.focus(); }, 50);
1448    }
1449    function closeSearch(){
1450      searchWrap.classList.remove('open');
1451      if(searchBtn) searchBtn.setAttribute('aria-expanded','false');
1452    }
1453    if(searchBtn){
1454      searchBtn.addEventListener('click', function(e){
1455        e.stopPropagation();
1456        if(searchWrap.classList.contains('open')) closeSearch(); else openSearch();
1457      });
1458    }
1459    document.addEventListener('click', function(e){
1460      if(searchWrap.classList.contains('open') && !searchWrap.contains(e.target)) closeSearch();
1461    });
1462    document.addEventListener('keydown', function(e){
1463      if(e.key === 'Escape' && searchWrap.classList.contains('open')) closeSearch();
1464    });
1465  }
1466
1467  // ===== Mobile drawer =====
1468  var burger = document.querySelector('.burger');
1469  var drawer = document.getElementById('m-drawer');
1470  var overlay = document.getElementById('m-overlay');
1471  var mclose = document.getElementById('m-close');
1472  function openDrawer(){
1473    if(drawer) drawer.classList.add('open');
1474    if(overlay) overlay.classList.add('open');
1475    if(burger) burger.setAttribute('aria-expanded','true');
1476    document.body.style.overflow = 'hidden';
1477  }
1478  function closeDrawer(){
1479    if(drawer) drawer.classList.remove('open');
1480    if(overlay) overlay.classList.remove('open');
1481    if(burger) burger.setAttribute('aria-expanded','false');
1482    document.body.style.overflow = '';
1483  }
1484  if(burger) burger.addEventListener('click', openDrawer);
1485  if(mclose) mclose.addEventListener('click', closeDrawer);
1486  if(overlay) overlay.addEventListener('click', closeDrawer);
1487})();
1488</script>
1488
1489
1490
1491<div id="content" class="site-content" tabindex="-1">
1492<div class="col-full"><div class="woocommerce"></div>
1493<main id="main">
1494
1495
1496<!-- ============================================================
1497     HERO
1498     ============================================================ -->
1499<section class="bl-hero">
1500	<div class="blob blob-1" aria-hidden="true"></div>
1501	<div class="blob blob-2" aria-hidden="true"></div>
1502	<div class="wrap">
1503		<span class="bl-hero-eyebrow eyebrow">guides, case studies, and how-tos &darr;</span>
1504		<h1>The WPFactory <span class="grad-text">blog.</span></h1>
1505		<p class="bl-hero-lede">
1506			WooCommerce guides, real store case studies, code snippets, and how-tos from the team.
1507		</p>
1508	</div>
1509</section>
1510
1511
1512<!-- ============================================================
1513     FILTER PILLS
1514     ============================================================ -->
1515<div class="bl-filter-wrap">
1516	<div class="bl-filter" role="tablist" aria-label="Filter posts by category">
1517
1518		<a class="bl-filter-btn active" href="https://wpfactory.com/blog/">
1519			All			<span class="count">340</span>
1520		</a>
1521
1522					<a class="bl-filter-btn" href="https://wpfactory.com/blog/category/woo-guides/">
1523				WooCommerce Guides				<span class="count">129</span>
1524			</a>
1525					<a class="bl-filter-btn" href="https://wpfactory.com/blog/category/reviews/">
1526				Plugins Reviews				<span class="count">67</span>
1527			</a>
1528					<a class="bl-filter-btn" href="https://wpfactory.com/blog/category/selling-tips/">
1529				Selling Tips				<span class="count">47</span>
1530			</a>
1531					<a class="bl-filter-btn" href="https://wpfactory.com/blog/category/how-to/">
1532				How To				<span class="count">45</span>
1533			</a>
1534					<a class="bl-filter-btn" href="https://wpfactory.com/blog/category/building-wordpress/">
1535				Building WordPress				<span class="count">20</span>
1536			</a>
1537					<a class="bl-filter-btn" href="https://wpfactory.com/blog/category/wpfactory-ebooks/">
1538				WPFactory eBooks				<span class="count">13</span>
1539			</a>
1540					<a class="bl-filter-btn" href="https://wpfactory.com/blog/category/case-study/">
1541				Case Study				<span class="count">8</span>
1542			</a>
1543					<a class="bl-filter-btn" href="https://wpfactory.com/blog/category/snippets/">
1544				Coding Snippets				<span class="count">6</span>
1545			</a>
1546					<a class="bl-filter-btn" href="https://wpfactory.com/blog/category/wpfactory-updates/">
1547				WPFactory Updates				<span class="count">5</span>
1548			</a>
1549		
1550	</div>
1551</div>
1552
1553
1554	<div class="bl-feat-wrap">
1555		<div class="wrap">
1556			<a class="bl-feat" href="https://wpfactory.com/blog/woocommerce-cost-of-goods/">
1557
1558				<div class="bl-feat-img">
1559					<span class="bl-feat-tag"><span class="dot" aria-hidden="true"></span>Latest</span>
1560											<img width="1229" height="461" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide.webp" class="attachment-wpf_blog_featured size-wpf_blog_featured wp-post-image" alt="WooCommerce Cost of Goods: The Complete Profit Tracking Guide" loading="eager" decoding="async" fetchpriority="high" srcset="https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide.webp 1229w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-300x113.webp 300w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-768x288.webp 768w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-360x135.webp 360w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-250x94.webp 250w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-299x112.webp 299w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-490x184.webp 490w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-160x60.webp 160w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-227x85.webp 227w, https://wpfactory.com/wp-content/uploads/WooCommerce-Cost-of-Goods-The-Complete-Profit-Tracking-Guide-416x156.webp 416w" sizes="(max-width: 1229px) 100vw, 1229px" />									</div>
1561
1562				<div class="bl-feat-body">
1563					<div class="bl-feat-meta">
1564													<span class="cat">WooCommerce Guides</span>
1565							<span class="sep" aria-hidden="true">&middot;</span>
1566												<span>September 28, 2026</span>
1567						<span class="sep" aria-hidden="true">&middot;</span>
1568						<span>11 min read</span>
1569					</div>
1570
1571					<h2>WooCommerce Cost of Goods: The Complete Profit Tracking Guide</h2>
1572
1573					<p>Quick Answer: WooCommerce Cost of Goods Cost of goods in WooCommerce is what each product actually costs you to sell, so you can subtract it from revenue and see real profit rather than just sales.&hellip;</p>
1574
1575					<div class="bl-feat-foot">
1576						<div class="bl-feat-author">
1577							<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=84&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=168&#038;d=mm&#038;r=g 2x' class='avatar avatar-84 photo' height='84' width='84' decoding='async'/></div>
1578							<div>
1579								<div class="name">Rami Badrah</div>
1580																	<div class="role">E-commerce Expert | Consultant in</div>
1581															</div>
1582						</div>
1583						<span class="bl-feat-go">Read article <span aria-hidden="true">&rarr;</span></span>
1584					</div>
1585				</div>
1586
1587			</a>
1588		</div>
1589	</div>
1590	
1591
1592<!-- ============================================================
1593     POST GRID
1594     ============================================================ -->
1595
1596	<div class="bl-grid-wrap">
1597		<div class="wrap">
1598
1599			<div class="bl-grid">
1600				
1601					<a class="bl-card" href="https://wpfactory.com/blog/woocommerce-limit-cart-quantity/">
1602						<div class="bl-card-img">
1603															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Limit-Cart-Quantity-Cap-Total-Items-in-Cart-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Limit Cart Quantity: Cap Total Items in Cart" loading="lazy" decoding="async" />													</div>
1604						<div class="bl-card-body">
1605							<div class="bl-card-meta">
1606																	<span class="cat">WooCommerce Guides</span>
1607									<span class="sep" aria-hidden="true">&middot;</span>
1608																<span>Sep 27</span>
1609							</div>
1610							<h3 class="bl-card-title">WooCommerce Limit Cart Quantity: Cap Total Items in Cart</h3>
1611							<p class="bl-card-excerpt">Quick Answer: WooCommerce Limit Cart Quantity To limit cart quantity in WooCommerce, you cap the total number of items a customer can have across&hellip;</p>
1612							<div class="bl-card-foot">
1613								<div class="bl-card-author">
1614									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;
1614r=g 2x' class='avatar avatar-48 photo' height='48' width='48' decoding='async'/></div>
1615									<span class="name">Rami Badrah</span>
1616								</div>
1617								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1618							</div>
1619						</div>
1620					</a>
1621
1622				
1623					<a class="bl-card" href="https://wpfactory.com/blog/woocommerce-variable-product-quantity/">
1624						<div class="bl-card-img">
1625															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Variable-Product-Quantity-Rules-Per-Variation-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Variable Product Quantity Rules (Per Variation)" loading="lazy" decoding="async" />													</div>
1626						<div class="bl-card-body">
1627							<div class="bl-card-meta">
1628																	<span class="cat">WooCommerce Guides</span>
1629									<span class="sep" aria-hidden="true">&middot;</span>
1630																<span>Sep 22</span>
1631							</div>
1632							<h3 class="bl-card-title">WooCommerce Variable Product Quantity Rules (Per Variation)</h3>
1633							<p class="bl-card-excerpt">Quick Answer: WooCommerce Variable Product Quantity Rules A variable product in WooCommerce holds several variations, and each one can carry its own minimum, maximum,&hellip;</p>
1634							<div class="bl-card-foot">
1635								<div class="bl-card-author">
1636									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;r=g 2x' class='avatar avatar-48 photo' height='48' width='48' decoding='async'/></div>
1637									<span class="name">Rami Badrah</span>
1638								</div>
1639								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1640							</div>
1641						</div>
1642					</a>
1643
1644				
1645					<a class="bl-card" href="https://wpfactory.com/blog/woocommerce-minimum-order-amount-by-country/">
1646						<div class="bl-card-img">
1647															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Minimum-Order-Amount-by-Country-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Minimum Order Amount by Country (Free Tool)" loading="lazy" decoding="async" />													</div>
1648						<div class="bl-card-body">
1649							<div class="bl-card-meta">
1650																	<span class="cat">WooCommerce Guides</span>
1651									<span class="sep" aria-hidden="true">&middot;</span>
1652																<span>Sep 17</span>
1653							</div>
1654							<h3 class="bl-card-title">WooCommerce Minimum Order Amount by Country (Free Tool)</h3>
1655							<p class="bl-card-excerpt">Quick Answer: WooCommerce Minimum Order Amount by Country WooCommerce has no built-in way to set a different minimum order amount for each country. The&hellip;</p>
1656							<div class="bl-card-foot">
1657								<div class="bl-card-author">
1658									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;r=g 2x' class='avatar avatar-48 photo' height='48' width='48' decoding='async'/></div>
1659									<span class="name">Rami Badrah</span>
1660								</div>
1661								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1662							</div>
1663						</div>
1664					</a>
1665
1666				
1667					<a class="bl-card" href="https://wpfactory.com/blog/woocommerce-price-per-unit/">
1668						<div class="bl-card-img">
1669															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Price-per-Unit-Sell-by-Weight-Length-or-Volume-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Price per Unit: Sell by Weight, Length or Volume" loading="lazy" decoding="async" />													</div>
1670						<div class="bl-card-body">
1671							<div class="bl-card-meta">
1672																	<span class="cat">WooCommerce Guides</span>
1673									<span class="sep" aria-hidden="true">&middot;</span>
1674																<span>Sep 15</span>
1675							</div>
1676							<h3 class="bl-card-title">
1676WooCommerce Price per Unit: Sell by Weight, Length or Volume</h3>
1677							<p class="bl-card-excerpt">Quick Answer: WooCommerce Price per Unit A WooCommerce price per unit setup lets you sell one product by weight, length, or volume instead of&hellip;</p>
1678							<div class="bl-card-foot">
1679								<div class="bl-card-author">
1680									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div>
1681									<span class="name">Rami Badrah</span>
1682								</div>
1683								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1684							</div>
1685						</div>
1686					</a>
1687
1688				
1689					<a class="bl-card" href="https://wpfactory.com/blog/woocommerce-hide-add-to-cart-button/">
1690						<div class="bl-card-img">
1691															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Hide-Add-to-Cart-Button-for-Minimum-Quantity-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Hide Add to Cart Button for Minimum Quantity" loading="lazy" decoding="async" />													</div>
1692						<div class="bl-card-body">
1693							<div class="bl-card-meta">
1694																	<span class="cat">WooCommerce Guides</span>
1695									<span class="sep" aria-hidden="true">&middot;</span>
1696																<span>Sep 8</span>
1697							</div>
1698							<h3 class="bl-card-title">WooCommerce Hide Add to Cart Button for Minimum Quantity</h3>
1699							<p class="bl-card-excerpt">Quick Answer: WooCommerce Hide Add to Cart Button for Minimum Quantity WooCommerce does not hide the Add to Cart button based on quantity rules&hellip;</p>
1700							<div class="bl-card-foot">
1701								<div class="bl-card-author">
1702									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div>
1703									<span class="name">Rami Badrah</span>
1704								</div>
1705								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1706							</div>
1707						</div>
1708					</a>
1709
1710				
1711					<a class="bl-card" href="https://wpfactory.com/blog/woocommerce-restaurant-ordering/">
1712						<div class="bl-card-img">
1713															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Restaurant-Ordering-Quantity-Rules-for-Food-Stores-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Restaurant Ordering: Quantity Rules for Food Stores" loading="lazy" decoding="async" />													</div>
1714						<div class="bl-card-body">
1715							<div class="bl-card-meta">
1716																	<span class="cat">WooCommerce Guides</span>
1717									<span class="sep" aria-hidden="true">&middot;</span>
1718																<span>Sep 6</span>
1719							</div>
1720							<h3 class="bl-card-title">WooCommerce Restaurant Ordering: Quantity Rules for Food Stores</h3>
1721							<p class="bl-card-excerpt">Quick Answer: WooCommerce Restaurant Ordering and Quantity Rules WooCommerce does not come with restaurant-specific ordering rules out of the box. To control portion sizes,&hellip;</p>
1722							<div class="bl-card-foot">
1723								<div class="bl-card-author">
1724									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div>
1725									<span class="name">Rami Badrah</span>
1726								</div>
1727								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1728							</div>
1729						</div>
1730					</a>
1731
1732				
1733					<a class="bl-card" href="https://wpfactory.com/blog/maximum-order-value-in-woocommerce/">
1734						<div class="bl-card-img">
1735															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/How-to-Set-Maximum-Order-Value-in-WooCommerce-Fraud-and-Stock-Control-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="How to Set Maximum Order Value in WooCommerce (Fraud and Stock Control)" loading="lazy" decoding="async" />													</div>
1736						<div class="bl-card-body">
1737							<div class="bl-card-meta">
1738																	<span class="cat">WooCommerce Guides</span>
1739									<span class="sep" aria-hidden="true">&middot;</span>
1740																<span>Aug 31</span>
1741							</div>
1742							<h3 class="bl-card-title">How to Set Maximum Order Value in WooCommerce (Fraud and Stock Control)</h3>
1743							<p class="bl-card-excerpt">Quick Answer: Maximum Order Value in WooCommerce WooCommerce does not include a built-in maximum order value cap. To block orders above a set threshold,&hellip;</p>
1744							<div class="bl-card-foot">
1745								<div class="bl-card-author">
1746									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;
1746r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div>
1747									<span class="name">Rami Badrah</span>
1748								</div>
1749								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1750							</div>
1751						</div>
1752					</a>
1753
1754				
1755					<a class="bl-card" href="https://wpfactory.com/blog/woocommerce-limit-purchases-per-customer-lifetime-period/">
1756						<div class="bl-card-img">
1757															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Limit-Purchases-Per-Customer-Lifetime-Period-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Limit Purchases Per Customer (Lifetime + Period)" loading="lazy" decoding="async" />													</div>
1758						<div class="bl-card-body">
1759							<div class="bl-card-meta">
1760																	<span class="cat">WooCommerce Guides</span>
1761									<span class="sep" aria-hidden="true">&middot;</span>
1762																<span>Aug 30</span>
1763							</div>
1764							<h3 class="bl-card-title">WooCommerce Limit Purchases Per Customer (Lifetime + Period)</h3>
1765							<p class="bl-card-excerpt">Quick Answer: WooCommerce Limit Purchases Per Customer A WooCommerce limit purchases per customer rule caps how much one shopper can buy of a product,&hellip;</p>
1766							<div class="bl-card-foot">
1767								<div class="bl-card-author">
1768									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div>
1769									<span class="name">Rami Badrah</span>
1770								</div>
1771								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1772							</div>
1773						</div>
1774					</a>
1775
1776				
1777					<a class="bl-card" href="https://wpfactory.com/blog/woocommerce-case-quantity-pricing/">
1778						<div class="bl-card-img">
1779															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Case-Quantity-Pricing-Sell-by-Box-or-Pallet-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Case Quantity Pricing: Sell by Box or Pallet" loading="lazy" decoding="async" />													</div>
1780						<div class="bl-card-body">
1781							<div class="bl-card-meta">
1782																	<span class="cat">WooCommerce Guides</span>
1783									<span class="sep" aria-hidden="true">&middot;</span>
1784																<span>Aug 26</span>
1785							</div>
1786							<h3 class="bl-card-title">WooCommerce Case Quantity Pricing: Sell by Box or Pallet</h3>
1787							<p class="bl-card-excerpt">Quick Answer: What Is WooCommerce Case Quantity Pricing? WooCommerce case quantity pricing means selling a product in fixed pack sizes, a box or a&hellip;</p>
1788							<div class="bl-card-foot">
1789								<div class="bl-card-author">
1790									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div>
1791									<span class="name">Rami Badrah</span>
1792								</div>
1793								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1794							</div>
1795						</div>
1796					</a>
1797
1798				
1799					<a class="bl-card" href="https://wpfactory.com/blog/woocommerce-minimum-order-amount-by-payment-method/">
1800						<div class="bl-card-img">
1801															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Minimum-Order-Amount-by-Payment-Method-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Minimum Order Amount by Payment Method (Cash on Delivery and More)" loading="lazy" decoding="async" />													</div>
1802						<div class="bl-card-body">
1803							<div class="bl-card-meta">
1804																	<span class="cat">WooCommerce Guides</span>
1805									<span class="sep" aria-hidden="true">&middot;</span>
1806																<span>Aug 23</span>
1807							</div>
1808							<h3 class="bl-card-title">WooCommerce Minimum Order Amount by Payment Method (Cash on Delivery and More)</h3>
1809							<p class="bl-card-excerpt">Quick Answer: WooCommerce Minimum Order Amount by Payment Method Tying a WooCommerce minimum order amount to a payment method means a gateway only appears&hellip;</p>
1810							<div class="bl-card-foot">
1811								<div class="bl-card-author">
1812									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;
1812r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div>
1813									<span class="name">Rami Badrah</span>
1814								</div>
1815								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1816							</div>
1817						</div>
1818					</a>
1819
1820				
1821					<a class="bl-card" href="https://wpfactory.com/blog/woocommerce-minimum-order-amount-by-user-role/">
1822						<div class="bl-card-img">
1823															<img width="382" height="186" src="https://wpfactory.com/wp-content/uploads/WooCommerce-Minimum-Order-Amount-by-User-Role-Wholesale-382x186.webp" class="attachment-wpf_blog_card size-wpf_blog_card wp-post-image" alt="WooCommerce Minimum Order Amount by User Role (Wholesale)" loading="lazy" decoding="async" />													</div>
1824						<div class="bl-card-body">
1825							<div class="bl-card-meta">
1826																	<span class="cat">WooCommerce Guides</span>
1827									<span class="sep" aria-hidden="true">&middot;</span>
1828																<span>Aug 19</span>
1829							</div>
1830							<h3 class="bl-card-title">WooCommerce Minimum Order Amount by User Role (Wholesale)</h3>
1831							<p class="bl-card-excerpt">Quick Answer: WooCommerce Minimum Order Amount by User Role A WooCommerce minimum order amount by user role sets a different cart spend floor for&hellip;</p>
1832							<div class="bl-card-foot">
1833								<div class="bl-card-author">
1834									<div class="avatar"><img alt='' src='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=48&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11b8a95bf37b747617d4692faf0ccf62423ad983b4f46e0ceabbcd5aa4091856?s=96&#038;d=mm&#038;r=g 2x' class='avatar avatar-48 photo' height='48' width='48' loading='lazy' decoding='async'/></div>
1835									<span class="name">Rami Badrah</span>
1836								</div>
1837								<span class="bl-card-go">Read <span aria-hidden="true">&rarr;</span></span>
1838							</div>
1839						</div>
1840					</a>
1841
1842							</div>
1843
1844							<nav class="bl-pagination" aria-label="Posts pagination">
1845					<ul>
1846													<li><span aria-current="page" class="page-numbers current">1</span></li>
1847													<li><a class="page-numbers" href="https://wpfactory.com/blog/page/2/">2</a></li>
1848													<li><a class="page-numbers" href="https://wpfactory.com/blog/page/3/">3</a></li>
1849													<li><span class="page-numbers dots">&hellip;</span></li>
1850													<li><a class="page-numbers" href="https://wpfactory.com/blog/page/23/">23</a></li>
1851													<li><a class="next page-numbers" href="https://wpfactory.com/blog/page/2/">&rarr;</a></li>
1852											</ul>
1853				</nav>
1854			
1855		</div>
1856	</div>
1857
1858
1859
1860<!-- ============================================================
1861     ALL ACCESS BAND
1862     ============================================================ -->
1863<section class="bl-aa" aria-label="All Access lifetime bundle">
1864	<div class="wrap">
1865		<div class="bl-aa-grid">
1866
1867			<div>
1868				<span class="bl-aa-kicker">all access &middot; lifetime</span>
1869				<h2>The plugins behind <span class="em">most of what we write about.</span></h2>
1870				<p class="bl-aa-lede">
1871					A lot of the posts here reference WPFactory plugins because that's what we build with. <strong>All Access gets you every plugin we make</strong>, on as many sites as you run. Pay once. Own it.
1872				</p>
1873				<div class="bl-aa-ctas">
1874					<a class="btn btn-cream" href="https://wpfactory.com/all-access-lifetime-deal/">Get All Access lifetime <span class="arrow" aria-hidden="true">&rarr;</span></a>
1875					<a class="btn btn-ghost bl-aa-ghost" href="https://wpfactory.com/all-access-lifetime-deal/">See what's included</a>
1876				</div>
1877			</div>
1878
1879			<div class="bl-aa-price-card">
1880				<span class="label">lifetime, once</span>
1881				<div class="bl-aa-price">
1882					<span class="currency">$</span>
1883					<span class="amt">499</span>
1884					<span class="per">once</span>
1885				</div>
1886				<div class="bl-aa-price-sub">vs. $59.99/yr per plugin, break-even after 9 plugins</div>
1887				<ul class="bl-aa-feat">
1888					<li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg><span>Every WPFactory plugin, current and future</span></li>
1889					<li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg><span>Unlimited sites, no per-site caps</span></li>
1890					<li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg><span>Lifetime updates, no renewals</span></li>
1891					<li><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg><span>30-day refund, no questions asked</span></li>
1892				</ul>
1893			</div>
1894
1895		</div>
1896	</div>
1897</section>
1898
1899
1900</main>
1901
1902
1903</div></div><!-- #content -->
1904
1905
1906<style>
1907/* ============================================================
1908   FOOTER — component-scoped styles
1909   Assumes design tokens are already on :root globally.
1910   ============================================================ */
1911
1912.site-footer{background:var(--bg);border-top:1px solid var(--line);padding:72px 0 32px}
1913
1914.footer-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:48px;margin-bottom:48px}
1915@media(max-width:980px){.footer-grid{grid-template-columns:1fr 1fr;gap:36px}}
1916@media(max-width:560px){.footer-grid{grid-template-columns:1fr;gap:32px}}
1917
1918.site-footer .brand,
1919.site-footer .brand:link,
1920.site-footer .brand:visited{display:flex;align-items:center;color:var(--text);text-decoration:none}
1921.site-footer .brand-logo{height:30px;width:auto;display:block;color:inherit}
1922
1923.footer-brand p{font-size:13.5px;color:var(--text-3);line-height:1.55;margin:14px 0 18px;max-width:32ch}
1924
1925.footer-brand .socials{display:flex;gap:8px;margin-top:18px}
1926.site-footer .footer-brand .socials a,
1927.site-footer .footer-brand .socials a:link,
1928.site-footer .footer-brand .socials a:visited{width:32px;height:32px;border-radius:8px;background:var(--bg-2);color:var(--text-2);display:grid;place-items:center;transition:background .15s,color .15s,transform .15s;text-decoration:none}
1929.site-footer .footer-brand .socials a:hover,
1930.site-footer .footer-brand .socials a:focus{background:var(--purple);color:#FFF;transform:translateY(-2px)}
1931.footer-brand .socials svg{width:14px;
1931height:14px}
1932
1933.footer-col h6{font-family:var(--font-mono);font-size:11px;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--text);margin:0 0 16px}
1934.footer-col ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:9px}
1935.site-footer .footer-col li a,
1936.site-footer .footer-col li a:link,
1937.site-footer .footer-col li a:visited{font-size:13.5px;color:var(--text-3);transition:color .15s,padding-left .15s;text-decoration:none}
1938.site-footer .footer-col li a:hover,
1939.site-footer .footer-col li a:focus{color:var(--purple);padding-left:3px}
1940[data-theme="dark"] .site-footer .footer-col li a:hover,
1941[data-theme="dark"] .site-footer .footer-col li a:focus{color:var(--purple-light)}
1942.site-footer .footer-cta-link,
1943.site-footer .footer-cta-link:link,
1944.site-footer .footer-cta-link:visited{color:var(--purple);font-weight:700}
1945[data-theme="dark"] .site-footer .footer-cta-link,
1946[data-theme="dark"] .site-footer .footer-cta-link:link,
1947[data-theme="dark"] .site-footer .footer-cta-link:visited{color:var(--purple-light)}
1948
1949.footer-bottom{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;padding-top:24px;border-top:1px solid var(--line);font-size:12px;color:var(--text-3)}
1950.footer-bottom .legal-links{display:flex;gap:18px;flex-wrap:wrap}
1951.footer-bottom .legal-links a{color:var(--text-3);transition:color .15s}
1952.footer-bottom .legal-links a:hover{color:var(--text)}
1953
1954/* Minimal footer (cart + checkout): slim legal strip only, no grid above it. */
1955.site-footer.is-minimal{padding:24px 0}
1956.site-footer.is-minimal .footer-bottom{padding-top:0;border-top:0}
1957</style>
1958
1959<footer id="colophon" class="site-footer" role="contentinfo">
1960  <div class="wrap">
1961        <div class="footer-grid">
1962
1963      <!-- Brand + tagline + socials -->
1964      <div class="footer-col footer-brand">
1965        <a class="brand" href="https://wpfactory.com/" aria-label="WPFactory home">
1966          <svg class="brand-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 712 201" fill="none" role="img" aria-hidden="true">
1967            <!-- Wordmark: uses currentColor so it inherits theme text color -->
1968            <path fill-rule="evenodd" clip-rule="evenodd" d="M648.803 92.7097C651.238 91.5676 653.604 90.5507 655.895 89.6578L654.698 76.3413C649.806 77.5478 644.837 79.9218 640.639 82.6324L639.474 77.2605H627.583V127.791H641.958V96.5327C644.137 95.0538 646.411 93.8312 648.803 92.7097ZM603.287 115.034C601.783 116.501 599.516 117.186 596.623 117.2C591.077 117.176 587.758 114.574 587.775 108.952V96.0961C587.757 90.4771 591.076 87.8768 596.623 87.8515C602.169 87.8756 605.49 90.4771 605.473 96.0961V108.952C605.482 111.518 604.779 113.576 603.287 115.034ZM582.421 125.87C585.77 127.775 590.484 128.789 596.623 128.852C604.93 128.77 614.226 126.727 617.884 118.437C619.241 115.358 619.901 112.057 619.851 108.534V96.5178C619.954 89.2798 617.432 82.9427 610.83 79.1829C607.477 77.2755 602.768 76.2609 596.624 76.2C588.319 76.2815 579.025 78.3257 575.363 86.614C574.005 89.6935 573.35 92.9959 573.401 96.5178V108.534C573.297 115.773 575.817 122.11 582.421 125.87ZM560.948 128.342C562.704 128.037 564.377 127.633 565.968 127.128L564.313 116.721C562.379 117.26 560.312 117.522 558.304 117.504C555.965 117.535 554.478 116.452 554.447 114.046V88.3812H565.645L566.431 77.2605H554.447V62.7984L540.069 64.7576V76.6676V88.9741V116.164C540.138 125.861 546.311 128.929 555.374 128.851C557.157 128.846 559.018 128.674 560.948 128.342ZM511.325 108.631V96.4189C511.243 90.2944 514.527 88.0468 520.49 88.0641C523.931 88.079 527.458 88.5111 530.82 89.2166L532.588 77.6581C528.613 76.8055 524.566 76.185 520.49 76.1988C505.547 76.1161 496.812 80.9399 496.949 96.6235V108.426C496.812 124.11 505.549 128.934 520.49 128.85C524.569 128.866 528.617 128.242 532.588 127.391L530.82 115.837C527.407 116.579 523.99 116.984 520.49 116.984C514.527 117.004 511.243 114.756 511.325 108.631ZM474.201 109.201V116.12C471.3 117.469 468.919 118.137 465.679 118.155C462.42 118.179 460.813 116.763 460.84 113.518C460.801 110.017 462.914 109.153 466.116 109.2L474.201 109.201ZM476.849 127.791H488.576V95.3538C488.79 79.4897 482.344 76.1437 466.871 76.1988C460.811 76.2241 454.445 76.948 448.606 78.5728L450.46 88.9155C455.011 88.0652 459.625 87.5355 464.261 87.5321C470.553 87.4746 474.557 88.2295 474.199 95.2641V99.7788H462.2C452.082 99.6949 447.067 103.489 447.113 113.725C447.044 122.312 450.81 128.647 460.264 128.851C465.66 128.924 471.038 126.69 475.678 124.232L476.849 127.791ZM441.327 66.1847L443.092 55.3548C439.363 54.5941 435.682 54.0138 431.864 54C420.689 54.046 414.488 58.5894 414.604 69.964V78.3234H406.587V89.6555H414.604V127.79H428.98V89.6567H440.407L441.387 78.3246H428.98V71.6841C428.754 67.3269 430.312 65.5791 434.895 65.5447C437.037 65.555 439.221 65.8124 441.327 66.1847ZM368.854 115.375V92.6477C371.707 90.2255 375.618 88.3755 379.432 88.2744C383.726 88.3111 385.736 90.6035 385.686 94.7172V110.332C385.736 114.36 383.639 116.71 379.439 116.772C375.881 116.746 372.314 116.194 368.854 115.375ZM400.
1968062 110.339V94.7252C400.018 84.1377 395.852 76.2126 384.002 76.1977C378.238 76.3356 372.222 78.6348 367.435 81.704L365.691 77.2605H354.48V146L368.856 144.039V127.208C373.45 128.279 378.191 128.831 382.91 128.851C395.241 128.785 400.119 121.841 400.062 110.339ZM310.467 92.5282L321.215 127.791H337.156L346.05 77.2605H332.983L328.081 107.027L326.902 107.1L317.925 77.2605H303.231L294.151 107.102L292.969 107.028L288.068 77.2617H275L283.893 127.792H299.835L310.467 92.5282ZM676.489 145.974H689.972L695.667 128.206L712 77.2605H697.462L686.28 115.456L675.098 77.2605H660.556L676.435 127.791H681.779L676.489 145.974Z" fill="currentColor"/>
1969            <!-- Factory icon: keeps its original gradients in both light and dark mode -->
1970            <path d="M0 170.022C0 161.978 12.8917 154.648 34.0285 149.141V157.118C34.0285 167.415 42.0076 168.904 49.8416 171.375C90.9929 184.358 164.802 183.326 216.044 171.375C220.842 170.256 226.466 169.111 226.466 162.307V149.142C247.601 154.648 260.49 161.979 260.49 170.024C260.49 187.132 202.179 200.999 130.247 200.999C58.3131 200.997 0 187.13 0 170.022Z" fill="url(#wpf_lg_f0)"/>
1971            <path fill-rule="evenodd" clip-rule="evenodd" d="M139.5 80.5L138 80L99.8411 59.7194C96.9579 58.1965 87.2534 57.5184 87.2534 67.7932V81.3454L50.1356 61.7538C45.2229 59.381 34.0234 61.0757 34.0234 72.0311V149.142C57.8424 142.937 92.1292 139.043 130.242 139.043C130.67 139.043 131.095 139.048 131.522 139.048L138.888 81.9968L139.5 80.5Z" fill="#8A63CD"/>
1972            <path d="M218.488 122.568L187.636 105.805L187.546 106.065L187.636 106.909L191.359 142.662C204.583 144.336 216.452 146.533 226.468 149.143V135.167C226.468 126.196 219.313 123.005 218.488 122.568Z" fill="url(#wpf_lg_f1)"/>
1973            <path d="M187.637 106.908L188 106L176.495 3.65522C176.319 1.79771 174.524 0 172.848 0H151.766C150.191 0 148.364 1.75573 148.137 3.49491L138 80L137.5 82L187.662 107.146L187.637 106.908Z" fill="url(#wpf_lg_f2)"/>
1974            <path fill-rule="evenodd" clip-rule="evenodd" d="M191.357 142.649L194.779 175.5C202.171 174.314 209.303 172.933 216.043 171.36C220.841 170.242 226.465 169.099 226.465 162.293V149.13C216.45 146.52 204.581 144.321 191.357 142.649Z" fill="url(#wpf_lg_f3)"/>
1975            <path d="M131.5 139C131.072 138.998 130.428 139 130 139C91.8871 139 57.8424 142.943 34.0234 149.145V157.124C34.0234 167.421 42.0025 168.91 49.8366 171.381C69.72 177.653 97.0941 180.921 126 181" fill="url(#wpf_lg_f4)"/>
1976            <path fill-rule="evenodd" clip-rule="evenodd" d="M188 106L140 81L138 80L125.5 181C148.51 181.109 173.103 179.064 194.791 175.648L188 106Z" fill="url(#wpf_lg_f5)"/>
1977            <defs>
1978              <linearGradient id="wpf_lg_f0" x1="-0.000254476" y1="175.069" x2="260.491" y2="175.069" gradientUnits="userSpaceOnUse"><stop stop-color="#48DBD7"/><stop offset="1" stop-color="#01F4A0"/></linearGradient>
1979              <linearGradient id="wpf_lg_f1" x1="135.313" y1="127.603" x2="227.846" y2="127.603" gradientUnits="userSpaceOnUse"><stop stop-color="#8C63CF"/><stop offset="1" stop-color="#3847D3"/></linearGradient>
1980              <linearGradient id="wpf_lg_f2" x1="133.268" y1="53.573" x2="216.772" y2="53.573" gradientUnits="userSpaceOnUse"><stop offset="0.0456" stop-color="#8C63CF"/><stop offset="1" stop-color="#3847D3"/></linearGradient>
1981              <linearGradient id="wpf_lg_f3" x1="191.358" y1="159.074" x2="226.466" y2="159.074" gradientUnits="userSpaceOnUse"><stop stop-color="#059AE5"/><stop offset="1" stop-color="#01ACE7"/></linearGradient>
1982              <linearGradient id="wpf_lg_f4" x1="34.0234" y1="159.89" x2="131.522" y2="159.89" gradientUnits="userSpaceOnUse"><stop stop-color="#1C37D1"/><stop offset="1" stop-color="#0E70DD"/></linearGradient>
1983              <linearGradient id="wpf_lg_f5" x1="101.259" y1="122.802" x2="179.283" y2="143.417" gradientUnits="userSpaceOnUse"><stop stop-color="#2B42C9"/><stop offset="0.1908" stop-color="#2947CA"/><stop offset="0.4141" stop-color="#2255CE"/><stop offset="0.6537" stop-color="#176DD5"/><stop offset="0.9031" stop-color="#078DDE"/><stop offset="1" stop-color="#009CE2"/></linearGradient>
1984            </defs>
1985          </svg>
1986        </a>
1987        <p>50+ WooCommerce &amp; WordPress plugins for stores that take their margin seriously. Made by humans who answer their email.</p>
1988
1989        <div class="socials">
1990          <!-- Facebook (replaces Twitter) -->
1991          <a href="https://web.facebook.com/wordpresscodefactory" target="_blank" rel="noopener" aria-label="Facebook">
1992            <svg viewBox="0 0 24 24" fill="currentColor"><path d="M22 12a10 10 0 1 0-11.56 9.88v-6.99H7.9V12h2.54V9.8c0-2.51 1.49-3.89 3.78-3.89 1.09 0 2.24.19 2.24.19v2.46h-1.26c-1.24 0-1.63.77-1.63 1.56V12h2.78l-.44 2.89h-2.33v6.99A10 10 0 0 0 22 12z"/></svg>
1993          </a>
1994          <!-- GitHub -->
1995          <a href="https://github.com/wpcodefactory" target="_blank" rel="noopener" aria-label="GitHub">
1996            <svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.48 2 2 6.48 2 12c0 4.42 2.87 8.17 6.84 9.49.5.09.66-.22.66-.48v-1.69c-2.78.6-3.37-1.34-3.37-1.34-.45-1.16-1.11-1.47-1.11-1.47-.91-.62.07-.61.07-.61 1 .07 1.53 1.03 1.53 1.03.89 1.52 2.34 1.08 2.91.83.09-.65.35-1.08.63-1.33-2.22-.25-4.55-1.11-4.55-4.94 0-1.09.39-1.99 1.03-2.69-.1-.25-.45-1.27.1-2.65 0 0 .84-.27 2.75 1.02.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02.55 1.38.2 2.4.1 2.65.64.7 1.03 
19961.6 1.03 2.69 0 3.84-2.34 4.69-4.57 4.94.36.31.69.92.69 1.85V21c0 .27.16.59.67.49C19.13 20.16 22 16.42 22 12c0-5.52-4.48-10-10-10z"/></svg>
1997          </a>
1998          <!-- LinkedIn -->
1999          <a href="https://www.linkedin.com/company/wpfactory" target="_blank" rel="noopener" aria-label="LinkedIn">
2000            <svg viewBox="0 0 24 24" fill="currentColor"><path d="M19 3a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h14m-.5 15.5v-5.3a3.26 3.26 0 00-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 011.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 001.68-1.68 1.68 1.68 0 00-1.68-1.68A1.68 1.68 0 005.2 6.88a1.68 1.68 0 001.68 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"/></svg>
2001          </a>
2002          <!-- WordPress.org (official WordPress mark) -->
2003          <a href="https://profiles.wordpress.org/wpcodefactory/" target="_blank" rel="noopener" aria-label="WordPress.org">
2004            <svg viewBox="0 0 24 24" fill="currentColor"><path d="M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10 10-4.49 10-10S17.51 2 12 2zm0 1.2c4.85 0 8.8 3.95 8.8 8.8 0 3.46-2.01 6.46-4.92 7.9l-3.04-8.32c.57-.03 1.08-.09 1.08-.09.51-.06.45-.81-.06-.78 0 0-1.53.12-2.52.12-.93 0-2.49-.12-2.49-.12-.51-.03-.57.75-.06.78 0 0 .48.06.99.09l1.43 3.93-2.01 6.04L5.85 12c.57-.03 1.08-.09 1.08-.09.51-.06.45-.81-.06-.78 0 0-1.53.12-2.52.12-.18 0-.39 0-.6-.01.81-3.78 4.17-6.61 8.25-7.04zM3.2 12c0-1.27.27-2.48.75-3.57l4.14 11.34C5.13 18.4 3.2 15.42 3.2 12zm8.8 8.8c-.81 0-1.59-.12-2.34-.33L12 14.13l2.4 6.55c-.75.21-1.56.12-2.4.12zm8.05-13.45c.39.96.6 2.01.6 3.15 0 2.4-.9 4.86-2.91 7.05l-2.94-7.95c-.06-.21-.24-.42-.24-.69 0-.3.24-.6.6-.6.66-.03 2.4 0 2.91.21z"/></svg>
2005          </a>
2006        </div>
2007      </div>
2008
2009      <!-- Plugins (4 top plugins + All Access) -->
2010      <div class="footer-col">
2011        <h6>Plugins</h6>
2012        <ul>
2013          <li><a href="https://wpfactory.com/item/cost-of-goods-for-woocommerce/">Cost of Goods</a></li>
2014          <li><a href="https://wpfactory.com/item/product-price-by-quantity-for-woocommerce/">Dynamic Pricing &amp; Discounts</a></li>
2015          <li><a href="https://wpfactory.com/item/order-minimum-maximum-amount-for-woocommerce/">Order Min/Max Amount</a></li>
2016          <li><a href="https://wpfactory.com/item/email-verification-for-woocommerce/">Customer Email Verification</a></li>
2017          <li><a href="https://wpfactory.com/items/">All Plugins</a></li>
2018          <li><a href="https://wpfactory.com/all-access-lifetime-deal/" class="footer-cta-link">★ All Access - Lifetime</a></li>
2019        </ul>
2020      </div>
2021
2022      <!-- Resources (changelogs removed) -->
2023      <div class="footer-col">
2024        <h6>Resources</h6>
2025        <ul>
2026          <li><a href="https://wpfactory.com/blog/">Blog</a></li>
2027          <li><a href="https://wpfactory.com/docs/">Documentation</a></li>
2028          <li><a href="https://wpfactory.com/blog/category/case-study/">Case Studies</a></li>
2029          <li><a href="https://wpfactory.com/tools/">Free Tools</a></li>
2030          <li><a href="https://wpfactory.com/blog/category/wpfactory-ebooks/">Free eBooks</a></li>
2031          <li><a href="https://wpfactory.com/support/">Support Forums</a></li>
2032        </ul>
2033      </div>
2034
2035      <!-- Company -->
2036      <div class="footer-col">
2037        <h6>Company</h6>
2038        <ul>
2039          <li><a href="https://wpfactory.com/about-us/">About</a></li>
2040          <li><a href="https://wpfactory.com/contact-us/">Support &amp; Contact</a></li>
2041          <li><a href="https://wpfactory.com/affiliates/">Affiliate Program</a></li>
2042          <li><a href="https://wpfactory.com/nonprofit-commitment/">Nonprofits</a></li>
2043          <li><a href="https://wpfactory.com/my-account/">My Account</a></li>
2044          <li><a href="https://wpfactory.com/refund-policy/">Refund Policy</a></li>
2045        </ul>
2046      </div>
2047    </div>
2048    
2049    <div class="footer-bottom">
2050      <span>© 2026 WPFactory · made for WooCommerce stores · since 2013</span>
2051      <div class="legal-links">
2052        <a href="https://wpfactory.com/terms-conditions/">Terms</a>
2053        <a href="https://wpfactory.com/cookie-policy/">Cookie Policy</a>
2054        <a href="https://wpfactory.com/refund-policy/">Refunds</a>
2055      </div>
2056    </div>
2057  </div>
2058</footer>
2059
2060
2061</div><!-- #page -->
2062
2063<script type="speculationrules">
2064{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/wpfactory-theme/*","/wp-content/themes/storefront/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
2065</script>
vendor: 1 bytes, line 2065
2065
2066<script>
2067			jQuery( document ).ready( function () {
2068				jQuery( 'li.discussions_tab' ).click( function () {
2069					window.location = jQuery( 'li.discussions_tab a' ).attr( 'href' );
2070					return false;
2071				} );
2072			} );
2073		</script>
2073<script>
2074	jQuery( function() {
2075		function wpf_wc_go_to_tab() {
2076			var hash = window.location.hash;
2077			wpf_wc_custom_tabs = [ 'docs', 'tools', 'shortcodes', 'faq', 'free_vs_pro', 'free_version', 'developers', 'changelog' ];
2078			for ( var i = 0, l = wpf_wc_custom_tabs.length; i < l; i++ ) {
2079				if ( '#tab-' + wpf_wc_custom_tabs[ i ] === hash ) {
2080					jQuery( '#tab-title-' + wpf_wc_custom_tabs[ i ] + ' a' ).trigger( 'click' );
2081					break;
2082				}
2083			}
2084		}
2085		jQuery( document ).ready( function() {
2086			window.onhashchange = function() {
2087				wpf_wc_go_to_tab();
2088			}
2089			wpf_wc_go_to_tab();
2090		} );
2091	} );
2092	</script>
2092	
2092<script>
2093		(function () {
2094			var c = document.body.className;
2095			c = c.replace(/woocommerce-no-js/, 'woocommerce-js');
2096			document.body.className = c;
2097		})();
2098	</script>
2098
2099				<section class="screenshot_popup" id="screenshot_popup">
2100				<div class="screenshot_popup__content">
2101					<div class="screenshot_popup_close">
2102						<span></span>
2103						<span></span>
2104					</div>
2105					<img src="" id="large_screenshot">
2106					<h4 id="screenshot_title">
2107
2108					</h4>
2109					<p id="screenshot_description">
2110
2111					</p>
2112					<input type="hidden" name="cell_index_popup" id="cell_index_popup" value="0">
2113				</div>
2114
2115				<button id="previous-popup" class="flickity-button-popup flickity-prev-next-button-popup previous-popup"
2116						type="button" aria-label="Previous">
2117					<svg id="previous-popup-svg" class="flickity-button-icon-popup" viewBox="0 0 100 100">
2118						<path d="M 10,50 L 60,100 L 70,90 L 30,50  L 70,10 L 60,0 Z" class="arrow"></path>
2119					</svg>
2120				</button>
2121
2122				<button id="next-popup" class="flickity-button-popup flickity-prev-next-button-popup next-popup"
2123						type="button" aria-label="Next">
2124					<svg id="next-popup-svg" class="flickity-button-icon-popup" viewBox="0 0 100 100">
2125						<path d="M 10,50 L 60,100 L 70,90 L 30,50  L 70,10 L 60,0 Z" class="arrow"
2126							  transform="translate(100, 100) rotate(180) "></path>
2127					</svg>
2128				</button>
2129
2130			</section>
2131			
2131<script id="wcPPCPSettings">
2132				window['wcPPCPSettings'] = {"cart":{"total":"0.00","totalCents":0,"needsShipping":false,"isEmpty":true,"currency":"USD","countryCode":"US","availablePaymentMethods":["cpsw_stripe","ppcp"],"lineItems":[],"shippingOptions":[],"selectedShippingMethod":""},"requiredFields":["billing_first_name","billing_last_name","billing_email","shipping_first_name","shipping_last_name","shipping_country","shipping_phone","account_password"],"version":"2.0.27","generalData":{"clientId":"BAAo3Qw9TgW-zu60L_ExhdcK3iKhny0dUjzmDcvtcMpYL9ig__YAK9fQIvHgiPlAp8iFNRM0fNN1vfaukc","environment":"production","partner_id":"PaymentPlugins_PCP","page":null,"version":"2.0.27","is_admin":false,"restRoutes":{"connect/account":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/account/connect"},"domain-association-file":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/domain-association-file"},"cart/item":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/item"},"cart/shipping":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/shipping"},"cart/billing":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/billing"},"cart/checkout":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/checkout"},"cart/refresh":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/refresh"},"cart/order-update-callback":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/order-update-callback"},"cart/order":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/cart/order"},"order/pay":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/order/pay"},"billing-agreement/token":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/billing-agreement/token/?(?P\u003Cid\u003E[\\w-]+)"},"webhook":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/webhook/(?P\u003Cenvironment\u003E[\\w]+)"},"admin/order":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/order/(?P\u003Corder_id\u003E[\\w]+)"},"admin/tracking":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/order/(?P\u003Corder_id\u003E[\\w]+)/tracking"},"admin/carriers":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/order/(?P\u003Corder_id\u003E[\\w]+)/carriers"},"admin/webhook":{"namespace":"wc-ppcp/v1/admin","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/admin/webhook"},"setup-tokens":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/vault/setup-tokens"},"payment-tokens":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/vault/payment-tokens"},"checkout/validation":{"namespace":"wc-ppcp/v1","url":"/?wc-ajax=wc_ppcp_frontend_request&path=/wc-ppcp/v1/checkout-validation"}},"ajaxRestPath":"/?wc-ajax=wc_ppcp_frontend_request&path=/%s"},"errorMessages":{"terms":"Please check the terms and conditions before proceeding.","invalid_client_id":"Invalid PayPal client ID. Please check your API Settings.","invalid_currency":"PayPal does not support currency %. Please use a supported currency.","order_button_click":"Please click the %s button before placing your order.","gpay_order_button_click":"Please click the Google Pay button before placing your order","order_missing_address":"Please fill out all billing and shipping fields before clicking PayPal.","order_missing_billing_address":"Please fill out all billing fields before clicking PayPal.","cancel":"Cancel","required_fields":"Please fill out all required fields.","Y_N_NO":"3DS authentication failed.","Y_R_NO":"3DS authentication was rejected.","Y_U_UNKNOWN":"Unable to complete 3DS authentication. Please try again.","Y_U_NO":"Unable to complete 3DS authentication. Please try again.","Y_C_UNKNOWN":"3DS authentication challenge required but could not be completed. Please try again.","Y__NO":"3DS authentication could not be processed. Please try again.","U__UNKNOWN":"3DS system is currently unavailable. Please try again later.","___UNKNOWN":"3DS authentication status unknown. Please try again.","total":"Total","ERROR_VALIDATING_MERCHANT":"Domain registration is not complete. Visit https://paymentplugins.com/documentation/paypal/applepay/setup/ for instructions on completing domain registration."},"i18n":{"locale":"{\"AE\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"required\":false}},\"AF\":{\"state\":{\"required\":false,\"hidden\":true}},\"AL\":{\"state\":{\"label\":\"County\"}},\"AO\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"label\":\"Province\"}},\"AT\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"AU\":{\"city\":{\"label\":\"Suburb\"},\"postcode\":{\"label\":\"Postcode\"},\"state\":{\"label\":\"State\"}},\"AX\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"BA\":{\"postcode\":{\"priority\":65},\"state\":{\"label\":\"Canton\",\"required\":false,\"hidden\":true}},\"BD\":{\"postcode\":{\"required\":false},\"state\":{\"label\":\"District\"}},\"BE\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"BG\":{\"state\":{\"required\":false}},\"BH\":{\"postcode\":{\"required\":false},\"state\":{\"required\":false,\"hidden\":true}},\"BI\":{\"state\":{\"required\":false,\"hidden\":true}},\"BO\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"label\":\"Department\"}},\"BS\":{\"postcode\":{\"required\":false,\"hidden\":true}},\"BW\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"required\":false,\"hidden\":true,\"label\":\"District\"}},\"BZ\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"required\":false}},\"CA\":{\"postcode\":{\"label\":\"Postal code\"},\"state\":{\"label\":\"Province\"}},\"CH\":{\"postcode\":{\"priority\":65},\"state\":{\"label\":\"Canton\",\"required\":false}},\"CL\":{\"city\":{\"required\":true},\"postcode\":{\"required\":false,\"hidden\":false},\"state\":{\"label\":\"Region\"}},\"CN\":{\"state\":{\"label\":\"Province\"}},\"CO\":{\"postcode\":{\"required\":false},\"state\":{\"label\":\"Department\"}},\"CR\":{\"state\":{\"label\":\"Province\"}},\"CW\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"required\":false}},\"CY\":{\"state\":{\"required\":false,\"hidden\":true}},\"CZ\":{\"state\":{\"required\":false,\"hidden\":true}},\"DE\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false}},\"DK\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"DO\":{\"state\":{\"label\":\"Province\"}},\"EC\":{\"state\":{\"label\":\"Province\"}},\"EE\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"ET\":{\"state\":{\"required\":false,\"hidden\":true}},\"FI\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"FR\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"GG\":{\"state\":{\"required\":false,\"label\":\"Parish\"}},\"GH\":{\"postcode\":{\"required\":false},\"state\":{\"label\":\"Region\"}},\"GP\":{\"state\":{\"required\":false,\"hidden\":true}},\"GF\":{\"state\":{\"required\":false,\"hidden\":true}},\"GR\":{\"state\":{\"required\":false}},\"GT\":{\"postcode\":{\"required\":false},\"state\":{\"label\":\"Department\"}},\"HK\":{\"postcode\":{\"required\":false},\"city\":{\"label\":\"Town \\/ District\"},\"state\":{\"label\":\"Region\"}},\"HN\":{\"state\":{\"label\":\"Department\"}},\"HU\":{\"last_name\":{\"class\":[\"form-row-first\"],\"priority\":10},\"first_name\":{\"class\":[\"form-row-last\"],\"priority\":20},\"postcode\":{\"class\":[\"form-row-first\",\"address-field\"],\"priority\":65},\"city\":{\"class\":[\"form-row-last\",\"address-field\"]},\"address_1\":{\"priority\":71},\"address_2\":{\"priority\":72},\"state\":{\"label\":\"County\",\"required\":false}},\"ID\":{\"state\":{\"label\":\"Province\"}}
2132,\"IE\":{\"postcode\":{\"required\":true,\"label\":\"Eircode\"},\"state\":{\"label\":\"County\"}},\"IS\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"IL\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"IM\":{\"state\":{\"required\":false,\"hidden\":true}},\"IN\":{\"postcode\":{\"label\":\"PIN Code\"},\"state\":{\"label\":\"State\"}},\"IR\":{\"state\":{\"priority\":50},\"city\":{\"priority\":60},\"address_1\":{\"priority\":70},\"address_2\":{\"priority\":80}},\"IT\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":true,\"label\":\"Province\"}},\"JM\":{\"city\":{\"label\":\"Town \\/ City \\/ Post Office\"},\"postcode\":{\"required\":false,\"label\":\"Postal Code\"},\"state\":{\"required\":true,\"label\":\"Parish\"}},\"JP\":{\"last_name\":{\"class\":[\"form-row-first\"],\"priority\":10},\"first_name\":{\"class\":[\"form-row-last\"],\"priority\":20},\"postcode\":{\"class\":[\"form-row-first\",\"address-field\"],\"priority\":65},\"state\":{\"label\":\"Prefecture\",\"class\":[\"form-row-last\",\"address-field\"],\"priority\":66},\"city\":{\"priority\":67},\"address_1\":{\"priority\":68},\"address_2\":{\"priority\":69}},\"KN\":{\"postcode\":{\"required\":false,\"label\":\"Postal code\"},\"state\":{\"required\":true,\"label\":\"Parish\"}},\"KR\":{\"state\":{\"required\":false,\"hidden\":true}},\"KW\":{\"state\":{\"required\":false,\"hidden\":true}},\"LV\":{\"state\":{\"label\":\"Municipality\",\"required\":false}},\"LB\":{\"state\":{\"required\":false,\"hidden\":true}},\"MF\":{\"state\":{\"required\":false,\"hidden\":true}},\"MQ\":{\"state\":{\"required\":false,\"hidden\":true}},\"MT\":{\"state\":{\"required\":false,\"hidden\":true}},\"MZ\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"label\":\"Province\"}},\"NI\":{\"state\":{\"label\":\"Department\"}},\"NL\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"NG\":{\"postcode\":{\"label\":\"Postcode\",\"required\":false,\"hidden\":true},\"state\":{\"label\":\"State\"}},\"NZ\":{\"postcode\":{\"label\":\"Postcode\"},\"state\":{\"required\":false,\"label\":\"Region\"}},\"NO\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"NP\":{\"state\":{\"label\":\"State \\/ Zone\"},\"postcode\":{\"required\":false}},\"PA\":{\"state\":{\"label\":\"Province\"}},\"PL\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"PR\":{\"city\":{\"label\":\"Municipality\"},\"state\":{\"required\":false,\"hidden\":true}},\"PT\":{\"state\":{\"required\":false,\"hidden\":true}},\"PY\":{\"state\":{\"label\":\"Department\"}},\"RE\":{\"state\":{\"required\":false,\"hidden\":true}},\"RO\":{\"state\":{\"label\":\"County\",\"required\":true}},\"RS\":{\"city\":{\"required\":true},\"postcode\":{\"required\":true},\"state\":{\"label\":\"District\",\"required\":false}},\"RW\":{\"state\":{\"required\":false,\"hidden\":true}},\"SG\":{\"state\":{\"required\":false,\"hidden\":true},\"city\":{\"required\":false}},\"SK\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"SI\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"SR\":{\"postcode\":{\"required\":false,\"hidden\":true}},\"SV\":{\"state\":{\"label\":\"Department\"}},\"ES\":{\"postcode\":{\"priority\":65},\"state\":{\"label\":\"Province\"}},\"LI\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"LK\":{\"state\":{\"required\":false,\"hidden\":true}},\"LU\":{\"state\":{\"required\":false,\"hidden\":true}},\"MD\":{\"state\":{\"label\":\"Municipality \\/ District\"}},\"SE\":{\"postcode\":{\"priority\":65},\"state\":{\"required\":false,\"hidden\":true}},\"TR\":{\"postcode\":{\"priority\":65},\"state\":{\"label\":\"Province\"}},\"UG\":{\"postcode\":{\"required\":false,\"hidden\":true},\"city\":{\"label\":\"Town \\/ Village\",\"required\":true},\"state\":{\"label\":\"District\",\"required\":true}},\"US\":{\"postcode\":{\"label\":\"ZIP Code\"},\"state\":{\"label\":\"State\"}},\"UY\":{\"state\":{\"label\":\"Department\"}},\"GB\":{\"postcode\":{\"label\":\"Postcode\"},\"state\":{\"label\":\"County\",\"required\":false}},\"ST\":{\"postcode\":{\"required\":false,\"hidden\":true},\"state\":{\"label\":\"District\"}},\"VN\":{\"state\":{\"required\":false,\"hidden\":true},\"postcode\":{\"priority\":65,\"required\":false,\"hidden\":false},\"address_2\":{\"required\":false,\"hidden\":false}},\"WS\":{\"postcode\":{\"required\":false,\"hidden\":true}}
2132,\"YT\":{\"state\":{\"required\":false,\"hidden\":true}},\"ZA\":{\"state\":{\"label\":\"Province\"}},\"ZW\":{\"postcode\":{\"required\":false,\"hidden\":true}},\"default\":{\"first_name\":{\"label\":\"First name\",\"required\":true,\"class\":[\"form-row-first\"],\"autocomplete\":\"given-name\",\"priority\":10},\"last_name\":{\"label\":\"Last name\",\"required\":true,\"class\":[\"form-row-last\"],\"autocomplete\":\"family-name\",\"priority\":20},\"company\":{\"label\":\"Company name\",\"class\":[\"form-row-wide\"],\"autocomplete\":\"organization\",\"priority\":30,\"required\":false},\"country\":{\"type\":\"country\",\"label\":\"Country \\/ Region\",\"required\":true,\"class\":[\"form-row-wide\",\"address-field\",\"update_totals_on_change\"],\"autocomplete\":\"country\",\"priority\":40,\"hidden\":false},\"address_1\":{\"label\":\"Street address\",\"placeholder\":\"House number and street name\",\"required\":false,\"class\":[\"form-row-wide\",\"address-field\"],\"autocomplete\":\"address-line1\",\"priority\":50},\"address_2\":{\"label\":\"Apartment, suite, unit, etc.\",\"label_class\":[\"screen-reader-text\"],\"placeholder\":\"Apartment, suite, unit, etc. (optional)\",\"class\":[\"form-row-wide\",\"address-field\"],\"autocomplete\":\"address-line2\",\"priority\":60,\"required\":false},\"city\":{\"label\":\"Town \\/ City\",\"required\":false,\"class\":[\"form-row-wide\",\"address-field\"],\"autocomplete\":\"address-level2\",\"priority\":70},\"state\":{\"type\":\"state\",\"label\":\"State \\/ County\",\"required\":false,\"class\":[\"form-row-wide\",\"address-field\"],\"validate\":[\"state\"],\"autocomplete\":\"address-level1\",\"priority\":80},\"postcode\":{\"label\":\"Postcode \\/ ZIP\",\"required\":false,\"class\":[\"form-row-wide\",\"address-field\"],\"validate\":[\"postcode\"],\"autocomplete\":\"postal-code\",\"priority\":90},\"phone\":{\"label\":\"Phone\",\"required\":true,\"type\":\"tel\",\"class\":[\"form-row-wide\"],\"validate\":[\"phone\"],\"autocomplete\":\"tel\",\"priority\":100}}}","locale_fields":"{\"address_1\":\"#billing_address_1_field, #shipping_address_1_field\",\"address_2\":\"#billing_address_2_field, #shipping_address_2_field\",\"state\":\"#billing_state_field, #shipping_state_field, #calc_shipping_state_field\",\"postcode\":\"#billing_postcode_field, #shipping_postcode_field, #calc_shipping_postcode_field\",\"city\":\"#billing_city_field, #shipping_city_field, #calc_shipping_city_field\",\"country\":\"#billing_country_field, #shipping_country_field, #calc_shipping_country_field\",\"phone\":\"#billing_phone_field, #shipping_phone_field\"}"},"ppcp_data":{"title":"PayPal","sections":["checkout"],"needsSetupToken":false,"funding":["paypal"],"buttons_order":["paypal","paylater","venmo","card"],"buttonPlacement":"place_order","buttons":{"paypal":{"layout":"vertical","label":"paypal","shape":"rect","height":40,"color":"gold"},"paylater":{"layout":"vertical","label":"paypal","shape":"rect","height":40,"color":"gold"},"card":{"layout":"vertical","label":"paypal","shape":"rect","height":40,"color":"black","tagline":false},"venmo":{"layout":"vertical","shape":"rect","height":40}},"paypal_sections":["checkout","add_payment_method"],"paylater_sections":["cart","checkout","order_pay"],"credit_card_sections":["cart","checkout","order_pay"],"venmo_sections":["checkout","order_pay"],"placeOrderEnabled":false,"serverSideShippingCallback":false},"recaptcha":{"site_key":null,"i18n":{"error":"reCAPTCHA error: %s"},"paymentMethods":["ppcp"]},"queryParams":{"client-id":"BAAo3Qw9TgW-zu60L_ExhdcK3iKhny0dUjzmDcvtcMpYL9ig__YAK9fQIvHgiPlAp8iFNRM0fNN1vfaukc","intent":"capture","commit":"true","components":"buttons,messages,card-fields,googlepay,applepay","currency":"USD","enable-funding":"paylater","data-partner-attribution-id":"PaymentPlugins_PCP","locale":"en_US"},"ppcp_api":[],"ppcp_advanced":{"miniCartLocation":"below"},"ppcp_paylater_message":[]};
2133		</script>
2133<script id="imagesloaded-js" src="https://wpfactory.com/wp-includes/js/imagesloaded.min.js?ver=5.0.0"></script>
vendor: 1 bytes, line 2133
2133
2134<script id="masonry-js" src="https://wpfactory.com/wp-includes/js/masonry.min.js?ver=4.2.2"></script>
vendor: 1 bytes, line 2134
2134
2135<script id="betterdocs-categorygrid-js" src="https://wpfactory.com/wp-content/plugins/betterdocs/assets/build/blocks/categorygrid/frontend.js?ver=a4a7e7ed1fd9a2aaf85a"></script>
vendor: 1 bytes, line 2135
2135
2136<script data-wp-strategy="defer" defer id="gtm4wp-ecommerce-generic-js" src="https://wpfactory.com/wp-content/plugins/duracelltomi-google-tag-manager/build/gtm4wp-ecommerce-generic.js?ver=2.0.3"></script>
vendor: 1 bytes, line 2136
2136
2137<script id="gtm4wp-woocommerce-js-before">
2138window.gtm4wp_store_api_cart_url = "https:\/\/wpfactory.com\/wp-json\/wc\/store\/v1\/cart";
2139//# sourceURL=gtm4wp-woocommerce-js-before
2140</script>
vendor: 1 bytes, line 2140
2140
2141<script id="gtm4wp-woocommerce-js" src="https://wpfactory.com/wp-content/plugins/duracelltomi-google-tag-manager/build/gtm4wp-woocommerce.js?ver=2.0.3"></script>
vendor: 1 bytes, line 2141
2141
2142<script id="eztoc-scroll-scriptjs-js-extra">
2143var eztoc_smooth_local = {"scroll_offset":"30","add_request_uri":"","add_self_reference_link":""};
2144//# sourceURL=eztoc-scroll-scriptjs-js-extra
2145</script>
vendor: 1 bytes, line 2145
2145
2146<script id="eztoc-scroll-scriptjs-js" src="https://wpfactory.com/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js?ver=2.0.88"></script>
vendor: 1 bytes, line 2146
2146
2147<script id="eztoc-js-cookie-js" src="https://wpfactory.com/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js?ver=2.2.1"></script>
vendor: 1 bytes, line 2147
2147
2148<script id="eztoc-jquery-sticky-kit-js" src="https://wpfactory.com/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js?ver=1.9.2"></script>
vendor: 1 bytes, line 2148
2148
2149<script id="eztoc-js-js-extra">
2150var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"\u003Cspan class=\"\"\u003E\u003Cspan class=\"eztoc-hide\" style=\"display:none;\"\u003EToggle\u003C/span\u003E\u003Cspan class=\"ez-toc-icon-toggle-span\"\u003E\u003Csvg style=\"fill: #999;color:#999\" xmlns=\"http://www.w3.org/2000/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"\u003E\u003Cpath d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"\u003E\u003C/path\u003E\u003C/svg\u003E\u003Csvg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http://www.w3.org/2000/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"\u003E\u003Cpath d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"/\u003E\u003C/svg\u003E\u003C/span\u003E\u003C/span\u003E","chamomile_theme_is_on":""};
2151//# sourceURL=eztoc-js-js-extra
2152</script>
vendor: 1 bytes, line 2152
2152
2153<script id="eztoc-js-js" src="https://wpfactory.com/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js?ver=2.0.88-1789607412"></script>
vendor: 1 bytes, line 2153
2153
2154<script id="storefront-navigation-js-extra">
2155var storefrontScreenReaderText = {"expand":"Expand child menu","collapse":"Collapse child menu"};
2156//# sourceURL=storefront-navigation-js-extra
2157</script>
vendor: 1 bytes, line 2157
2157
2158<script id="storefront-navigation-js" src="https://wpfactory.com/wp-content/themes/storefront/assets/js/navigation.min.js?ver=4.6.2"></script>
vendor: 1 bytes, line 2158
2158
2159<script id="advanced-ads-find-adblocker-js" src="https://wpfactory.com/wp-content/plugins/advanced-ads/admin/assets/js/advertisement.js"></script>
vendor: 1 bytes, line 2159
2159
2160<script id="sourcebuster-js-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/sourcebuster/sourcebuster.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 2160
2160
2161<script id="wc-order-attribution-js-extra">
2162var wc_order_attribution = {"params":{"lifetime":1.0e-5,"session":30,"base64":false,"ajaxurl":"https://wpfactory.com/wp-admin/admin-ajax.php","prefix":"wc_order_attribution_","allowTracking":true},"fields":{"source_type":"current.typ","referrer":"current_add.rf","utm_campaign":"current.cmp","utm_source":"current.src","utm_medium":"current.mdm","utm_content":"current.cnt","utm_id":"current.id","utm_term":"current.trm","utm_source_platform":"current.plt","utm_creative_format":"current.fmt","utm_marketing_tactic":"current.tct","session_entry":"current_add.ep","session_start_time":"current_add.fd","session_pages":"session.pgs","session_count":"udata.vst","user_agent":"udata.uag"}};
2163//# sourceURL=wc-order-attribution-js-extra
2164</script>
vendor: 1 bytes, line 2164
2164
2165<script id="wc-order-attribution-js" src="https://wpfactory.com/wp-content/plugins/woocommerce/assets/js/frontend/order-attribution.min.js?ver=11.1.2"></script>
vendor: 1 bytes, line 2165
2165
2166<script id="advanced-ads-pro-main-js-extra">
2167var advanced_ads_cookies = {"cookie_path":"/","cookie_domain":""};
2168var advadsCfpInfo = {"cfpExpHours":"3","cfpClickLimit":"3","cfpBan":"7","cfpPath":"","cfpDomain":"","cfpEnabled":""};
2169//# sourceURL=advanced-ads-pro-main-js-extra
2170</script>
vendor: 1 bytes, line 2170
2170
2171<script id="advanced-ads-pro-main-js" src="https://wpfactory.com/wp-content/plugins/advanced-ads-pro/assets/dist/advanced-ads-pro.js?ver=7.1.2"></script>
vendor: 1 bytes, line 2171
2171
2172<script id="wpfactory-frontend-js-js-before">
2173const WPFTFEJS = {"themeURI":"https:\/\/wpfactory.com\/wp-content\/themes\/wpfactory-theme","modulesRequired":["smooth-scroll","slider","modal","css-class-manager","menus","search"],"handheld_toggler_selector":"#site-navigation-menu-toggle","handheld_menu_selector":".wpft-handheld-navigation","search_toggler_selector":".top-right-navigation .svg-icon-search","search_bar_selector":".wpft-search-bar"}
2174//# sourceURL=wpfactory-frontend-js-js-before
2175</script>
vendor: 1 bytes, line 2175
2175
2176<script id="wpfactory-frontend-js-js" src="https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/js/frontend.min.js?ver=2.0.0"></script>
vendor: 1 bytes, line 2176
2176
2177<script id="wpfactory-frontend-carousal-js-js" src="https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/vendor/flickity-carousal/flickity-carousal.min.js?ver=2.0.0"></script>
vendor: 1 bytes, line 2177
2177
2178<script id="wpfactory-frontend-carousal-js-js-after">
2179jQuery(function() { var $carousel = jQuery(".main-carousel").flickity({
2180						freeScroll: true,
2181						contain: true,
2182						prevNextButtons: true,
2183						pageDots: false,
2184						groupCells: 2
2185					});
2186					
2187					var largeImages = [];
2188					
2189					jQuery("img.click-to-enlarge").each(function(){
2190					  largeImages.push({
2191							image: jQuery(this).attr("data-large-url"), 
2192							title:  jQuery(this).attr("data-title"),
2193							desc:  jQuery(this).attr("data-desc")
2194					  });
2195				    });
2196					
2197					
2198					jQuery(".main-carousel").on( "staticClick.flickity", function( event, pointer, cellElement, cellIndex ) {
2199					  if ( !cellElement ) {
2200						return;
2201					  }
2202					  
2203						var fullUrl = jQuery( cellElement ).find("img.click-to-enlarge").data("large-url");
2204						var title = jQuery( cellElement ).find("img.click-to-enlarge").data("title");
2205						var desc = jQuery( cellElement ).find("img.click-to-enlarge").data("desc");
2206						jQuery("#large_screenshot").attr("src", fullUrl);
2207						jQuery("#screenshot_title").html(title);
2208						jQuery("#screenshot_description").html(desc);
2209						
2210						jQuery(".screenshot_popup").fadeIn(500);
2211						
2212						jQuery("#cell_index_popup").val(cellIndex);
2213					  
2214					});
2215					
2216					
2217					
2218					jQuery("#previous-popup").click(function() {
2219						
2220						var currentIndex = jQuery("#cell_index_popup").val();
2221						
2222						var prevIndex = parseInt(currentIndex) - 1;
2223						
2224						var indexArr = largeImages[prevIndex];
2225						
2226						var fullUrl = indexArr["image"];
2227						var title = indexArr["title"];
2228						var desc = indexArr["desc"];
2229						
2230						jQuery("#large_screenshot").attr("src", fullUrl);
2231						jQuery("#screenshot_title").html(title);
2232						jQuery("#screenshot_description").html(desc);
2233						
2234						jQuery(".screenshot_popup").fadeIn(500);
2235						
2236						jQuery("#cell_index_popup").val(prevIndex);
2237					});
2238					
2239					jQuery("#next-popup").click(function() {
2240						
2241						var currentIndex = jQuery("#cell_index_popup").val();
2242						
2243						var nextIndex = parseInt(currentIndex) + 1;
2244						
2245						var indexArr = largeImages[nextIndex];
2246						
2247						var fullUrl = indexArr["image"];
2248						var title = indexArr["title"];
2249						var desc = indexArr["desc"];
2250						
2251						jQuery("#large_screenshot").attr("src", fullUrl);
2252						jQuery("#screenshot_title").html(title);
2253						jQuery("#screenshot_description").html(desc);
2254						
2255						jQuery(".screenshot_popup").fadeIn(500);
2256						
2257						jQuery("#cell_index_popup").val(nextIndex);
2258					});
2259					
2260					jQuery(".screenshot_popup_close").click(function() {
2261					  jQuery(".screenshot_popup").fadeOut(500);
2262					});
2263			
2264					jQuery(document).on("click",".screenshot_popup", function (event) {
2265						if(event.target.id == "screenshot_popup" ){
2266							jQuery(".screenshot_popup").fadeOut(500);
2267						}
2268					});
2269					
2270					
2271					
2272					});
2273//# sourceURL=wpfactory-frontend-carousal-js-js-after
2274</script>
vendor: 1 bytes, line 2274
2274
2275<script id="wpfactory-buy-feedback-js" src="https://wpfactory.com/wp-content/themes/wpfactory-theme/assets/js/wpfactory-buy-feedback.js?ver=1.0.0"></script>
vendor: 1 bytes, line 2275
2275
2276<script id="storefront-header-cart-js" src="https://wpfactory.com/wp-content/themes/storefront/assets/js/woocommerce/header-cart.min.js?ver=4.6.2"></script>
vendor: 1 bytes, line 2276
2276
2277<script id="storefront-handheld-footer-bar-js" src="https://wpfactory.com/wp-content/themes/storefront/assets/js/footer.min.js?ver=4.6.2"></script>
vendor: 1 bytes, line 2277
2277
2278<script id="storefront-woocommerce-brands-js" src="https://wpfactory.com/wp-content/themes/storefront/assets/js/woocommerce/extensions/brands.min.js?ver=4.6.2"></script>
vendor: 1 bytes, line 2278
2278
2279<script>window.advads_admin_bar_items = [];</script>
2279<script>!function(){window.advanced_ads_ready_queue=window.advanced_ads_ready_queue||[],advanced_ads_ready_queue.push=window.advanced_ads_ready;for(var d=0,a=advanced_ads_ready_queue.length;d<a;d++)advanced_ads_ready(advanced_ads_ready_queue[d])}();</script>
2279<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"94183548dc554c24932c6228242c7311","r":1,"spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 2279
2279
2280<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a442dba9cce5dfb0',t:'MTc5MDkzNTIwNQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
2280</body>
2281</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.