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 » Feed" href="https://sonisto.com/feed/" /> 33<link rel="alternate" type="application/rss+xml" title="sonisto.com » 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&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="{"position":"fixed"}"> 251 <div class="elementor-element elementor-element-179ec0b elementor-widget elementor-widget-off-canvas" data-id="179ec0b" data-element_type="widget" data-settings="{"prevent_scroll":"yes"}" 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="{"background_background":"classic","animation_mobile":"none"}"> 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="{"background_background":"classic"}"> 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="{"background_background":"classic"}"> 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="{"layout":"vertical","submenu_icon":{"value":"<svg class=\"e-font-icon-svg e-fas-caret-down\"
260 viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"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\"><\/path><\/svg>","library":"fa-solid"}}" 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="{"background_background":"classic"}"> 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="{"background_background":"classic"}"> 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="{"layout":"horizontal","submenu_icon":{"value":"<svg class=\"e-font-icon-svg e-fas-caret-down\" viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"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\"><\/path><\/svg>","library":"fa-solid"},"toggle":"burger"}" 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="{"button_width":"25","button_width_mobile":"30","step_next_label":"Next","step_previous_label":"Previous","step_type":"number_text","step_icon_shape":"circle"}" 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 & 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 & 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="{"classes":"blur","a11y_navigation":"yes","triggers":[],"timing":[]}" 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="{"background_background":"classic"}"> 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="{"background_background":"classic"}"> 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="{"layout":"vertical","submenu_icon":{"value":"<svg class=\"e-font-icon-svg e-fas-caret-down\"
2129 viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"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\"><\/path><\/svg>","library":"fa-solid"}}" 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.