PageSourceSearch

https://sonisto.com/pricing/

html sonisto.com collected 2026-10-06 22:57:28 UTC 114,814 bytes, 2,471 lines download raw bytes

1<!doctype html>
2<html lang="en-US">
3<head>
4	<meta charset="UTF-8">
5	<meta name="viewport" content="width=device-width, initial-scale=1">
6	<link rel="profile" href="https://gmpg.org/xfn/11">
7	<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
8
9	<!-- This site is optimized with the Yoast SEO plugin v26.1.1 - https://yoast.com/wordpress/plugins/seo/ -->
10	<title>Sonisto Pricing | Compare Audio Plugin Membership Plans | sonisto.com</title>
11	<meta name="description" content="Explore Sonisto Pricing – Audio Plugin Membership Plans that fit your workflow with over 65 high-quality plugins." />
12	<link rel="canonical" href="https://sonisto.com/pricing/" />
13	<meta property="og:locale" content="en_US" />
14	<meta property="og:type" content="article" />
15	<meta property="og:title" content="Sonisto Pricing | Compare Audio Plugin Membership Plans | sonisto.com" />
16	<meta property="og:description" content="Explore Sonisto Pricing – Audio Plugin Membership Plans that fit your workflow with over 65 high-quality plugins." />
17	<meta property="og:url" content="https://sonisto.com/pricing/" />
18	<meta property="og:site_name" content="sonisto.com" />
19	<meta property="article:publisher" content="https://www.facebook.com/Sonistoofficial/" />
20	<meta property="article:modified_time" content="2026-10-05T13:14:15+00:00" />
21	<meta property="og:image" content="https://sonisto.com/wp-content/uploads/2025/10/SiteImage_WP_MoreTimeForMakingMusic_V2.jpg" />
22	<meta property="og:image:width" content="1200" />
23	<meta property="og:image:height" content="630" />
24	<meta property="og:image:type" content="image/jpeg" />
25	<meta name="twitter:card" content="summary_large_image" />
26	<meta name="twitter:label1" content="Est. reading time" />
27	<meta name="twitter:data1" content="7 minutes" />
28	
28<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://sonisto.com/pricing/","url":"https://sonisto.com/pricing/","name":"Sonisto Pricing | Compare Audio Plugin Membership Plans | sonisto.com","isPartOf":{"@id":"https://sonisto.com/#website"},"primaryImageOfPage":{"@id":"https://sonisto.com/pricing/#primaryimage"},"image":{"@id":"https://sonisto.com/pricing/#primaryimage"},"thumbnailUrl":"https://sonisto.com/wp-content/uploads/2025/09/SONISTO_ICON_S_V1_01-1.svg","datePublished":"2025-10-02T12:57:56+00:00","dateModified":"2026-10-05T13:14:15+00:00","description":"Explore Sonisto Pricing – Audio Plugin Membership Plans that fit your workflow with over 65 high-quality plugins.","breadcrumb":{"@id":"https://sonisto.com/pricing/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://sonisto.com/pricing/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://sonisto.com/pricing/#primaryimage","url":"https://sonisto.com/wp-content/uploads/2025/09/SONISTO_ICON_S_V1_01-1.svg","contentUrl":"https://sonisto.com/wp-content/uploads/2025/09/SONISTO_ICON_S_V1_01-1.svg","width":178,"height":178,"caption":"The Sonisto app icon your gateway to streamlined audio plugin organization and one-click installation."},{"@type":"BreadcrumbList","@id":"https://sonisto.com/pricing/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://sonisto.com/"},{"@type":"ListItem","position":2,"name":"Pricing"}]},{"@type":"WebSite","@id":"https://sonisto.com/#website","url":"https://sonisto.com/","name":"sonisto.com","description":"More time for making music","publisher":{"@id":"https://sonisto.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://sonisto.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://sonisto.com/#organization","name":"SONISTO","url":"https://sonisto.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://sonisto.com/#/schema/logo/image/","url":"https://sonisto.com/wp-content/uploads/2025/09/SONISTO_LOGO_NO_TEXT_V1_02.svg","contentUrl":"https://sonisto.com/wp-content/uploads/2025/09/SONISTO_LOGO_NO_TEXT_V1_02.svg","width":122,"height":25,"caption":"SONISTO"},"image":{"@id":"https://sonisto.com/#/schema/logo/image/"},"sameAs":["https://www.facebook.com/Sonistoofficial/","https://www.instagram.com/sonisto_official/"]}]}</script>
28
29	<!-- / Yoast SEO plugin. -->
30
31
32<link rel="alternate" type="application/rss+xml" title="sonisto.com &raquo; Feed" href="https://sonisto.com/feed/" />
33<link rel="alternate" type="application/rss+xml" title="sonisto.com &raquo; Comments Feed" href="https://sonisto.com/comments/feed/" />
34<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://sonisto.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fsonisto.com%2Fpricing%2F" />
35<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://sonisto.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fsonisto.com%2Fpricing%2F&#038;format=xml" />
36<style id="wp-img-auto-sizes-contain-inline-css">
37img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
38/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
39</style>
40<style id="wp-emoji-styles-inline-css">
41
42	img.wp-smiley, img.emoji {
43		display: inline !important;
44		border: none !important;
45		box-shadow: none !important;
46		height: 1em !important;
47		width: 1em !important;
48		margin: 0 0.07em !important;
49		vertical-align: -0.1em !important;
50		background: none !important;
51		padding: 0 !important;
52	}
53/*# sourceURL=wp-emoji-styles-inline-css */
54</style>
55
56<style id="global-styles-inline-css">
57: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%);
57--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: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--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%;}:root { --wp--style--global--content-size: 800px;--wp--style--global--wide-size: 1200px; }:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }: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;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}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;}
57.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;}
58/*# sourceURL=global-styles-inline-css */
59</style>
60
61<style id="hide_field_class_style-inline-css">
62.cfef-hidden , .cfef-hidden-step-field {
63					display: none !important;
64			 	}
65.cfef-hidden {
66					display: none !important;
67			 	}
68/*# sourceURL=hide_field_class_style-inline-css */
69</style>
70<link rel='stylesheet' id='qi-addons-for-elementor-grid-style-css' href='https://sonisto.com/wp-content/plugins/qi-addons-for-elementor/assets/css/grid.min.css?ver=1.9.5' media='all' />
71<link rel='stylesheet' id='qi-addons-for-elementor-helper-parts-style-css' href='https://sonisto.com/wp-content/plugins/qi-addons-for-elementor/assets/css/helper-parts.min.css?ver=1.9.5' media='all' />
72<link rel='stylesheet' id='qi-addons-for-elementor-style-css' href='https://sonisto.com/wp-content/plugins/qi-addons-for-elementor/assets/css/main.min.css?ver=1.9.5' media='all' />
73<link rel='stylesheet' id='hello-elementor-css' href='https://sonisto.com/wp-content/themes/hello-elementor/assets/css/reset.css?ver=3.4.4' media='all' />
74<link rel='stylesheet' id='hello-elementor-theme-style-css' href='https://sonisto.com/wp-content/themes/hello-elementor/assets/css/theme.css?ver=3.4.4' media='all' />
75<link rel='stylesheet' id='hello-elementor-header-footer-css' href='https://sonisto.com/wp-content/themes/hello-elementor/assets/css/header-footer.css?ver=3.4.4' media='all' />
76<link rel='stylesheet' id='elementor-frontend-css' href='https://sonisto.com/wp-content/uploads/elementor/css/custom-frontend.min.css?ver=1791308394' media='all' />
77<link rel='stylesheet' id='elementor-post-6-css' href='https://sonisto.com/wp-content/uploads/elementor/css/post-6.css?ver=1791308394' media='all' />
78<link rel='stylesheet' id='widget-nav-menu-css' href='https://sonisto.com/wp-content/uploads/elementor/css/custom-pro-widget-nav-menu.min.css?ver=1791308394' media='all' />
79<link rel='stylesheet' id='widget-off-canvas-css' href='https://sonisto.com/wp-content/plugins/elementor-pro/assets/css/widget-off-canvas.min.css?ver=3.31.3' media='all' />
80<link rel='stylesheet' id='widget-image-css' href='https://sonisto.com/wp-content/plugins/elementor/assets/css/widget-image.min.css?ver=3.31.5' media='all' />
81<link rel='stylesheet' id='widget-heading-css' href='https://sonisto.com/wp-content/plugins/elementor/assets/css/widget-heading.min.css?ver=3.31.5' media='all' />
82<link rel='stylesheet' id='widget-social-icons-css' href='https://sonisto.com/wp-content/plugins/elementor/assets/css/widget-social-icons.min.css?ver=3.31.5' media='all' />
83<link rel='stylesheet' id='e-apple-webkit-css' href='https://sonisto.com/wp-content/uploads/elementor/css/custom-apple-webkit.min.css?ver=1791308394' media='all' />
84<link rel='stylesheet' id='widget-form-css' href='https://sonisto.com/wp-content/plugins/elementor-pro/assets/css/widget-form.min.css?ver=3.31.3' media='all' />
85<link rel='stylesheet' id='e-popup-css' href='https://sonisto.com/w
85p-content/plugins/elementor-pro/assets/css/conditionals/popup.min.css?ver=3.31.3' media='all' />
86<link rel='stylesheet' id='elementor-post-1423-css' href='https://sonisto.com/wp-content/uploads/elementor/css/post-1423.css?ver=1791308604' media='all' />
87<link rel='stylesheet' id='elementor-post-3020-css' href='https://sonisto.com/wp-content/uploads/elementor/css/post-3020.css?ver=1791308395' media='all' />
88<link rel='stylesheet' id='elementor-post-280-css' href='https://sonisto.com/wp-content/uploads/elementor/css/post-280.css?ver=1791308395' media='all' />
89<link rel='stylesheet' id='elementor-post-890-css' href='https://sonisto.com/wp-content/uploads/elementor/css/post-890.css?ver=1791308395' media='all' />
90<link rel='stylesheet' id='swiper-css' href='https://sonisto.com/wp-content/plugins/qi-addons-for-elementor/assets/plugins/swiper/8.4.5/swiper.min.css?ver=8.4.5' media='all' />
91<link rel='stylesheet' id='elementor-gf-local-robotoslab-css' href='https://sonisto.com/wp-content/uploads/elementor/google-fonts/css/robotoslab.css?ver=1757423908' media='all' />
92<link rel='stylesheet' id='elementor-gf-local-roboto-css' href='https://sonisto.com/wp-content/uploads/elementor/google-fonts/css/roboto.css?ver=1757423906' media='all' />
93<link rel='stylesheet' id='elementor-gf-local-jetbrainsmono-css' href='https://sonisto.com/wp-content/uploads/elementor/google-fonts/css/jetbrainsmono.css?ver=1759179143' media='all' />
94<script id="breeze-prefetch-js-extra">
95var breeze_prefetch = {"local_url":"https://sonisto.com","ignore_remote_prefetch":"1","ignore_list":["wp-admin","wp-login.php"]};
96//# sourceURL=breeze-prefetch-js-extra
97</script>
vendor: 1 bytes, line 97
97
98<script id="breeze-prefetch-js" src="https://sonisto.com/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js?ver=2.2.18"></script>
vendor: 1 bytes, line 98
98
99<script id="jquery-core-js" src="https://sonisto.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 99
99
100<script id="jquery-migrate-js" src="https://sonisto.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 100
100
101<script id="page-transitions-js" src="https://sonisto.com/wp-content/plugins/elementor-pro/assets/js/page-transitions.min.js?ver=3.31.3"></script>
101
102<link rel="https://api.w.org/" href="https://sonisto.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://sonisto.com/wp-json/wp/v2/pages/1423" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://sonisto.com/xmlrpc.php?rsd" />
103<meta name="generator" content="WordPress 7.1.3" />
104<link rel='shortlink' href='https://sonisto.com/?p=1423' />
105<meta name="generator" content="Elementor 3.31.5; features: e_font_icon_svg, additional_custom_breakpoints, e_element_cache; settings: css_print_method-external, google_font-enabled, font_display-swap">
106<!-- Google Tag Manager -->
107<script>
vendor: 331 bytes, lines 107-111
107(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
108new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
109j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
110'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
111})(window,document,'script','dataLayer','
111GTM-M4TL7ZSC
vendor: 3 bytes, line 111
111');
111</script>
111
112<!-- End Google Tag Manager -->
113<style>
114/* FULLSCREEN TRANSITION OVERLAY (dots + icon only) */
115#sonistoTransitionDots{
116  --c: #F2D482;
117  --bg: #090D0D;
118
119  position: fixed;
120  inset: 0;
121  z-index: 2147483647;
122
123  display: grid;
124  place-items: center;
125
126  background: var(--bg);
127
128  opacity: 0;
129  visibility: hidden;
130  pointer-events: none;
131
132  transition: opacity .22s ease, visibility .22s ease;
133}
134
135#sonistoTransitionDots.is-on{
136  opacity: 1;
137  visibility: visible;
138  pointer-events: auto;
139}
140
141/* RING */
142.sonisto-tdots-ring{
143  position: relative;
144  width: 120px;
145  height: 120px;
146  color: var(--c);
147}
148
149/* DOTS */
150.sonisto-tdots-dot{
151  --size: 9px;
152  position: absolute;
153  top: 50%;
154  left: 50%;
155  width: var(--size);
156  height: var(--size);
157  margin-top: calc(var(--size) / -2);
158  margin-left: calc(var(--size) / -2);
159  border-radius: 50%;
160  background: currentColor;
161
162  transform: rotate(calc(var(--i) * 30deg)) translate(40px);
163  opacity: 0.18;
164  box-shadow: 0 0 3px rgba(108,197,195,0.14);
165}
166
167/* ACTIVE DOT (JS-driven) */
168.sonisto-tdots-dot.is-active{
169  opacity: 1;
170  box-shadow: 0 0 8px rgba(108,197,195,0.28);
171}
172
173/* ICON */
174.sonisto-tdots-icon{
175  position: absolute;
176  top: 50%;
177  left: 50%;
178  width: 34px;
179  height: 34px;
180  transform: translate(-50%, -50%);
181  pointer-events: none;
182}
183
184/* Optional: reduced-motion friendliness */
185@media (prefers-reduced-motion: reduce){
186  #sonistoTransitionDots{ transition: none; }
187  .sonisto-tdots-dot{ box-shadow: none; }
188}
189</style>
190			<style>
191				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
192				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * {
193					background-image: none !important;
194				}
195				@media screen and (max-height: 1024px) {
196					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),
197					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * {
198						background-image: none !important;
199					}
200				}
201				@media screen and (max-height: 640px) {
202					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),
203					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * {
204						background-image: none !important;
205					}
206				}
207			</style>
208			<link rel="icon" href="https://sonisto.com/wp-content/uploads/2025/09/SONISTO_ICON_S_V1_01-1.svg" sizes="32x32" />
209<link rel="icon" href="https://sonisto.com/wp-content/uploads/2025/09/SONISTO_ICON_S_V1_01-1.svg" sizes="192x192" />
210<link rel="apple-touch-icon" href="https://sonisto.com/wp-content/uploads/2025/09/SONISTO_ICON_S_V1_01-1.svg" />
211<meta name="msapplication-TileImage" content="https://sonisto.com/wp-content/uploads/2025/09/SONISTO_ICON_S_V1_01-1.svg" />
212<link rel='stylesheet' id='eef-frontend-style-css' href='https://sonisto.com/wp-content/plugins/extensions-for-elementor-form/assets/css/style.min.css?ver=2.5.4' media='all' />
213
214</head>
215<body class="wp-singular page-template-default page page-id-1423 wp-embed-responsive wp-theme-hello-elementor qodef-qi--no-touch qi-addons-for-elementor-1.9.5 hello-elementor-default elementor-default elementor-template-full-width elementor-kit-6 elementor-page elementor-page-1423">
216
217		<e-page-transition class="e-page-transition--entering" exclude="^https\:\/\/sonisto\.com\/wp\-admin\/">
218					</e-page-transition>
219		<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 219-220
219
220<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
220GTM-M4TL7ZSC
vendor: 85 bytes, lines 220-221
220"
221height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
222<!-- End Google Tag Manager (noscript) -->
223<div id="sonistoTransitionDots" class="sonisto-tdots" aria-label="Loading" role="status">
224  <div class="sonisto-tdots-ring" aria-hidden="true">
225    <span class="sonisto-tdots-dot" style="--i:0"></span>
226    <span class="sonisto-tdots-dot" style="--i:1"></span>
227    <span class="sonisto-tdots-dot" style="--i:2"></span>
228    <span class="sonisto-tdots-dot" style="--i:3"></span>
229    <span class="sonisto-tdots-dot" style="--i:4"></span>
230    <span class="sonisto-tdots-dot" style="--i:5"></span>
231    <span class="sonisto-tdots-dot" style="--i:6"></span>
232    <span class="sonisto-tdots-dot" style="--i:7"></span>
233    <span class="sonisto-tdots-dot" style="--i:8"></span>
234    <span class="sonisto-tdots-dot" style="--i:9"></span>
235    <span class="sonisto-tdots-dot" style="--i:10"></span>
236    <span class="sonisto-tdots-dot" style="--i:11"></span>
237
238    <img
239      src="https://sonisto.com/wp-content/uploads/2025/09/SONISTO_ICON_S_V1_01-1.svg"
240      alt=""
241      class="sonisto-tdots-icon"
242    />
243  </div>
244</div>
245
246
247<a class="skip-link screen-reader-text" href="#content">Skip to content</a>
248
249		<header data-elementor-type="header" data-elementor-id="3020" class="elementor elementor-3020 elementor-location-header" data-elementor-post-type="elementor_library">
250			<div class="elementor-element elementor-element-9ea2a3c e-con-full parent-container e-flex e-con e-parent" data-id="9ea2a3c" data-element_type="container" data-settings="{&quot;position&quot;:&quot;fixed&quot;}">
251				<div class="elementor-element elementor-element-179ec0b elementor-widget elementor-widget-off-canvas" data-id="179ec0b" data-element_type="widget" data-settings="{&quot;prevent_scroll&quot;:&quot;yes&quot;}" data-widget_type="off-canvas.default">
252							<div id="off-canvas-179ec0b" class="e-off-canvas" role="dialog" aria-hidden="true" aria-label="Off-Canvas" aria-modal="true" inert="" data-delay-child-handlers="true">
253			<div class="e-off-canvas__overlay"></div>
254			<div class="e-off-canvas__main">
255				<div class="e-off-canvas__content">
256					<div class="elementor-element elementor-element-d79ca0d e-con-full e-flex e-con e-child" data-id="d79ca0d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation_mobile&quot;:&quot;none&quot;}">
257		<div class="elementor-element elementor-element-22e2d41 e-flex e-con-boxed e-con e-child" data-id="22e2d41" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
258					<div class="e-con-inner">
259		<div class="elementor-element elementor-element-21cb5e9 e-con-full e-flex e-con e-child" data-id="21cb5e9" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
260				<div class="elementor-element elementor-element-ee29966 elementor-nav-menu__align-center elementor-nav-menu--dropdown-none elementor-widget elementor-widget-nav-menu" data-id="ee29966" data-element_type="widget" data-settings="{&quot;layout&quot;:&quot;vertical&quot;,&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&lt;svg class=\&quot;e-font-icon-svg e-fas-caret-down\&quot;
260 viewBox=\&quot;0 0 320 512\&quot; xmlns=\&quot;http:\/\/www.w3.org\/2000\/svg\&quot;&gt;&lt;path d=\&quot;M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;&quot;,&quot;library&quot;:&quot;fa-solid&quot;}}" data-widget_type="nav-menu.default">
261								<nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-vertical e--pointer-background e--animation-fade">
262				<ul id="menu-1-ee29966" class="elementor-nav-menu sm-vertical"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-486"><a href="https://sonisto.com/desktop-app/" class="elementor-item">Desktop App</a></li>
263<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-487"><a href="https://sonisto.com/freeware/" class="elementor-item">Free Plugins</a></li>
264<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1423 current_page_item menu-item-1458"><a href="https://sonisto.com/pricing/" aria-current="page" class="elementor-item elementor-item-active">Pricing</a></li>
265<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1579"><a href="https://sonisto.com/faq/" class="elementor-item">FAQ</a></li>
266</ul>			</nav>
267						<nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true">
268				<ul id="menu-2-ee29966" class="elementor-nav-menu sm-vertical"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-486"><a href="https://sonisto.com/desktop-app/" class="elementor-item" tabindex="-1">Desktop App</a></li>
269<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-487"><a href="https://sonisto.com/freeware/" class="elementor-item" tabindex="-1">Free Plugins</a></li>
270<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1423 current_page_item menu-item-1458"><a href="https://sonisto.com/pricing/" aria-current="page" class="elementor-item elementor-item-active" tabindex="-1">Pricing</a></li>
271<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1579"><a href="https://sonisto.com/faq/" class="elementor-item" tabindex="-1">FAQ</a></li>
272</ul>			</nav>
273						</div>
274				<div class="elementor-element elementor-element-9cfc194 elementor-mobile-align-justify elementor-widget elementor-widget-button" data-id="9cfc194" data-element_type="widget" data-widget_type="button.default">
275										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://shop.sonisto.com">
276						<span class="elementor-button-content-wrapper">
277									<span class="elementor-button-text">Visit Shop</span>
278					</span>
279					</a>
280								</div>
281				<div class="elementor-element elementor-element-c27fbd9 elementor-mobile-align-justify elementor-widget elementor-widget-button" data-id="c27fbd9" data-element_type="widget" data-widget_type="button.default">
282										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://shop.sonisto.com/login">
283						<span class="elementor-button-content-wrapper">
284									<span class="elementor-button-text">Login</span>
285					</span>
286					</a>
287								</div>
288				</div>
289					</div>
290				</div>
291				</div>
292						</div>
293			</div>
294		</div>
295						</div>
296		<div class="elementor-element elementor-element-7b83efa e-con-full blur nav-container e-flex e-con e-child" data-id="7b83efa" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
297				<div class="elementor-element elementor-element-f671bf5 elementor-widget__width-initial elementor-widget elementor-widget-html" data-id="f671bf5" data-element_type="widget" data-widget_type="html.default">
298					<a class="sonisto-logo"
299   href="https://sonisto.com/"
300   aria-label="Sonisto homepage">
301  <span class="sonisto-bloom" aria-hidden="true"></span>
302
303  <img
304    src="https://sonisto.com/wp-content/uploads/2026/09/SONISTO_ICON_S_App_Gold.svg"
305    alt="Sonisto"
306    width="48"
307    height="48"
308  >
309
310  <span class="sonisto-rim" aria-hidden="true"></span>
311</a>
312
313<style>
314.sonisto-logo {
315  --sonisto-angle: 0deg;
316  position: relative;
317  isolation: isolate;
318  display: inline-block;
319  width: 60px;
320  height: 60px;
321  padding: 0;
322  border: 0;
323  border-radius: 13%;
324  overflow: visible;
325  vertical-align: middle;
326  text-decoration: none;
327  box-shadow:
328    0 18px 40px -14px rgba(0,0,0,.85),
329    0 4px 12px -6px rgba(0,0,0,.7);
330}
331
332.sonisto-logo > img {
333  position: relative;
334  z-index: 2;
335  display: block;
336  width: 100%;
337  height: 100%;
338  max-width: none;
339  border: 0;
340  border-radius: inherit;
341}
342
343.sonisto-logo:focus-visible {
344  outline: 2px solid #E9C879;
345  outline-offset: 6px;
346}
347
348.sonisto-bloom,
349.sonisto-rim {
350  position: absolute;
351  inset: 0;
352  border-radius: inherit;
353  pointer-events: none;
354}
355
356.sonisto-bloom {
357  inset: -3px;
358  z-index: 1;
359  filter: blur(9px);
360}
361
362.sonisto-rim {
363  z-index: 3;
364}
365
366.sonisto-bloom::before,
367.sonisto-bloom::after,
368.sonisto-rim::before,
369.sonisto-rim::after {
370  content: "";
371  position: absolute;
372  inset: 0;
373  border-radius: inherit;
374  transition: opacity .35s ease;
375}
376
377.sonisto-bloom::before {
378  opacity: .85;
379  background: conic-gradient(
380    from var(--sonisto-angle),
381    transparent 0 78%,
382    rgba(108,197,195,.6) 89%,
383    transparent 98%
384  );
385}
386
387.sonisto-bloom::after {
388  opacity: 0;
389  background: conic-gradient(
390    from var(--sonisto-angle),
391    transparent 0 78%,
392    rgba(108,197,195,.55) 88%,
393    rgba(232,99,47,.4) 94%,
394    transparent 98%
395  );
396}
397
398.sonisto-rim::before,
399.sonisto-rim::after {
400  box-sizing: border-box;
401  border: 1.5px solid transparent;
402  -webkit-mask:
403    linear-gradient(#fff 0 0) padding-box,
404    linear-gradient(#fff 0 0);
405  -webkit-mask-composite: xor;
406  mask:
407    linear-gradient(#fff 0 0) padding-box,
408    linear-gradient(#fff 0 0);
409  mask-composite: exclude;
410}
411
412.sonisto-rim::before {
413  opacity: 1;
414  background: conic-gradient(
415    from var(--sonisto-angle),
416    rgba(160,230,225,.07) 0 78%,
417    rgba(143,214,210,.4) 85%,
418    #B8EEE9 90%,
419    rgba(143,214,210,.35) 95%,
420    rgba(160,230,225,.07) 99%
421  ) border-box;
422}
423
424.sonisto-rim::after {
425  opacity: 0;
426  background: conic-gradient(
427    from var(--sonisto-angle),
428    rgba(160,230,225,.07) 0 78%,
429    rgba(143,214,210,.35) 84%,
430    #B8EEE9 89%,
431    #8FD6D2 91.5%,
432    rgba(232,99,47,.85) 95%,
433    rgba(160,230,225,.07) 99%
434  ) border-box;
435}
436
437.sonisto-logo:is(:hover, :focus-visible) .sonisto-bloom::before,
438.sonisto-logo:is(:hover, :focus-visible) .sonisto-rim::before {
439  opacity: 0;
440}
441
442.sonisto-logo:is(:hover, :focus-visible) .sonisto-bloom::after,
443.sonisto-logo:is(:hover, :focus-visible) .sonisto-rim::after {
444  opacity: 1;
445}
446
447@media (prefers-reduced-motion: reduce) {
448  .sonisto-logo {
449    --sonisto-angle: 38deg !important;
450  }
451
452  .sonisto-bloom::before,
453  .sonisto-bloom::after,
454  .sonisto-rim::before,
455  .sonisto-rim::after {
456    transition: none;
457  }
458}
459</style>
460
461<script>
462(() => {
463  document.querySelectorAll(".sonisto-logo").forEach((logo) => {
464    if (logo.dataset.animationReady) return;
465    logo.dataset.animationReady = "true";
466
467    const reducedMotion = window.matchMedia(
468      "(prefers-reduced-motion: reduce)"
469    );
470
471    let angle = 0;
472    let speed = 360 / 7;
473    let previousTime = null;
474    let frame = null;
475
476    function animate(time) {
477      if (!logo.isConnected || reducedMotion.matches) {
478        frame = null;
479        previousTime = null;
480        return;
481      }
482
483      const elapsed = previousTime === null
484        ? 0
485        : Math.min((time - previousTime) / 1000, 0.05);
486
487      previousTime = time;
488
489      const active = logo.matches(":hover, :focus-visible");
490      const targetSpeed = 360 / (active ? 3.5 : 7);
491
492      // Ease the speed without resetting the light's position.
493      speed += (targetSpeed - speed) *
494        (1 - Math.exp(-elapsed / 0.22));
495
496      angle = (angle + speed * elapsed) % 360;
497      logo.style.setProperty("--sonisto-angle", angle + "deg");
498
499      frame = requestAnimationFrame(animate);
500    }
501
502    function updateMotion() {
503      if (frame !== null) cancelAnimationFrame(frame);
504      frame = null;
505      previousTime = null;
506
507      if (!reducedMotion.matches && logo.isConnected) {
508        frame = requestAnimationFrame(animate);
509      }
510    }
511
512    reducedMotion.addEventListener("change", updateMotion);
513    updateMotion();
514  });
515})();
516</script>
516				</div>
517				<div class="elementor-element elementor-element-3964108 elementor-hidden-desktop elementor-hidden-laptop elementor-hidden-tablet elementor-widget elementor-widget-html" data-id="3964108" data-element_type="widget" data-widget_type="html.default">
518					<a
519  href="#elementor-action%3Aaction%3Doff_canvas%3Aopen%26settings%3DeyJpZCI6IjE3OWVjMGIiLCJkaXNwbGF5TW9kZSI6Im9wZW4ifQ%3D%3D"
520  class="urgent-menu-button"
521  role="button"
522  aria-label="Open navigation"
523  aria-controls="off-canvas-179ec0b"
524  aria-expanded="false"
525>
526  <span class="urgent-menu-box" aria-hidden="true">
527    <span class="urgent-menu-line"></span>
528  </span>
529</a>
530
531<style>
532.urgent-menu-button {
533  position: relative;
534  display: inline-flex;
535  align-items: center;
536  justify-content: center;
537  box-sizing: border-box;
538  flex-shrink: 0;
539  width: 60px;
540  height: 60px;
541  padding: 0;
542  margin: 0;
543  border: 0 !important;
544  border-radius: 13% !important;
545  background: #F2D482 !important;
546  box-shadow: none !important;
547  vertical-align: middle;
548  text-decoration: none;
549  cursor: pointer;
550  -webkit-tap-highlight-color: transparent;
551}
552
553.urgent-menu-button:focus-visible {
554  outline: 2px solid #F2D482;
555  outline-offset: 5px;
556}
557
558.urgent-menu-box {
559  position: relative;
560  width: 32px;
561  height: 20px;
562  pointer-events: none;
563}
564
565.urgent-menu-line,
566.urgent-menu-line::before,
567.urgent-menu-line::after {
568  position: absolute;
569  left: 0;
570  width: 32px;
571  height: 2px;
572  border-radius: 4px;
573  background: #000;
574  transition:
575    top 150ms ease,
576    transform 150ms ease,
577    opacity 150ms ease;
578}
579
580.urgent-menu-line {
581  top: 9px;
582}
583
584.urgent-menu-line::before,
585.urgent-menu-line::after {
586  content: "";
587}
588
589.urgent-menu-line::before {
590  top: -8px;
591}
592
593.urgent-menu-line::after {
594  top: 8px;
595}
596
597.urgent-menu-button.is-active .urgent-menu-line {
598  transform: rotate(45deg);
599}
600
601.urgent-menu-button.is-active .urgent-menu-line::before {
602  top: 0;
603  opacity: 0;
604}
605
606.urgent-menu-button.is-active .urgent-menu-line::after {
607  top: 0;
608  transform: rotate(90deg);
609}
610
611@media (prefers-reduced-motion: reduce) {
612  .urgent-menu-line,
613  .urgent-menu-line::before,
614  .urgent-menu-line::after {
615    transition: none;
616  }
617}
618
619@media (max-width: 767px) {
620  .sonisto-logo,
621  .urgent-menu-button {
622    width: 48px !important;
623    height: 48px !important;
624  }
625
626  .urgent-menu-box,
627  .urgent-menu-line,
628  .urgent-menu-line::before,
629  .urgent-menu-line::after {
630    width: 26px;
631  }
632}
633</style>
634
635<script>
636(() => {
637  const button = document.querySelector(".urgent-menu-button");
638  if (!button || button.dataset.menuReady) return;
639  button.dataset.menuReady = "true";
640
641  const actionURL = (action) =>
642    "#elementor-action" + encodeURIComponent(
643      ":action=off_canvas:" + action +
644      "&settings=" + btoa(JSON.stringify({
645        id: "179ec0b",
646        displayMode: action
647      }))
648    );
649
650  function initialize(attempt = 0) {
651    const panel = document.getElementById("off-canvas-179ec0b");
652
653    if (!panel) {
654      if (attempt < 50) {
655        setTimeout(() => initialize(attempt + 1), 100);
656      }
657      return;
658    }
659
660    const placeholder = document.createElement("span");
661    let floating = false;
662    let originalStyle;
663
664    function updatePosition() {
665      if (!floating) return;
666      const rect = placeholder.getBoundingClientRect();
667      button.style.left = rect.left + "px";
668      button.style.top = rect.top + "px";
669    }
670
671    function synchronize() {
672      const isOpen =
673        panel.getAttribute("aria-hidden") === "false" ||
674        panel.classList.contains("e-off-canvas-visible");
675
676      if (isOpen && !floating) {
677        const rect = button.getBoundingClientRect();
678        originalStyle = button.getAttribute("style");
679
680        Object.assign(placeholder.style, {
681          display: "inline-block",
682          width: rect.width + "px",
683          height: rect.height + "px",
684          verticalAlign: "middle",
685          flexShrink: "0"
686        });
687
688        button.before(placeholder);
689        document.body.appendChild(button);
690
691        Object.assign(button.style, {
692          position: "fixed",
693          left: rect.left + "px",
694          top: rect.top + "px",
695          width: rect.width + "px",
696          height: rect.height + "px",
697          margin: "0",
698          zIndex: "2147483647"
699        });
700
701        floating = true;
702      } else if (!isOpen && floating) {
703        placeholder.replaceWith(button);
704
705        if (originalStyle === null) {
706          button.removeAttribute("style");
707        } else {
708          button.setAttribute("style", originalStyle);
709        }
710
711        floating = false;
712      }
713
714      button.href = actionURL(isOpen ? "close" : "open");
715      button.classList.toggle("is-active", isOpen);
716      button.setAttribute("aria-expanded", String(isOpen));
717      button.setAttribute(
718        "aria-label",
719        isOpen ? "Close navigation" : "Open navigation"
720      );
721    }
722
723    button.addEventListener("keydown", (event) => {
724      if (event.key === " ") {
725        event.preventDefault();
726        button.click();
727      }
728    });
729
730    new MutationObserver(synchronize).observe(panel, {
731      attributes: true,
732      attributeFilter: ["aria-hidden", "class"]
733    });
734
735    window.addEventListener("resize", updatePosition);
736    synchronize();
737  }
738
739  if (document.readyState === "loading") {
740    document.addEventListener("DOMContentLoaded", () => initialize());
741  } else {
742    initialize();
743  }
744})();
745</script>
745				</div>
746		<div class="elementor-element elementor-element-b89f788 e-con-full elementor-hidden-mobile e-flex e-con e-child" data-id="b89f788" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
747		<div class="elementor-element elementor-element-be8ba65 e-con-full e-flex e-con e-child" data-id="be8ba65" data-element_type="container">
748				<div class="elementor-element elementor-element-44ead18 elementor-nav-menu__align-center elementor-nav-menu--dropdown-mobile sonisto-menu elementor-nav-menu__text-align-aside elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu" data-id="44ead18" data-element_type="widget" data-settings="{&quot;layout&quot;:&quot;horizontal&quot;,&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&lt;svg class=\&quot;e-font-icon-svg e-fas-caret-down\&quot; viewBox=\&quot;0 0 320 512\&quot; xmlns=\&quot;http:\/\/www.w3.org\/2000\/svg\&quot;&gt;&lt;path d=\&quot;M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;&quot;,&quot;library&quot;:&quot;fa-solid&quot;},&quot;toggle&quot;:&quot;burger&quot;}" data-widget_type="nav-menu.default">
749								<nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-background e--animation-fade">
750				<ul id="menu-1-44ead18" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-486"><a href="https://sonisto.com/desktop-app/" class="elementor-item">Desktop App</a></li>
751<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-487"><a href="https://sonisto.com/freeware/" class="elementor-item">Free Plugins</a></li>
752<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1423 current_page_item menu-item-1458"><a href="https://sonisto.com/pricing/" aria-current="page" class="elementor-item elementor-item-active">Pricing</a></li>
753<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1579"><a href="https://sonisto.com/faq/" class="elementor-item">FAQ</a></li>
754</ul>			</nav>
755					<div class="elementor-menu-toggle" role="button" tabindex="0" aria-label="Menu Toggle" aria-expanded="false">
756			<svg aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--open e-font-icon-svg e-eicon-menu-bar" viewBox="0 0 1000 1000" xmlns="http://www.w3.org/2000/svg"><path d="M104 333H896C929 333 958 304 958 271S929 208 896 208H104C71 208 42 237 42 271S71 333 104 333ZM104 583H896C929 583 958 554 958 521S929 458 896 458H104C71 458 42 487 42 521S71 583 104 583ZM104 833H896C929 833 958 804 958 771S929 708 896 708H104C71 708 42 737 42 771S71 833 104 833Z"></path></svg><svg aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--close e-font-icon-svg e-eicon-close" viewBox="0 0 1000 1000" xmlns="http://www.w3.org/2000/svg"><path d="M742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z"></path></svg>		</div>
757					<nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true">
758				<ul id="menu-2-44ead18" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-486"><a href="https://sonisto.com/desktop-app/" class="elementor-item" tabindex="-1">Desktop App</a></li>
759<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-487"><a href="https://sonisto.com/freeware/" class="elementor-item" tabindex="-1">Free Plugins</a></li>
760<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1423 current_page_item menu-item-1458"><a href="https://sonisto.com/pricing/" aria-current="page" class="elementor-item elementor-item-active" tabindex="-1">Pricing</a></li>
761<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1579"><a href="https://sonisto.com/faq/" class="elementor-item" tabindex="-1">FAQ</a></li>
762</ul>			</nav>
763						</div>
764				</div>
765				</div>
766				<div class="elementor-element elementor-element-de36cec elementor-hidden-mobile elementor-widget elementor-widget-button" data-id="de36cec" data-element_type="widget" data-widget_type="button.default">
767										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://shop.sonisto.com">
768						<span class="elementor-button-content-wrapper">
769									<span class="elementor-button-text">Visit Shop</span>
770					</span>
771					</a>
772								</div>
773				</div>
774		<div class="elementor-element elementor-element-3a729cd e-con-full elementor-hidden-mobile elementor-hidden-tablet e-flex e-con e-child" data-id="3a729cd" data-element_type="container">
775				<div class="elementor-element elementor-element-211d242 elementor-hidden-mobile elementor-widget elementor-widget-button" data-id="211d242" data-element_type="widget" data-widget_type="button.default">
776										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://shop.sonisto.com/login">
777						<span class="elementor-button-content-wrapper">
778									<span class="elementor-button-text">Log In</span>
779					</span>
780					</a>
781								</div>
782				<div class="elementor-element elementor-element-385ad61 elementor-align-left elementor-mobile-align-center sonisto-solid-glow elementor-widget elementor-widget-button" data-id="385ad61" data-element_type="widget" data-widget_type="button.default">
783										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://shop.sonisto.com/signup">
784						<span class="elementor-button-content-wrapper">
785									<span class="elementor-button-text">Sign Up</span>
786					</span>
787					</a>
788								</div>
789				</div>
790				</div>
791				</header>
792				<div data-elementor-type="wp-page" data-elementor-id="1423" class="elementor elementor-1423" data-elementor-post-type="page">
793				<div class="elementor-element elementor-element-22a98e64 e-flex e-con-boxed e-con e-parent" data-id="22a98e64" data-element_type="container">
794					<div class="e-con-inner">
795		<div class="elementor-element elementor-element-453a103f e-con-full e-flex e-con e-child" data-id="453a103f" data-element_type="container">
796				<div class="elementor-element elementor-element-726b9dad elementor-widget elementor-widget-heading" data-id="726b9dad" data-element_type="widget" data-widget_type="heading.default">
797					<h2 class="elementor-heading-title elementor-size-default">PRICING</h2>				</div>
798				<div class="elementor-element elementor-element-7602c730 elementor-widget elementor-widget-heading" data-id="7602c730" data-element_type="widget" data-widget_type="heading.default">
799					<h1 class="elementor-heading-title elementor-size-default">Choose Your Plan
800</h1>				</div>
801				<div class="elementor-element elementor-element-53ad1cef elementor-widget__width-initial elementor-widget elementor-widget-text-editor" data-id="53ad1cef" data-element_type="widget" data-widget_type="text-editor.default">
802									Flexible plans designed to fit your sound and workflow. Sonisto is a desktop app for Mac and Windows. Pro yearly comes with 12 plugins that are yours to keep.
803								</div>
804				</div>
805				<div class="elementor-element elementor-element-2fe32989 elementor-widget elementor-widget-html" data-id="2fe32989" data-element_type="widget" data-widget_type="html.default">
806					<style>
807/* ============================================================
808   SONISTO PRICING CARDS
809   ============================================================ */
810
811.pricing {
812  --bg-card: #131A1C;
813  --border-inactive: #859593;
814  --border-active: #F2D482;
815  --text-heading: #F5F7F6;
816  --text-muted: #859593;
817  --text-dim: #62706E;
818  --text-body: #D8DEDC;
819  --accent: #F2D482;
820  --accent-strong: #E8C468;
821  --radius-card: 20px;
822  --radius-control: 999px;
823
824  box-sizing: border-box !important;
825  background: transparent !important;
826}
827
828.pricing *,
829.pricing *::before,
830.pricing *::after {
831  box-sizing: border-box !important;
832}
833
834
835/* ============================================================
836   GRID
837   ============================================================ */
838
839.pricing__grid {
840  display: grid !important;
841  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
842  gap: 24px !important;
843  align-items: stretch !important;
844  max-width: 1180px !important;
845  margin: 0 auto !important;
846  font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif !important;
847}
848
849@media (max-width: 900px) {
850  .pricing__grid {
851    grid-template-columns: 1fr !important;
852    max-width: 460px !important;
853  }
854}
855
856
857/* ============================================================
858   CARDS
859   ============================================================ */
860
861.pricing__card {
862  background: var(--bg-card) !important;
863  border: 1px solid var(--border-inactive) !important;
864  border-radius: var(--radius-card) !important;
865  padding: 36px 32px 32px !important;
866  margin: 0 !important;
867
868  display: flex !important;
869  flex-direction: column !important;
870
871  min-width: 0 !important;
872  list-style: none !important;
873}
874
875.pricing__card--featured {
876  border-color: var(--border-active) !important;
877}
878
879
880/* ============================================================
881   PLAN NAME
882   ============================================================ */
883
884.pricing__plan {
885  font-size: 13px !important;
886  font-weight: 600 !important;
887  letter-spacing: 0.08em !important;
888  text-transform: uppercase !important;
889
890  color: var(--text-muted) !important;
891
892  margin: 0 0 14px !important;
893  padding: 0 !important;
894
895  line-height: 1.3 !important;
896}
897
898.pricing__card--featured .pricing__plan {
899  color: var(--accent) !important;
900}
901
902
903/* ============================================================
904   PRICE
905   ============================================================ */
906
907.pricing__price-row {
908  display: flex !important;
909  align-items: baseline !important;
910  gap: 12px !important;
911  flex-wrap: wrap !important;
912
913  min-height: 44px !important;
914  margin: 0 !important;
915}
916
917.pricing__price {
918  font-size: 38px !important;
919  font-weight: 800 !important;
920  letter-spacing: -0.01em !important;
921
922  color: var(--text-heading) !important;
923
924  margin: 0 !important;
925  padding: 0 !important;
926
927  line-height: 1 !important;
928}
929
930.pricing__period {
931  font-size: 14px !important;
932  color: var(--text-muted) !important;
933
934  margin: 0 !important;
935  padding: 0 !important;
936
937  line-height: 1.4 !important;
938}
939
940
941/* ============================================================
942   YEARLY SAVINGS
943   ============================================================ */
944
945.pricing__yearly-savings {
946  display: flex !important;
947  align-items: center !important;
948  gap: 12px !important;
949  flex-wrap: wrap !important;
950
951  margin-top: 12px !important;
952}
953
954.pricing__original-price {
955  font-size: 16px !important;
956  font-weight: 500 !important;
957  color: var(--text-dim) !important;
958
959  text-decoration: line-through !important;
960  text-decoration-thickness: 1.5px !important;
961
962  margin: 0 !important;
963  padding: 0 !important;
964
965  line-height: 1.4 !important;
966}
967
968.pricing__badge {
969  display: inline-flex !important;
970  align-items: center !important;
971
972  gap: 7px !important;
973
974  font-size: 12.5px !important;
975  font-weight: 600 !important;
976
977  color: var(--accent) !important;
978
979  background: rgba(242, 212, 130, 0.12) !important;
980  border: 1px solid rgba(242, 212, 130, 0.35) !important;
981
982  border-radius: var(--radius-control) !important;
983
984  padding: 5px 12px 5px 10px !important;
985  margin: 0 !important;
986
987  white-space: nowrap !important;
988  line-height: 1.4 !important;
989}
990
991.pricing__gift-icon {
992  width: 15px !important;
993  height: 15px !important;
994  flex-shrink: 0 !important;
995
996  fill: none !important;
997  stroke: currentColor !important;
998  stroke-width: 2 !important;
999  stroke-linecap: round !important;
1000  stroke-linejoin: round !important;
1001}
1002
1003.pricing__yearly-savings[hidden] {
1004  display: none !important;
1005}
1006
1007
1008/* ============================================================
1009   MONTHLY / YEARLY TOGGLE
1010   ============================================================ */
1011
1012.pricing__toggle {
1013  display: inline-flex !important;
1014  align-items: center !important;
1015
1016  gap: 4px !important;
1017
1018  margin-top: 22px !important;
1019
1020  width: fit-content !important;
1021
1022  list-style: none !important;
1023  padding: 0 !important;
1024}
1025
1026.pricing__toggle-btn {
1027  appearance: none !important;
1028  -webkit-appearance: none !important;
1029
1030  background: transparent !important;
1031
1032  border: 1px solid transparent !important;
1033  border-radius: var(--radius-control) !important;
1034
1035  padding: 7px 16px !important;
1036  margin: 0 !important;
1037
1038  font-size: 14px !important;
1039  font-weight: 500 !important;
1040  line-height: 1.4 !important;
1041
1042  color: var(--text-muted) !important;
1043
1044  cursor: pointer !important;
1045
1046  font-family: inherit !important;
1047
1048  text-decoration: none !important;
1049
1050  box-shadow: none !important;
1051
1052  transition:
1053    color .15s ease,
1054    border-color .15s ease !important;
1055}
1056
1057.pricing__toggle-btn[aria-pressed="true"] {
1058  color: var(--text-heading) !important;
1059  font-weight: 600 !important;
1060}
1061
1062.pricing__toggle-btn:hover,
1063.pricing__toggle-btn:focus-visible {
1064  border-color: var(--border-active) !important;
1065}
1066
1067.pricing__toggle--spacer {
1068  height: 0 !important;
1069  margin-top: 22px !important;
1070  visibility: hidden !important;
1071}
1072
1073
1074/* ============================================================
1075   FEATURES
1076   ============================================================ */
1077
1078.pricing__features {
1079  list-style: none !important;
1080
1081  margin: 28px 0 0 !important;
1082  padding: 0 !important;
1083
1084  display: flex !important;
1085  flex-direction: column !important;
1086
1087  gap: 14px !important;
1088
1089  flex: 1 !important;
1090}
1091
1092.pricing__feature {
1093  display: flex !important;
1094  align-items: flex-start !important;
1095
1096  gap: 10px !important;
1097
1098  font-size: 14.5px !important;
1099  line-height: 1.4 !important;
1100
1101  color: var(--text-dim) !important;
1102
1103  margin: 0 !important;
1104  padding: 0 !important;
1105
1106  list-style: none !important;
1107}
1108
1109.pricing__card--featured .pricing__feature,
1110.pricing__card--accent .pricing__feature {
1111  color: var(--text-body) !important;
1112}
1113
1114.pricing__feature svg {
1115  flex-shrink: 0 !important;
1116
1117  margin-top: 2px !important;
1118
1119  stroke: var(--text-dim) !important;
1120}
1121
1122.pricing__card--featured .pricing__feature svg,
1123.pricing__card--accent .pricing__feature svg {
1124  stroke: var(--accent) !important;
1125}
1126
1127
1128.pricing__card--featured .pricing__feature--plugins {
1129  color: var(--accent) !important;
1130  font-weight: 600 !important;
1131}
1132
1133
1134/* ============================================================
1135   CTA BUTTONS
1136   ============================================================ */
1137
1138.pricing__cta {
1139  appearance: none !important;
1140  -webkit-appearance: none !important;
1141
1142  border: none !important;
1143  border-radius: 14px !important;
1144
1145  padding: 15px 20px !important;
1146
1147  font-size: 15px !important;
1148  font-weight: 700 !important;
1149  font-family: inherit !important;
1150  line-height: 1.4 !important;
1151
1152  cursor: pointer !important;
1153
1154  margin: 28px 0 0 !important;
1155
1156  width: 100% !important;
1157
1158  text-align: center !important;
1159  text-decoration: none !important;
1160
1161  display: block !important;
1162}
1163
1164
1165/* FREE */
1166
1167.pricing__cta--muted {
1168  background: transparent !important;
1169
1170  border: 1px solid var(--border-inactive) !important;
1171
1172  color: var(--text-muted) !important;
1173
1174  cursor: pointer !important;
1175
1176  transition:
1177    border-color .15s ease,
1178    color .15s ease !important;
1179}
1180
1181.pricing__cta--muted:hover {
1182  border-color: var(--accent) !important;
1183  color: var(--accent) !important;
1184}
1185
1186
1187/* BASIC + PRO */
1188
1189.pricing__cta--accent {
1190  background: linear-gradient(
1191    180deg,
1192    #F6E1A6 0%,
1193    #E7B94E 100%
1194  ) !important;
1195
1196  color: #14100A !important;
1197}
1198
1199.pricing__cta--accent:hover {
1200  filter: brightness(1.04) !important;
1201}
1202
1203.pricing__yearly-total {
1204  font-size: 16px !important;
1205  font-weight: 600 !important;
1206  color: var(--text-body) !important;
1207  margin: 0 !important;
1208  padding: 0 !important;
1209  line-height: 1.4 !important;
1210}
1211</style>
1212
1213
1214<section class="pricing">
1215
1216  <div
1217    class="pricing__grid"
1218    id="sonisto-pricing-grid"
1219  ></div>
1220
1221</section>
1222
1223
1224<script>
1225(async function () {
1226
1227  /* ============================================================
1228     SONISTO ENDPOINTS
1229     ============================================================ */
1230
1231  const API_URL =
1232    'https://new.sonisto.com/api/v1/subscription_plans';
1233
1234  const FREE_SIGNUP_URL =
1235    'https://shop.sonisto.com/signup';
1236
1237  const PAID_SIGNUP_URL =
1238    'https://shop.sonisto.com/signup?pro=true&plan=';
1239
1240  /* What Pro comes with beyond the limits. The plans API lists limits only. */
1241  const PRO_PLUGINS_YEARLY =
1242    '12 plugins the day you join. Yours to keep.';
1243
1244  const PRO_PLUGINS_MONTHLY =
1245    '1 new plugin each month. Yours to keep.';
1246
1247
1248  const grid =
1249    document.getElementById('sonisto-pricing-grid');
1250
1251  if (!grid) return;
1252
1253
1254  /* ============================================================
1255     ICONS
1256     ============================================================ */
1257
1258  const checkIcon = `
1259    <svg
1260      width="16"
1261      height="16"
1262      viewBox="0 0 24 24"
1263      fill="none"
1264      stroke-width="2.2"
1265      stroke-linecap="round"
1266      stroke-linejoin="round"
1267    >
1268      <path d="M20 6L9 17l-5-5"/>
1269    </svg>
1270  `;
1271
1272
1273  const giftIcon = `
1274    <svg
1275      class="pricing__gift-icon"
1276      viewBox="0 0 24 24"
1277      aria-hidden="true"
1278    >
1279      <rect x="3" y="8" width="18" height="13" rx="2"/>
1280      <path d="M12 8v13"/>
1281      <path d="M3 12h18"/>
1282      <path d="M7.5 8C5.5 8 5 6.8 5 5.8 5 4.8 5.8 4 6.8 4c2.2 0 5.2 4 5.2 4"/>
1283      <path d="M16.5 8c2 0 2.5-1.2 2.5-2.2 0-1-.8-1.8-1.8-1.8-2.2 0-5.2 4-5.2 4"/>
1284    </svg>
1285  `;
1286
1287
1288  /* ============================================================
1289     HELPERS
1290     ============================================================ */
1291
1292  function capitalize(value) {
1293    return value.charAt(0).toUpperCase() + value.slice(1);
1294  }
1295
1296
1297  function renderFeatures(features) {
1298
1299    return features
1300      .filter(feature => feature.enabled)
1301      .sort((a, b) => a.position - b.position)
1302      .map(feature => `
1303        <li class="pricing__feature">
1304          ${checkIcon}
1305          ${feature.label}
1306        </li>
1307      `)
1308      .join('');
1309  }
1310
1311
1312  function getPaidPlanUrl(planName, cycle) {
1313    return PAID_SIGNUP_URL + planName + '_' + cycle;
1314  }
1315
1316
1317  /* ============================================================
1318     RENDER PLAN CARD
1319     ============================================================ */
1320
1321  function renderCard(plan) {
1322
1323    const isFree =
1324      !plan.pricing;
1325
1326    const isPro =
1327      plan.name === 'pro';
1328
1329
1330    const cardClasses = [
1331      'pricing__card',
1332
1333      !isFree
1334        ? 'pricing__card--accent'
1335        : '',
1336
1337      isPro
1338        ? 'pricing__card--featured'
1339        : ''
1340    ]
1341      .filter(Boolean)
1342      .join(' ');
1343
1344
1345    /* ==========================================================
1346       FREE
1347       ========================================================== */
1348
1349    if (isFree) {
1350
1351      return `
1352        <div class="${cardClasses}">
1353
1354          <p class="pricing__plan">
1355            ${capitalize(plan.name)}
1356          </p>
1357
1358          <div class="pricing__price-row">
1359
1360            <p class="pricing__price">
1361              €0
1362            </p>
1363
1364            <p class="pricing__period">
1365              forever
1366            </p>
1367
1368          </div>
1369
1370          <div class="pricing__toggle--spacer"></div>
1371
1372          <ul class="pricing__features">
1373            ${renderFeatures(plan.features)}
1374          </ul>
1375
1376          <a
1377            class="pricing__cta pricing__cta--muted sonisto-glow"
1378            href="${FREE_SIGNUP_URL}"
1379            data-subscribe
1380          >
1381            Start free
1382          </a>
1383
1384        </div>
1385      `;
1386    }
1387
1388
1389    /* ==========================================================
1390       BASIC / PRO
1391       ========================================================== */
1392
1393    const monthly =
1394      plan.pricing.monthly;
1395
1396    const yearly =
1397      plan.pricing.yearly;
1398
1399
1400    /*
1401     * All yearly pricing values come directly from the API.
1402     *
1403     * yearly.price_decimal
1404     * = actual yearly charge
1405     *
1406     * yearly.per_month_price_decimal
1407     * = yearly price expressed per month
1408     *
1409     * yearly.monthly_annualized_price_decimal
1410     * = cost of paying the monthly rate for 12 months
1411     */
1412
1413    const yearlyPerMonth =
1414      yearly.per_month_price_decimal;
1415
1416    const yearlyPrice =
1417      yearly.price_decimal;
1418
1419    const yearlyOriginalPrice =
1420      yearly.monthly_annualized_price_decimal;
1421
1422    const monthsSaved =
1423      yearly.months_saved;
1424
1425
1426    return `
1427      <div
1428        class="${cardClasses}"
1429        data-plan-card
1430        data-plan-name="${plan.name}"
1431
1432        data-monthly="${monthly.price_decimal}"
1433
1434        data-yearly-per-month="${yearlyPerMonth}"
1435        data-yearly-price="${yearlyPrice}"
1436        data-yearly-original="${yearlyOriginalPrice}"
1437        data-months-saved="${monthsSaved}"
1438
1439        data-currency="${yearly.currency_symbol}"
1440      >
1441
1442        <p class="pricing__plan">
1443          ${capitalize(plan.name)}
1444        </p>
1445
1446
1447        <!-- MAIN PRICE -->
1448
1449        <div class="pricing__price-row">
1450
1451          <p
1452            class="pricing__price"
1453            data-price
1454          >
1455            ${yearly.currency_symbol}${yearlyPerMonth}
1456          </p>
1457
1458          <p
1459            class="pricing__period"
1460            data-period
1461          >
1462            / mo (billed yearly)
1463          </p>
1464
1465        </div>
1466
1467
1468        <!-- YEARLY SAVINGS -->
1469
1470        <div
1471          class="pricing__yearly-savings"
1472          data-yearly-savings
1473        >
1474
1475          <span
1476            class="pricing__original-price"
1477            data-original-price
1478          >
1479            ${yearly.currency_symbol}${yearlyOriginalPrice}
1480          </span>
1481
1482
1483          <span
1484            class="pricing__yearly-total"
1485            data-yearly-total
1486          >
1487            ${yearly.currency_symbol}${yearlyPrice}
1488          </span>
1489
1490
1491          <span class="pricing__badge">
1492
1493            ${giftIcon}
1494
1495            <span data-savings-label>
1496              Save ${monthsSaved} months
1497            </span>
1498
1499          </span>
1500
1501        </div>
1502
1503
1504        <!-- BILLING TOGGLE -->
1505
1506        <div
1507          class="pricing__toggle"
1508          role="group"
1509          aria-label="Billing period — ${capitalize(plan.name)}"
1510        >
1511
1512          <button
1513            class="pricing__toggle-btn"
1514            type="button"
1515            data-cycle="monthly"
1516            aria-pressed="false"
1517          >
1518            Monthly
1519          </button>
1520
1521          <button
1522            class="pricing__toggle-btn"
1523            type="button"
1524            data-cycle="yearly"
1525            aria-pressed="true"
1526          >
1527            Yearly
1528          </button>
1529
1530        </div>
1531
1532
1533        <ul class="pricing__features">
1534          ${isPro ? `<li class="pricing__feature pricing__feature--plugins">${giftIcon}<span data-plugins-label>${PRO_PLUGINS_YEARLY}</span></li>` : ''}
1535          ${renderFeatures(plan.features)}
1536        </ul>
1537
1538
1539        <a
1540          class="pricing__cta pricing__cta--accent sonisto-solid-glow"
1541          href="${getPaidPlanUrl(plan.name, 'yearly')}"
1542          data-subscribe
1543        >
1544          Subscribe
1545        </a>
1546
1547      </div>
1548    `;
1549  }
1550
1551
1552  /* ============================================================
1553     MONTHLY / YEARLY TOGGLES
1554     ============================================================ */
1555
1556  function initToggles() {
1557
1558    document
1559      .querySelectorAll('[data-plan-card]')
1560      .forEach(card => {
1561
1562        const monthly =
1563          card.dataset.monthly;
1564
1565        const yearlyPerMonth =
1566          card.dataset.yearlyPerMonth;
1567
1568        const yearlyPrice =
1569          card.dataset.yearlyPrice;
1570
1571        const yearlyOriginal =
1572          card.dataset.yearlyOriginal;
1573
1574        const currency =
1575          card.dataset.currency;
1576
1577
1578        const priceEl =
1579          card.querySelector('[data-price]');
1580
1581        const periodEl =
1582          card.querySelector('[data-period]');
1583
1584        const yearlySavingsEl =
1585          card.querySelector('[data-yearly-savings]');
1586
1587        const originalPriceEl =
1588          card.querySelector('[data-original-price]');
1589
1590        const yearlyTotalEl =
1591          card.querySelector('[data-yearly-total]');
1592
1593        const subscribeEl =
1594          card.querySelector('[data-subscribe]');
1595
1596        const planName =
1597          card.dataset.planName;
1598
1599        const buttons =
1600          card.querySelectorAll('.pricing__toggle-btn');
1601
1602
1603        buttons.forEach(btn => {
1604
1605          btn.addEventListener('click', () => {
1606
1607            const cycle =
1608              btn.dataset.cycle;
1609
1610
1611            /* ACTIVE TOGGLE */
1612
1613            buttons.forEach(button => {
1614
1615              button.setAttribute(
1616                'aria-pressed',
1617                button === btn
1618                  ? 'true'
1619                  : 'false'
1620              );
1621
1622            });
1623
1624
1625            /* PRO PLUGINS LINE */
1626
1627            const pluginsEl =
1628              card.querySelector('[data-plugins-label]');
1629
1630            if (pluginsEl) {
1631
1632              pluginsEl.textContent =
1633                cycle === 'yearly'
1634                  ? PRO_PLUGINS_YEARLY
1635                  : PRO_PLUGINS_MONTHLY;
1636            }
1637
1638
1639            /* SUBSCRIBE LINK */
1640
1641            if (
1642              subscribeEl &&
1643              planName
1644            ) {
1645
1646              subscribeEl.href =
1647                getPaidPlanUrl(
1648                  planName,
1649                  cycle
1650                );
1651            }
1652
1653
1654            /* YEARLY */
1655
1656            if (cycle === 'yearly') {
1657
1658              priceEl.textContent =
1659                currency + yearlyPerMonth;
1660
1661              periodEl.textContent =
1662                '/ mo (billed yearly)';
1663
1664
1665              if (originalPriceEl) {
1666
1667                originalPriceEl.textContent =
1668                  currency + yearlyOriginal;
1669
1670              }
1671
1672
1673              if (yearlyTotalEl) {
1674
1675                yearlyTotalEl.textContent =
1676                  currency + yearlyPrice;
1677
1678              }
1679
1680
1681              if (yearlySavingsEl) {
1682
1683                yearlySavingsEl.hidden =
1684                  false;
1685
1686              }
1687
1688
1689            /* MONTHLY */
1690
1691            } else {
1692
1693              priceEl.textContent =
1694                currency + monthly;
1695
1696              periodEl.textContent =
1697                '/ mo';
1698
1699
1700              if (yearlySavingsEl) {
1701
1702                yearlySavingsEl.hidden =
1703                  true;
1704
1705              }
1706
1707            }
1708
1709          });
1710
1711        });
1712
1713      });
1714
1715  }
1716
1717
1718  /* ============================================================
1719     FETCH LIVE SONISTO PRICING
1720     ============================================================ */
1721
1722  try {
1723
1724    const response =
1725      await fetch(API_URL);
1726
1727
1728    if (!response.ok) {
1729
1730      throw new Error(
1731        `API returned ${response.status}`
1732      );
1733
1734    }
1735
1736
1737    const data =
1738      await response.json();
1739
1740
1741    if (
1742      !data.plans ||
1743      !Array.isArray(data.plans)
1744    ) {
1745
1746      throw new Error(
1747        'Invalid subscription plans response'
1748      );
1749
1750    }
1751
1752
1753    grid.innerHTML =
1754      data.plans
1755        .map(renderCard)
1756        .join('');
1757
1758
1759    initToggles();
1760
1761
1762  } catch (error) {
1763
1764    console.error(
1765      'Could not load Sonisto pricing:',
1766      error
1767    );
1768
1769
1770    grid.innerHTML = `
1771      <p style="color:#fff;">
1772        Pricing is temporarily unavailable.
1773      </p>
1774    `;
1775
1776  }
1777
1778})();
1779</script>
1779				</div>
1780				<div class="elementor-element elementor-element-37de7f5 elementor-widget elementor-widget-html" data-id="37de7f5" data-element_type="widget" data-widget_type="html.default">
1781					<style>
1782body {
1783  position: relative;
1784  isolation: isolate;
1785}
1786
1787.sonisto-grid-light {
1788  position: absolute;
1789  inset: 0;
1790  z-index: -1;
1791  pointer-events: none;
1792
1793  /* Match the existing background grid */
1794  background-image:
1795    linear-gradient(
1796      to right,
1797      rgba(108, 197, 195, 0.18) 1px,
1798      transparent 1px
1799    ),
1800    linear-gradient(
1801      to bottom,
1802      rgba(108, 197, 195, 0.18) 1px,
1803      transparent 1px
1804    );
1805  background-size:
1806    var(--grid-size, 50px) var(--grid-size, 50px);
1807  background-position: center top;
1808
1809  /* Reveal only the lines near the cursor */
1810  -webkit-mask-image: radial-gradient(
1811    circle 180px at var(--light-x, -999px) var(--light-y, -999px),
1812    #000 0%,
1813    rgba(0, 0, 0, 0.65) 30%,
1814    transparent 100%
1815  );
1816  mask-image: radial-gradient(
1817    circle 180px at var(--light-x, -999px) var(--light-y, -999px),
1818    #000 0%,
1819    rgba(0, 0, 0, 0.65) 30%,
1820    transparent 100%
1821  );
1822
1823  opacity: 0;
1824  transition: opacity 500ms ease;
1825}
1826
1827.sonisto-grid-light.is-visible {
1828  opacity: 1;
1829}
1830
1831@media (hover: none), (prefers-reduced-motion: reduce) {
1832  .sonisto-grid-light {
1833    display: none;
1834  }
1835}
1836</style>
1837
1838<script>
1839(() => {
1840  if (document.querySelector(".sonisto-grid-light")) return;
1841
1842  const layer = document.createElement("div");
1843  layer.className = "sonisto-grid-light";
1844  layer.setAttribute("aria-hidden", "true");
1845  document.body.prepend(layer);
1846
1847  const enabled = window.matchMedia(
1848    "(hover: hover) and (pointer: fine) and " +
1849    "(prefers-reduced-motion: no-preference)"
1850  );
1851
1852  let mouseX = 0;
1853  let mouseY = 0;
1854  let x = 0;
1855  let y = 0;
1856  let active = false;
1857  let frame = null;
1858  let previousTime = null;
1859
1860  function targetPosition() {
1861    const rect = layer.getBoundingClientRect();
1862    return {
1863      x: mouseX - rect.left,
1864      y: mouseY - rect.top
1865    };
1866  }
1867
1868  function paint() {
1869    layer.style.setProperty("--light-x", x + "px");
1870    layer.style.setProperty("--light-y", y + "px");
1871  }
1872
1873  function animate(time) {
1874    frame = null;
1875    if (!active) return;
1876
1877    const target = targetPosition();
1878    const elapsed = previousTime === null
1879      ? 16
1880      : Math.min(time - previousTime, 50);
1881
1882    previousTime = time;
1883
1884    const smoothing = 1 - Math.exp(-elapsed / 85);
1885    x += (target.x - x) * smoothing;
1886    y += (target.y - y) * smoothing;
1887    paint();
1888
1889    if (
1890      Math.abs(target.x - x) > 0.1 ||
1891      Math.abs(target.y - y) > 0.1
1892    ) {
1893      frame = requestAnimationFrame(animate);
1894    } else {
1895      previousTime = null;
1896    }
1897  }
1898
1899  function schedule() {
1900    if (active && frame === null) {
1901      frame = requestAnimationFrame(animate);
1902    }
1903  }
1904
1905  function hide() {
1906    active = false;
1907    layer.classList.remove("is-visible");
1908    if (frame !== null) cancelAnimationFrame(frame);
1909    frame = null;
1910    previousTime = null;
1911  }
1912
1913  document.addEventListener("pointermove", (event) => {
1914    if (!enabled.matches || event.pointerType === "touch") {
1915      hide();
1916      return;
1917    }
1918
1919    mouseX = event.clientX;
1920    mouseY = event.clientY;
1921
1922    if (!active) {
1923      const target = targetPosition();
1924      x = target.x;
1925      y = target.y;
1926      paint();
1927      active = true;
1928      layer.classList.add("is-visible");
1929    }
1930
1931    schedule();
1932  }, { passive: true });
1933
1934  window.addEventListener("scroll", schedule, { passive: true });
1935  window.addEventListener("resize", schedule);
1936  document.documentElement.addEventListener("pointerleave", hide);
1937  window.addEventListener("blur", hide);
1938  enabled.addEventListener("change", hide);
1939})();
1940</script>
1940				</div>
1941					</div>
1942				</div>
1943				</div>
1944				<footer data-elementor-type="footer" data-elementor-id="280" class="elementor elementor-280 elementor-location-footer" data-elementor-post-type="elementor_library">
1945			<div class="elementor-element elementor-element-efed2c5 e-con-full e-flex e-con e-parent" data-id="efed2c5" data-element_type="container">
1946		<div class="elementor-element elementor-element-02cb563 e-con-full e-flex e-con e-child" data-id="02cb563" data-element_type="container">
1947		<div class="elementor-element elementor-element-daa53d9 e-con-full e-flex e-con e-child" data-id="daa53d9" data-element_type="container">
1948		<div class="elementor-element elementor-element-700284b e-con-full e-flex e-con e-child" data-id="700284b" data-element_type="container">
1949				<div class="elementor-element elementor-element-67fea03 elementor-widget__width-initial elementor-widget elementor-widget-image" data-id="67fea03" data-element_type="widget" data-widget_type="image.default">
1950															<img width="122" height="25" src="https://sonisto.com/wp-content/uploads/2025/09/SONISTO_LOGO_NO_TEXT_V1_01.svg" class="attachment-large size-large wp-image-37" alt="Full Sonisto logo with custom-designed typography, representing the audio plugin management platform." />															</div>
1951				<div class="elementor-element elementor-element-1e9a937 elementor-widget__width-initial elementor-widget elementor-widget-text-editor" data-id="1e9a937" data-element_type="widget" data-widget_type="text-editor.default">
1952									The constant challenge of installing, updating and maintaining a professional music production system is what sparked the idea for SONISTO.								</div>
1953				</div>
1954		<div class="elementor-element elementor-element-39e95b2 e-con-full e-flex e-con e-child" data-id="39e95b2" data-element_type="container">
1955				<div class="elementor-element elementor-element-67b2233 elementor-widget elementor-widget-heading" data-id="67b2233" data-element_type="widget" data-widget_type="heading.default">
1956					<h2 class="elementor-heading-title elementor-size-default">FOLLOW</h2>				</div>
1957				<div class="elementor-element elementor-element-112fdbd elementor-shape-circle e-grid-align-left elementor-grid-0 elementor-widget elementor-widget-social-icons" data-id="112fdbd" data-element_type="widget" data-widget_type="social-icons.default">
1958							<div class="elementor-social-icons-wrapper elementor-grid" role="list">
1959							<span class="elementor-grid-item" role="listitem">
1960					<a class="elementor-icon elementor-social-icon elementor-social-icon-instagram elementor-repeater-item-b540eb5" href="https://www.instagram.com/sonisto_official/" target="_blank">
1961						<span class="elementor-screen-only">Instagram</span>
1962						<svg class="e-font-icon-svg e-fab-instagram" viewBox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg>					</a>
1963				</span>
1964							<span class="elementor-grid-item" role="listitem">
1965					<a class="elementor-icon elementor-social-icon elementor-social-icon-facebook elementor-repeater-item-0a50693" href="https://www.facebook.com/Sonistoofficial/" target="_blank">
1966						<span class="elementor-screen-only">Facebook</span>
1967						<svg class="e-font-icon-svg e-fab-facebook" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z"></path></svg>					</a>
1968				</span>
1969							<span class="elementor-grid-item" role="listitem">
1970					<a class="elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-7de9338" href="https://www.youtube.com/@sonisto" target="_blank">
1971						<span class="elementor-screen-only">Youtube</span>
1972						<svg class="e-font-icon-svg e-fab-youtube" viewBox="0 0 576 512" xmlns="http://www.w3.org/2000/svg"><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg>					</a>
1973				</span>
1974					</div>
1975						</div>
1976				</div>
1977		<div class="elementor-element elementor-element-a9547bf e-con-full e-flex e-con e-child" data-id="a9547bf" data-element_type="container">
1978				<div class="elementor-element elementor-element-1bdf67c elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile elementor-widget elementor-widget-heading" data-id="1bdf67c" data-element_type="widget" data-widget_type="heading.default">
1979					<h2 class="elementor-heading-title elementor-size-default">JOIN THE NEWSLETTER</h2>				</div>
1980				<div class="elementor-element elementor-element-2888f34 elementor-widget elementor-widget-html" data-id="2888f34" data-element_type="widget" data-widget_type="html.default">
1981					<div class="klaviyo-form-Ty4QXY"></div>				</div>
1982		<div class="elementor-element elementor-element-fc39a61 e-con-full elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile elementor-hidden-laptop e-flex e-con e-child" data-id="fc39a61" data-element_type="container">
1983				<div class="elementor-element elementor-element-8a520b4 elementor-button-align-stretch elementor-widget elementor-widget-form" data-id="8a520b4" data-element_type="widget" data-settings="{&quot;button_width&quot;:&quot;25&quot;,&quot;button_width_mobile&quot;:&quot;30&quot;,&quot;step_next_label&quot;:&quot;Next&quot;,&quot;step_previous_label&quot;:&quot;Previous&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}" data-widget_type="form.default">
1984							<form class="elementor-form" method="post" name="New Form" aria-label="New Form">
1985			<input type="hidden" name="post_id" value="280"/>
1986			<input type="hidden" name="form_id" value="8a520b4"/>
1987			<input type="hidden" name="referer_title" value="Sonisto Pricing | Compare Audio Plugin Membership Plans | sonisto.com" />
1988
1989							<input type="hidden" name="queried_id" value="1423"/>
1990			
1991			<div class="ele-extensions-hide-form elementor-form-fields-wrapper elementor-labels-">
1992								<div class="elementor-field-type-email elementor-field-group elementor-column elementor-field-group-name elementor-col-75 elementor-sm-70">
1993													<input size="1" type="email" name="form_fields[name]" id="form-field-name" class="elementor-field elementor-size-sm  elementor-field-textual" placeholder="Enter Email">
1994											</div>
1995								<div class="elementor-field-group elementor-column elementor-field-type-submit elementor-col-25 e-form__buttons elementor-sm-30">
1996					<button class="elementor-button elementor-size-sm" type="submit">
1997						<span class="elementor-button-content-wrapper">
1998																						<span class="elementor-button-text">Subscribe</span>
1999													</span>
2000					</button>
2001				</div>
2002			</div>
2003		</form>
2004						</div>
2005				</div>
2006				</div>
2007				</div>
2008		<div class="elementor-element elementor-element-1c47205 e-con-full e-flex e-con e-child" data-id="1c47205" data-element_type="container">
2009		<div class="elementor-element elementor-element-11646c4 e-con-full e-flex e-con e-child" data-id="11646c4" data-element_type="container">
2010				<div class="elementor-element elementor-element-10cec8b elementor-widget elementor-widget-heading" data-id="10cec8b" data-element_type="widget" data-widget_type="heading.default">
2011					<h2 class="elementor-heading-title elementor-size-default">PAGES</h2>				</div>
2012		<div class="elementor-element elementor-element-c59c656 e-con-full e-flex e-con e-child" data-id="c59c656" data-element_type="container">
2013				<div class="elementor-element elementor-element-962cc44 elementor-widget elementor-widget-button" data-id="962cc44" data-element_type="widget" data-widget_type="button.default">
2014										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://sonisto.com">
2015						<span class="elementor-button-content-wrapper">
2016									<span class="elementor-button-text">Home</span>
2017					</span>
2018					</a>
2019								</div>
2020				<div class="elementor-element elementor-element-b3aa031 elementor-widget elementor-widget-button" data-id="b3aa031" data-element_type="widget" data-widget_type="button.default">
2021										<a class="elementor-button elementor-button-link elementor-size-sm" href="/desktop-app">
2022						<span class="elementor-button-content-wrapper">
2023									<span class="elementor-button-text">Desktop App</span>
2024					</span>
2025					</a>
2026								</div>
2027				<div class="elementor-element elementor-element-df370df elementor-widget elementor-widget-button" data-id="df370df" data-element_type="widget" data-widget_type="button.default">
2028										<a class="elementor-button elementor-button-link elementor-size-sm" href="/freeware">
2029						<span class="elementor-button-content-wrapper">
2030									<span class="elementor-button-text">Freeware</span>
2031					</span>
2032					</a>
2033								</div>
2034				<div class="elementor-element elementor-element-50c5095 elementor-widget elementor-widget-button" data-id="50c5095" data-element_type="widget" data-widget_type="button.default">
2035										<a class="elementor-button elementor-button-link elementor-size-sm" href="/pricing">
2036						<span class="elementor-button-content-wrapper">
2037									<span class="elementor-button-text">Pricing</span>
2038					</span>
2039					</a>
2040								</div>
2041				</div>
2042				</div>
2043		<div class="elementor-element elementor-element-e29a87c e-con-full e-flex e-con e-child" data-id="e29a87c" data-element_type="container">
2044				<div class="elementor-element elementor-element-9f91670 elementor-widget elementor-widget-heading" data-id="9f91670" data-element_type="widget" data-widget_type="heading.default">
2045					<h2 class="elementor-heading-title elementor-size-default">shop</h2>				</div>
2046		<div class="elementor-element elementor-element-ed20fe3 e-con-full e-flex e-con e-child" data-id="ed20fe3" data-element_type="container">
2047				<div class="elementor-element elementor-element-8a1b9ed elementor-widget elementor-widget-button" data-id="8a1b9ed" data-element_type="widget" data-widget_type="button.default">
2048										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://shop.sonisto.com/products">
2049						<span class="elementor-button-content-wrapper">
2050									<span class="elementor-button-text">Find Plugins</span>
2051					</span>
2052					</a>
2053								</div>
2054				<div class="elementor-element elementor-element-18b1d6f elementor-widget elementor-widget-button" data-id="18b1d6f" data-element_type="widget" data-widget_type="button.default">
2055										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://shop.sonisto.com/products?discounted=true">
2056						<span class="elementor-button-content-wrapper">
2057									<span class="elementor-button-text">Deals</span>
2058					</span>
2059					</a>
2060								</div>
2061				<div class="elementor-element elementor-element-6925d5f elementor-widget elementor-widget-button" data-id="6925d5f" data-element_type="widget" data-widget_type="button.default">
2062										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://shop.sonisto.com/brands">
2063						<span class="elementor-button-content-wrapper">
2064									<span class="elementor-button-text">Brands</span>
2065					</span>
2066					</a>
2067								</div>
2068				<div class="elementor-element elementor-element-a7ae623 elementor-widget elementor-widget-button" data-id="a7ae623" data-element_type="widget" data-widget_type="button.default">
2069										<a class="elementor-button elementor-button-link elementor-size-sm" href="https://shop.sonisto.com/explore">
2070						<span class="elementor-button-content-wrapper">
2071									<span class="elementor-button-text">Explore</span>
2072					</span>
2073					</a>
2074								</div>
2075				</div>
2076				</div>
2077		<div class="elementor-element elementor-element-53dfb2c e-con-full e-flex e-con e-child" data-id="53dfb2c" data-element_type="container">
2078				<div class="elementor-element elementor-element-2870ba5 elementor-widget elementor-widget-heading" data-id="2870ba5" data-element_type="widget" data-widget_type="heading.default">
2079					<h2 class="elementor-heading-title elementor-size-default">about</h2>				</div>
2080		<div class="elementor-element elementor-element-4de48cf e-con-full e-flex e-con e-child" data-id="4de48cf" data-element_type="container">
2081				<div class="elementor-element elementor-element-aec4ab7 elementor-widget elementor-widget-button" data-id="aec4ab7" data-element_type="widget" data-widget_type="button.default">
2082										<a class="elementor-button elementor-button-link elementor-size-sm" href="/about">
2083						<span class="elementor-button-content-wrapper">
2084									<span class="elementor-button-text">Story of Sonisto</span>
2085					</span>
2086					</a>
2087								</div>
2088				<div class="elementor-element elementor-element-b4a422a elementor-widget elementor-widget-button" data-id="b4a422a" data-element_type="widget" data-widget_type="button.default">
2089										<a class="elementor-button elementor-button-link elementor-size-sm" href="/faq">
2090						<span class="elementor-button-content-wrapper">
2091									<span class="elementor-button-text">Support &amp; FAQ</span>
2092					</span>
2093					</a>
2094								</div>
2095				<div class="elementor-element elementor-element-35c66e6 elementor-widget elementor-widget-button" data-id="35c66e6" data-element_type="widget" data-widget_type="button.default">
2096										<a class="elementor-button elementor-button-link elementor-size-sm" href="/contact">
2097						<span class="elementor-button-content-wrapper">
2098									<span class="elementor-button-text">Contact</span>
2099					</span>
2100					</a>
2101								</div>
2102				<div class="elementor-element elementor-element-3c84491 elementor-widget elementor-widget-button" data-id="3c84491" data-element_type="widget" data-widget_type="button.default">
2103										<a class="elementor-button elementor-button-link elementor-size-sm" href="/terms">
2104						<span class="elementor-button-content-wrapper">
2105									<span class="elementor-button-text">Terms of Use</span>
2106					</span>
2107					</a>
2108								</div>
2109				</div>
2110				</div>
2111				</div>
2112				</div>
2113		<div class="elementor-element elementor-element-43038e1 e-con-full e-flex e-con e-child" data-id="43038e1" data-element_type="container">
2114				<div class="elementor-element elementor-element-28b5852 elementor-widget elementor-widget-text-editor" data-id="28b5852" data-element_type="widget" data-widget_type="text-editor.default">
2115									<p>© Sonisto. All rights reserved.</p>								</div>
2116				<div class="elementor-element elementor-element-7c8770d elementor-widget elementor-widget-text-editor" data-id="7c8770d" data-element_type="widget" data-widget_type="text-editor.default">
2117									<p><a href="https://sonisto.com/privacy-policy/">Cookies &amp; Privacy Policy</a></p>								</div>
2118				</div>
2119				</div>
2120				</footer>
2121		
2122<script type="speculationrules">
2123{"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/hello-elementor/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
2124</script>
2124
2125		<div data-elementor-type="popup" data-elementor-id="890" class="elementor elementor-890 elementor-location-popup" data-elementor-settings="{&quot;classes&quot;:&quot;blur&quot;,&quot;a11y_navigation&quot;:&quot;yes&quot;,&quot;triggers&quot;:[],&quot;timing&quot;:[]}" data-elementor-post-type="elementor_library">
2126			<div class="elementor-element elementor-element-b7d706b blur e-flex e-con-boxed e-con e-parent" data-id="b7d706b" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
2127					<div class="e-con-inner">
2128		<div class="elementor-element elementor-element-dab02a0 e-con-full e-flex e-con e-child" data-id="dab02a0" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
2129				<div class="elementor-element elementor-element-536bb0e elementor-nav-menu__align-center elementor-nav-menu--dropdown-none elementor-widget elementor-widget-nav-menu" data-id="536bb0e" data-element_type="widget" data-settings="{&quot;layout&quot;:&quot;vertical&quot;,&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&lt;svg class=\&quot;e-font-icon-svg e-fas-caret-down\&quot;
2129 viewBox=\&quot;0 0 320 512\&quot; xmlns=\&quot;http:\/\/www.w3.org\/2000\/svg\&quot;&gt;&lt;path d=\&quot;M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\&quot;&gt;&lt;\/path&gt;&lt;\/svg&gt;&quot;,&quot;library&quot;:&quot;fa-solid&quot;}}" data-widget_type="nav-menu.default">
2130								<nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-vertical e--pointer-background e--animation-fade">
2131				<ul id="menu-1-536bb0e" class="elementor-nav-menu sm-vertical"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-486"><a href="https://sonisto.com/desktop-app/" class="elementor-item">Desktop App</a></li>
2132<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-487"><a href="https://sonisto.com/freeware/" class="elementor-item">Free Plugins</a></li>
2133<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1423 current_page_item menu-item-1458"><a href="https://sonisto.com/pricing/" aria-current="page" class="elementor-item elementor-item-active">Pricing</a></li>
2134<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1579"><a href="https://sonisto.com/faq/" class="elementor-item">FAQ</a></li>
2135</ul>			</nav>
2136						<nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true">
2137				<ul id="menu-2-536bb0e" class="elementor-nav-menu sm-vertical"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-486"><a href="https://sonisto.com/desktop-app/" class="elementor-item" tabindex="-1">Desktop App</a></li>
2138<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-487"><a href="https://sonisto.com/freeware/" class="elementor-item" tabindex="-1">Free Plugins</a></li>
2139<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1423 current_page_item menu-item-1458"><a href="https://sonisto.com/pricing/" aria-current="page" class="elementor-item elementor-item-active" tabindex="-1">Pricing</a></li>
2140<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1579"><a href="https://sonisto.com/faq/" class="elementor-item" tabindex="-1">FAQ</a></li>
2141</ul>			</nav>
2142						</div>
2143				<div class="elementor-element elementor-element-718a594 elementor-mobile-align-justify elementor-widget elementor-widget-button" data-id="718a594" data-element_type="widget" data-widget_type="button.default">
2144										<a class="elementor-button elementor-button-link elementor-size-sm" href="#">
2145						<span class="elementor-button-content-wrapper">
2146									<span class="elementor-button-text">Visit Shop</span>
2147					</span>
2148					</a>
2149								</div>
2150				</div>
2151					</div>
2152				</div>
2153				</div>
2154					
2154<script>
2155				const lazyloadRunObserver = () => {
2156					const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
2157					const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
2158						entries.forEach( ( entry ) => {
2159							if ( entry.isIntersecting ) {
2160								let lazyloadBackground = entry.target;
2161								if( lazyloadBackground ) {
2162									lazyloadBackground.classList.add( 'e-lazyloaded' );
2163								}
2164								lazyloadBackgroundObserver.unobserve( entry.target );
2165							}
2166						});
2167					}, { rootMargin: '200px 0px 200px 0px' } );
2168					lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
2169						lazyloadBackgroundObserver.observe( lazyloadBackground );
2170					} );
2171				};
2172				const events = [
2173					'DOMContentLoaded',
2174					'elementor/lazyload/observe',
2175				];
2176				events.forEach( ( event ) => {
2177					document.addEventListener( event, lazyloadRunObserver );
2178				} );
2179			</script>
2179
2180			
2180<script id="jquery-ui-core-js-before">
2181jQuery.uiBackCompat = true;
2182//# sourceURL=jquery-ui-core-js-before
2183</script>
vendor: 1 bytes, line 2183
2183
2184<script id="jquery-ui-core-js" src="https://sonisto.com/wp-includes/js/jquery/ui/core.min.js?ver=1.14.2"></script>
vendor: 1 bytes, line 2184
2184
2185<script id="qi-addons-for-elementor-script-js-extra">
2186var qodefQiAddonsGlobal = {"vars":{"adminBarHeight":0,"iconArrowLeft":"\u003Csvg  xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 34.2 32.3\" xml:space=\"preserve\" style=\"stroke-width: 2;\"\u003E\u003Cline x1=\"0.5\" y1=\"16\" x2=\"33.5\" y2=\"16\"/\u003E\u003Cline x1=\"0.3\" y1=\"16.5\" x2=\"16.2\" y2=\"0.7\"/\u003E\u003Cline x1=\"0\" y1=\"15.4\" x2=\"16.2\" y2=\"31.6\"/\u003E\u003C/svg\u003E","iconArrowRight":"\u003Csvg  xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 34.2 32.3\" xml:space=\"preserve\" style=\"stroke-width: 2;\"\u003E\u003Cline x1=\"0\" y1=\"16\" x2=\"33\" y2=\"16\"/\u003E\u003Cline x1=\"17.3\" y1=\"0.7\" x2=\"33.2\" y2=\"16.5\"/\u003E\u003Cline x1=\"17.3\" y1=\"31.6\" x2=\"33.5\" y2=\"15.4\"/\u003E\u003C/svg\u003E","iconClose":"\u003Csvg  xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 9.1 9.1\" xml:space=\"preserve\"\u003E\u003Cg\u003E\u003Cpath d=\"M8.5,0L9,0.6L5.1,4.5L9,8.5L8.5,9L4.5,5.1L0.6,9L0,8.5L4,4.5L0,0.6L0.6,0L4.5,4L8.5,0z\"/\u003E\u003C/g\u003E\u003C/svg\u003E"}};
2187//# sourceURL=qi-addons-for-elementor-script-js-extra
2188</script>
vendor: 1 bytes, line 2188
2188
2189<script id="qi-addons-for-elementor-script-js" src="https://sonisto.com/wp-content/plugins/qi-addons-for-elementor/assets/js/main.min.js?ver=1.9.5"></script>
vendor: 1 bytes, line 2189
2189
2190<script id="hello-theme-frontend-js" src="https://sonisto.com/wp-content/themes/hello-elementor/assets/js/hello-frontend.js?ver=3.4.4"></script>
vendor: 1 bytes, line 2190
2190
2191<script id="instant-page-js" src="https://sonisto.com/wp-content/plugins/elementor-pro/assets//lib/instant-page/instant-page.min.js?ver=3.31.3"></script>
vendor: 1 bytes, line 2191
2191
2192<script id="smartmenus-js" src="https://sonisto.com/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js?ver=1.2.1"></script>
vendor: 1 bytes, line 2192
2192
2193<script id="elementor-webpack-runtime-js" src="https://sonisto.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.31.5"></script>
vendor: 1 bytes, line 2193
2193
2194<script id="elementor-frontend-modules-js" src="https://sonisto.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.31.5"></script>
vendor: 1 bytes, line 2194
2194
2195<script id="elementor-frontend-js-before">
2196var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":true},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":true},"version":"3.31.5","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"container":true,"e_optimized_markup":true,"theme_builder_v2":true,"hello-theme-header-footer":true,"nested-elements":true,"e_element_cache":true,"home_screen":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"cloud-library":true,"e_opt_in_v4_page":true,"mega-menu":true},"urls":{"assets":"https:\/\/sonisto.com\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/sonisto.com\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/sonisto.com\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"31bf9418c1"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet","viewport_laptop"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description","hello_header_logo_type":"title","hello_header_menu_layout":"horizontal","hello_footer_logo_type":"logo"},"post":{"id":1423,"title":"Sonisto%20Pricing%20%7C%20Compare%20Audio%20Plugin%20Membership%20Plans%20%7C%20sonisto.com","excerpt":"","featuredImage":"https:\/\/sonisto.com\/wp-content\/uploads\/2025\/09\/SONISTO_ICON_S_V1_01-1.svg"}};
2197//# sourceURL=elementor-frontend-js-before
2198</script>
vendor: 1 bytes, line 2198
2198
2199<script id="elementor-frontend-js" src="https://sonisto.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.31.5"></script>
vendor: 1 bytes, line 2199
2199
2200<script id="eef-frontend-script-js" src="https://sonisto.com/wp-content/plugins/extensions-for-elementor-form/assets/js/frontend-scripts.min.js?ver=2.5.4"></script>
vendor: 1 bytes, line 2200
2200
2201<script id="wp-hooks-js" src="https://sonisto.com/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255"></script>
vendor: 1 bytes, line 2201
2201
2202<script id="wp-i18n-js" src="https://sonisto.com/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216"></script>
vendor: 1 bytes, line 2202
2202
2203<script id="wp-i18n-js-after">
2204wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
2205//# sourceURL=wp-i18n-js-after
2206</script>
vendor: 1 bytes, line 2206
2206
2207<script id="qi-addons-for-elementor-elementor-js" src="https://sonisto.com/wp-content/plugins/qi-addons-for-elementor/inc/plugins/elementor/assets/js/elementor.js?ver=7.1.3"></script>
vendor: 1 bytes, line 2207
2207
2208<script id="elementor-pro-webpack-runtime-js" src="https://sonisto.com/wp-content/plugins/elementor-pro/assets/js/webpack-pro.runtime.min.js?ver=3.31.3"></script>
vendor: 1 bytes, line 2208
2208
2209<script id="elementor-pro-frontend-js-before">
2210var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/sonisto.com\/wp-admin\/admin-ajax.php","nonce":"f47548db1a","urls":{"assets":"https:\/\/sonisto.com\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/sonisto.com\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":true},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}},"facebook_sdk":{"lang":"en_US","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/sonisto.com\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}};
2211//# sourceURL=elementor-pro-frontend-js-before
2212</script>
vendor: 1 bytes, line 2212
2212
2213<script id="elementor-pro-frontend-js" src="https://sonisto.com/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=3.31.3"></script>
vendor: 1 bytes, line 2213
2213
2214<script id="pro-elements-handlers-js" src="https://sonisto.com/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=3.31.3"></script>
vendor: 1 bytes, line 2214
2214
2215<script id="wp-emoji-settings" type="application/json">
2216{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://sonisto.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.3"}}
2217</script>
vendor: 1 bytes, line 2217
2217
2218<script type="module">
2219/*! This file is auto-generated */
2220var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
2221//# sourceURL=https://sonisto.com/wp-includes/js/wp-emoji-loader.min.js
2222</script>
vendor: 1 bytes, line 2222
2222
2223<script type="text/javascript" async="" src="https://static.klaviyo.com/onsite/js/R6xaK3/klaviyo.js"></script>
vendor: 1 bytes, line 2223
2223
2224<script>
2225document.addEventListener("DOMContentLoaded", () => {
2226  const overlay = document.getElementById("sonistoTransitionDots");
2227  const dots = Array.from(document.querySelectorAll(".sonisto-tdots-dot"));
2228  if (!overlay || dots.length === 0) return;
2229
2230  // Hide overlay on initial load (and after bfcache restores)
2231  function hideOverlay(){
2232    overlay.classList.remove("is-on");
2233    dots.forEach(d => d.classList.remove("is-active"));
2234  }
2235  hideOverlay();
2236
2237  window.addEventListener("pageshow", () => {
2238    hideOverlay();
2239  });
2240
2241  // Animate active dot while overlay is visible
2242  let raf = null;
2243  let start = 0;
2244
2245  function startDotSpin(){
2246    cancelAnimationFrame(raf);
2247    start = performance.now();
2248
2249    const tick = (t) => {
2250      const elapsed = t - start;
2251      // advance dot about every 90ms (tweak)
2252      const idx = Math.floor(elapsed / 90) % dots.length;
2253
2254      dots.forEach(d => d.classList.remove("is-active"));
2255      dots[idx].classList.add("is-active");
2256
2257      raf = requestAnimationFrame(tick);
2258    };
2259
2260    raf = requestAnimationFrame(tick);
2261  }
2262
2263  function showOverlay(){
2264    overlay.classList.add("is-on");
2265    startDotSpin();
2266  }
2267
2268  // Intercept internal navigations and show overlay immediately
2269  document.addEventListener("click", (e) => {
2270    const a = e.target.closest("a");
2271    if (!a) return;
2272
2273    // ignore new tab, downloads, external, anchors, tel/mailto
2274    if (a.target === "_blank") return;
2275    if (a.hasAttribute("download")) return;
2276
2277    const href = (a.getAttribute("href") || "").trim();
2278    if (!href) return;
2279    if (href.startsWith("#")) return;
2280    if (href.startsWith("mailto:") || href.startsWith("tel:")) return;
2281
2282    // same-page hash nav only
2283    try {
2284      const url = new URL(a.href, window.location.href);
2285      if (url.origin !== window.location.origin) return;
2286      if (url.pathname === location.pathname && url.search === location.search && url.hash) return;
2287    } catch (_) {
2288      return;
2289    }
2290
2291    showOverlay();
2292    // Let the browser navigate normally.
2293  }, true);
2294});
2295</script>
2295
2296
2297<style>
2298.sonisto-solid-glow .elementor-button {
2299  position: relative;
2300  isolation: isolate;
2301  overflow: visible;
2302  background: transparent !important;
2303  border: 1px solid transparent !important;
2304  color: #101615 !important;
2305  box-shadow: none !important;
2306}
2307
2308.sonisto-solid-glow,
2309.sonisto-solid-glow .elementor-button,
2310.sonisto-solid-glow .elementor-button-content-wrapper {
2311  transform: none !important;
2312  animation: none !important;
2313}
2314
2315/* Original yellow surface and subtle expansion */
2316.sonisto-solid-glow .elementor-button::before {
2317  content: "";
2318  position: absolute;
2319  inset: -1px;
2320  z-index: -1;
2321  box-sizing: border-box;
2322  border: 1px solid rgba(255, 233, 170, 0.35);
2323  border-radius: inherit;
2324  background: #F2D482;
2325  pointer-events: none;
2326
2327  transition:
2328    inset 400ms ease,
2329    background-color 400ms ease,
2330    box-shadow 500ms ease;
2331}
2332
2333.sonisto-solid-glow .elementor-button-icon {
2334  color: #101615 !important;
2335}
2336
2337.sonisto-solid-glow .elementor-button-icon svg {
2338  fill: currentColor;
2339}
2340
2341/* Text roll — preserves the existing text dimensions */
2342.sonisto-solid-glow .elementor-button-text {
2343  position: relative;
2344  display: block;
2345  overflow: hidden;
2346}
2347
2348.sonisto-solid-glow .sonisto-roll-label {
2349  display: block;
2350  transform: translateY(0);
2351  transition: transform 450ms cubic-bezier(.65, 0, 0, 1);
2352}
2353
2354.sonisto-solid-glow .sonisto-roll-label--copy {
2355  position: absolute;
2356  top: 100%;
2357  left: 0;
2358  width: 100%;
2359}
2360
2361/* Hover */
2362@media (hover: hover) {
2363  .sonisto-solid-glow .elementor-button:hover::before {
2364    inset: -2px -4px;
2365    background: #F7DC96;
2366    box-shadow:
2367      0 0 16px rgba(242, 212, 130, 0.25),
2368      0 0 36px rgba(242, 212, 130, 0.14);
2369  }
2370
2371  .sonisto-solid-glow .elementor-button:hover .sonisto-roll-label {
2372    transform: translateY(-100%);
2373  }
2374}
2375
2376/* Keyboard focus */
2377.sonisto-solid-glow .elementor-button:focus-visible {
2378  outline: 2px solid #F2D482;
2379  outline-offset: 5px;
2380}
2381
2382.sonisto-solid-glow .elementor-button:focus-visible::before {
2383  box-shadow:
2384    0 0 16px rgba(242, 212, 130, 0.25),
2385    0 0 36px rgba(242, 212, 130, 0.14);
2386}
2387
2388.sonisto-solid-glow .elementor-button:focus-visible .sonisto-roll-label {
2389  transform: translateY(-100%);
2390}
2391
2392/* Reduced motion */
2393@media (prefers-reduced-motion: reduce) {
2394  .sonisto-solid-glow .elementor-button::before,
2395  .sonisto-solid-glow .sonisto-roll-label {
2396    transition: none;
2397  }
2398
2399  .sonisto-solid-glow .elementor-button:hover::before {
2400    inset: -1px;
2401  }
2402
2403  .sonisto-solid-glow .elementor-button .sonisto-roll-label {
2404    transform: none !important;
2405  }
2406}
2407
2408/* Preserve the existing text area height */
2409.sonisto-solid-glow .elementor-button-text {
2410  height: 1lh;
2411  align-self: center;
2412}
2413
2414/* Centre a tighter rolling window inside it */
2415.sonisto-solid-glow .sonisto-roll-window {
2416  position: relative;
2417  display: block;
2418  overflow: hidden;
2419  line-height: 1.05;
2420  top: 50%;
2421  transform: translateY(-50%);
2422}
2423
2424.sonisto-solid-glow .sonisto-roll-label {
2425  line-height: 1.05;
2426}
2427</style>
2428
2429<script>
2430(() => {
2431  function initialize() {
2432    document.querySelectorAll(
2433      ".sonisto-solid-glow .elementor-button-text"
2434    ).forEach((label) => {
2435      if (label.querySelector(".sonisto-roll-window")) return;
2436
2437      const existing = label.querySelector(
2438        ".sonisto-roll-label, .sonisto-roll-line"
2439      );
2440      const text = (existing || label).textContent.trim();
2441      if (!text) return;
2442
2443      const window = document.createElement("span");
2444      window.className = "sonisto-roll-window";
2445
2446      const original = document.createElement("span");
2447      original.className = "sonisto-roll-label";
2448      original.textContent = text;
2449
2450      const copy = original.cloneNode(true);
2451      copy.classList.add("sonisto-roll-label--copy");
2452      copy.setAttribute("aria-hidden", "true");
2453
2454      window.append(original, copy);
2455      label.replaceChildren(window);
2456    });
2457  }
2458
2459  if (document.readyState === "loading") {
2460    document.addEventListener("DOMContentLoaded", initialize);
2461  } else {
2462    initialize();
2463  }
2464})();
2465</script>
2465
2466
2467<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":"fd383dc15c734bc7b6ca188ae4f62558","r":1,"spa":2}' crossorigin="anonymous"></script>
2467
2468</body>
2469</html>
2470
2471<!-- Cache served by breeze CACHE (Desktop) - Last modified: Tue, 06 Oct 2026 17:43:24 GMT -->

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.