1<!doctype html> 2<html lang="en" class="no-js"> 3 4<head> 5 <meta charset="utf-8"> 6 7<!-- begin _includes/seo.html --> 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45<title>Best practices for Building and Growing API Platforms | Moesif Blog</title> 46<meta name="description" content="Guides and Best Practices for Building and Growing API Businesses."> 47 48 49 50 51 52<meta property="og:type" content="website"> 53<meta property="og:locale" content="en_US"> 54<meta property="og:site_name" content="Best practices for Building and Growing API Platforms | Moesif Blog"> 55<meta property="og:title" content="Best practices for Building and Growing API Platforms"> 56<meta property="og:url" content="https://www.moesif.com/blog/"> 57 58 59 <meta property="og:description" content="Guides and Best Practices for Building and Growing API Businesses."> 60 <meta name="description" cotent="Guides and Best Practices for Building and Growing API Businesses."/> 61 62 63 64 65 <meta name="twitter:site" content="@MoesifHQ"> 66 <meta name="twitter:title" content="Best practices for Building and Growing API Platforms"> 67 <meta name="twitter:description" content="Guides and Best Practices for Building and Growing API Businesses."> 68 <meta name="twitter:url" content="https://www.moesif.com/blog/"> 69 70 71 <meta name="twitter:card" content="summary_large_image"> 72 73 <meta name="twitter:image" content="https://blog.moesif.com/images/og_image-blog.png"> 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 <meta property="fb:app_id" content="232433703771289"> 89 90 91 92 93 <meta property="og:image" content="https://blog.moesif.com/images/og_image-blog.png"> 94 95 96 97<link rel="canonical" href="https://www.moesif.com/blog/"> 98 99 100 101 <link rel="next" href="https://www.moesif.com/blog/page2/"> 102 103 104 105
105<script type="application/ld+json"> 106 { 107 "@context": "https://schema.org", 108 "@type": "Organization", 109 "url": "https://www.moesif.com", 110 "name" : "Moesif", 111 "description": "Guides and Best Practices for Building and Growing API Businesses.", 112 "email": "[email protected]", 113 "legalName" : "Moesif, Inc", 114 "contactPoint": [{ 115 "@type": "ContactPoint", 116 "email": "[email protected]", 117 "contactType": "customer service", 118 "telephone": "+1-415-851-9835" 119 }], 120 "logo": "https://blog.moesif.com/images/og_image-blog.png", 121 "sameAs": [ 122 123 124 125 ], 126 "address": { 127 "@type": "PostalAddress", 128 "streetAddress": "77 Van Ness Ave STE 101-1513", 129 "addressLocality": " San Francisco", 130 "addressRegion": " California", 131 "postOfficeBoxNumber": 94102 132 } 133 } 134 </script>
134 135 136 137 138 139 140 141 142<!-- end _includes/seo.html --> 143 144 145<meta name="apple-itunes-app" content="app-id=1545437670" /> 146 147<link href="/blog/feed.xml" type="application/atom+xml" rel="alternate" title="Moesif Blog Feed" /> 148 149<link rel="preconnect" href="https://px.ads.linkedin.com" /> 150<link rel="preconnect" href="https://forms.hsforms.com" /> 151<link rel="preconnect" href="https://www.google-analytics.com" /> 152<link rel="preconnect" href="https://fonts.gstatic.com" /> 153<link rel="preconnect" href="https://www.googleadservices.com" /> 154<link rel="preconnect" href="https://www.googletagmanager.com" /> 155<link rel="preconnect" href="https://pubads.g.doubleclick.net" /> 156<link rel="preconnect" href="https://snap.licdn.com" /> 157<link rel="preconnect" href="https://t.co" /> 158<!-- https://t.co/dKP3o1e --> 159 160<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap"> 161<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Iceland&display=swap"> 162 163<meta name="viewport" content="width=device-width, initial-scale=1.0"> 164
165<script> 166 document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; 167</script>
vendor: 1 bytes, line 167
167
168<script> 169 /*! lazysizes - v5.2.0 */ 170!function(a,b){var c=b(a,a.document,Date);a.lazySizes=c,"object"==typeof module&&module.exports&&(module.exports=c)}("undefined"!=typeof window?window:{},function(a,b,c){"use strict";var d,e;if(function(){var b,c={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};e=a.lazySizesConfig||a.lazysizesConfig||{};for(b in c)b in e||(e[b]=c[b])}(),!b||!b.getElementsByClassName)return{init:function(){},cfg:e,noSupport:!0};var f=b.documentElement,g=a.HTMLPictureElement,h="addEventListener",i="getAttribute",j=a[h].bind(a),k=a.setTimeout,l=a.requestAnimationFrame||k,m=a.requestIdleCallback,n=/^picture$/i,o=["load","error","lazyincluded","_lazyloaded"],p={},q=Array.prototype.forEach,r=function(a,b){return p[b]||(p[b]=new RegExp("(\\s|^)"+b+"(\\s|$)")),p[b].test(a[i]("class")||"")&&p[b]},s=function(a,b){r(a,b)||a.setAttribute("class",(a[i]("class")||"").trim()+" "+b)},t=function(a,b){var c;(c=r(a,b))&&a.setAttribute("class",(a[i]("class")||"").replace(c," "))},u=function(a,b,c){var d=c?h:"removeEventListener";c&&u(a,b),o.forEach(function(c){a[d](c,b)})},v=function(a,c,e,f,g){var h=b.createEvent("Event");return e||(e={}),e.instance=d,h.initEvent(c,!f,!g),h.detail=e,a.dispatchEvent(h),h},w=function(b,c){var d;!g&&(d=a.picturefill||e.pf)?(c&&c.src&&!b[i]("srcset")&&b.setAttribute("srcset",c.src),d({reevaluate:!0,elements:[b]})):c&&c.src&&(b.src=c.src)},x=function(a,b){return(getComputedStyle(a,null)||{})[b]},y=function(a,b,c){for(c=c||a.offsetWidth;c<e.minSize&&b&&!a._lazysizesWidth;)c=b.offsetWidth,b=b.parentNode;return c},z=function(){var a,c,d=[],e=[],f=d,g=function(){var b=f;for(f=d.length?e:d,a=!0,c=!1;b.length;)b.shift()();a=!1},h=function(d,e){a&&!e?d.apply(this,arguments):(f.push(d),c||(c=!0,(b.hidden?k:l)(g)))};return h._lsFlush=g,h}(),A=function(a,b){return b?function(){z(a)}:function(){var b=this,c=arguments;z(function(){a.apply(b,c)})}},B=function(a){var b,d=0,f=e.throttleDelay,g=e.ricTimeout,h=function(){b=!1,d=c.now(),a()},i=m&&g>49?function(){m(h,{timeout:g}),g!==e.ricTimeout&&(g=e.ricTimeout)}:A(function(){k(h)},!0);return function(a){var e;(a=!0===a)&&(g=33),b||(b=!0,e=f-(c.now()-d),e<0&&(e=0),a||e<9?i():k(i,e))}},C=function(a){var b,d,e=99,f=function(){b=null,a()},g=function(){var a=c.now()-d;a<e?k(g,e-a):(m||f)(f)};return function(){d=c.now(),b||(b=k(g,e))}},D=function(){var g,m,o,p,y,D,F,G,H,I,J,K,L=/^img$/i,M=/^iframe$/i,N="onscroll"in a&&!/(gle|ing)bot/.test(navigator.userAgent),O=0,P=0,Q=0,R=-1,S=function(a){Q--,(!a||Q<0||!a.target)&&(Q=0)},T=function(a){return null==K&&(K="hidden"==x(b.body,"visibility")),K||!("hidden"==x(a.parentNode,"visibility")&&"hidden"==x(a,"visibility"))},U=function(a,c){var d,e=a,g=T(a);for(G-=c,J+=c,H-=c,I+=c;g&&(e=e.offsetParent)&&e!=b.body&&e!=f;)(g=(x(e,"opacity")||1)>0)&&"visible"!=x(e,"overflow")&&(d=e.getBoundingClientRect(),g=I>d.left&&H<d.right&&J>d.top-1&&G<d.bottom+1);return g},V=function(){var a,c,h,j,k,l,n,o,q,r,s,t,u=d.elements;if((p=e.loadMode)&&Q<8&&(a=u.length)){for(c=0,R++;c<a;c++)if(u[c]&&!u[c]._lazyRace)if(!N||d.prematureUnveil&&d.prematureUnveil(u[c]))ba(u[c]);else if((o=u[c][i]("data-expand"))&&(l=1*o)||(l=P),r||(r=!e.expand||e.expand<1?f.clientHeight>500&&f.clientWidth>500?500:370:e.expand,d._defEx=r,s=r*e.expFactor,t=e.hFac,K=null,P<s&&Q<1&&R>2&&p>2&&!b.hidden?(P=s,R=0):P=p>1&&R>1&&Q<6?r:O),q!==l&&(D=innerWidth+l*t,F=innerHeight+l,n=-1*l,q=l),h=u[c].getBoundingClientRect(),(J=h.bottom)>=n&&(G=h.top)<=F&&(I=h.right)>=n*t&&(H=h.left)<=D&&(J||I||H||G)&&(e.loadHidden||T(u[c]))&&(m&&Q<3&&!o&&(p<3||R<4)||U(u[c],l))){if(ba(u[c]),k=!0,Q>9)break}else!k&&m&&!j&&Q<4&&R<4&&p>2&&(g[0]||e.preloadAfterLoad)&&(g[0]||!o&&(J||I||H||G||"auto"!=u[c][i](e.sizesAttr)))&&(j=g[0]||u[c]);j&&!k&&ba(j)}},W=B(V),X=function(a){var b=a.target;if(b._lazyCache)return void delete b._lazyCache;S(a),s(b,e.loadedClass),t(b,e.loadingClass),u(b,Z),v(b,"lazyloaded")},Y=A(X),Z=function(a){Y({target:a.target})},$=function(a,b){try{a.contentWindow.location.replace(b)}catch(c){a.src=b}},_=function(a){var b,c=a[i](e.srcsetAttr);(b=e.customMedia[a[i]("data-media")||a[i]("media")])&&a.setAttribute("media",b),c&&a.setAttribute("srcset",c)},aa=A(function(a,b,c,d,f){var g,h,j,l,m,p;(m=v(a,"lazybeforeunveil",b)).defaultPrevented||(d&&(c?s(a,e.autosizesClass):a.setAttribute("sizes",d)),h=a[i](e.srcsetAttr),g=a[i](e.srcAttr),f&&(j=a.parentNode,l=j&&n.test(j.nodeName||"")),p=b.firesLoad||"src"in a&&(h||g||l),m={target:a},s(a,e.loadingClass),p&&(clearTimeout(o),o=k(S,2500),u(a,Z,!0)),l&&q.call(j.getElementsByTagName("source"),_),h?a.setAttribute("srcset",h):g&&!l&&(M.test(a.nodeName)?$(a,g):a.src=g),f&&(h||l)&&w(a,{src:g})),a._lazyRace&&delete a._lazyRace,t(a,e.lazyClass),z(function(){var b=a.complete&&a.naturalWi
170dth>1;p&&!b||(b&&s(a,"ls-is-cached"),X(m),a._lazyCache=!0,k(function(){"_lazyCache"in a&&delete a._lazyCache},9)),"lazy"==a.loading&&Q--},!0)}),ba=function(a){if(!a._lazyRace){var b,c=L.test(a.nodeName),d=c&&(a[i](e.sizesAttr)||a[i]("sizes")),f="auto"==d;(!f&&m||!c||!a[i]("src")&&!a.srcset||a.complete||r(a,e.errorClass)||!r(a,e.lazyClass))&&(b=v(a,"lazyunveilread").detail,f&&E.updateElem(a,!0,a.offsetWidth),a._lazyRace=!0,Q++,aa(a,b,f,d,c))}},ca=C(function(){e.loadMode=3,W()}),da=function(){3==e.loadMode&&(e.loadMode=2),ca()},ea=function(){if(!m){if(c.now()-y<999)return void k(ea,999);m=!0,e.loadMode=3,W(),j("scroll",da,!0)}};return{_:function(){y=c.now(),d.elements=b.getElementsByClassName(e.lazyClass),g=b.getElementsByClassName(e.lazyClass+" "+e.preloadClass),j("scroll",W,!0),j("resize",W,!0),j("pageshow",function(a){if(a.persisted){var c=b.querySelectorAll("."+e.loadingClass);c.length&&c.forEach&&l(function(){c.forEach(function(a){a.complete&&ba(a)})})}}),a.MutationObserver?new MutationObserver(W).observe(f,{childList:!0,subtree:!0,attributes:!0}):(f[h]("DOMNodeInserted",W,!0),f[h]("DOMAttrModified",W,!0),setInterval(W,999)),j("hashchange",W,!0),["focus","mouseover","click","load","transitionend","animationend"].forEach(function(a){b[h](a,W,!0)}),/d$|^c/.test(b.readyState)?ea():(j("load",ea),b[h]("DOMContentLoaded",W),k(ea,2e4)),d.elements.length?(V(),z._lsFlush()):W()},checkElems:W,unveil:ba,_aLSL:da}}(),E=function(){var a,c=A(function(a,b,c,d){var e,f,g;if(a._lazysizesWidth=d,d+="px",a.setAttribute("sizes",d),n.test(b.nodeName||""))for(e=b.getElementsByTagName("source"),f=0,g=e.length;f<g;f++)e[f].setAttribute("sizes",d);c.detail.dataAttr||w(a,c.detail)}),d=function(a,b,d){var e,f=a.parentNode;f&&(d=y(a,f,d),e=v(a,"lazybeforesizes",{width:d,dataAttr:!!b}),e.defaultPrevented||(d=e.detail.width)&&d!==a._lazysizesWidth&&c(a,f,e,d))},f=function(){var b,c=a.length;if(c)for(b=0;b<c;b++)d(a[b])},g=C(f);return{_:function(){a=b.getElementsByClassName(e.autosizesClass),j("resize",g)},checkElems:g,updateElem:d}}(),F=function(){!F.i&&b.getElementsByClassName&&(F.i=!0,E._(),D._())};return k(function(){e.init&&F()}),d={cfg:e,autoSizer:E,loader:D,init:F,uP:w,aC:s,rC:t,hC:r,fire:v,gW:y,rAF:z}}); 171</script>
171 172<!-- For all browsers --> 173 174 175 <style> 176 /*! 177 * Minimal Mistakes Jekyll Theme 4.17.2 by Michael Rose 178 * Copyright 2013-2019 Michael Rose - mademistakes.com | @mmistakes 179 * Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE) 180*/.mfp-counter{font-family:Georgia,Times,serif}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#000;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none !important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:"";display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none !important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:rgba(0,0,0,0);border:0;-webkit-appearance:none;display:block;outline:none;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:1;filter:alpha(opacity=100);padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Georgia,Times,serif}.mfp-close:hover,.mfp-close:focus{opacity:1;filter:alpha(opacity=100)}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#fff}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:1;filter:alpha(opacity=100);margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1;filter:alpha(opacity=100)}.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a{content:"";display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset rgba(0,0,0,0)}.mfp-arrow:after,.mfp-arrow .mfp-a{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before,.mfp-arrow .mfp-b{border-top-width:21px;border-bottom-width:21px;opacity:.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after,.mfp-arrow-left .mfp-a{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before,.mfp-arrow-left .mfp-b{margin-left:25px;border-right:27px solid #fff}.mfp-arrow-right{right:0}.mfp-arrow-right:after,.mfp-arrow-right .mfp-a{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before,.mfp-arrow-right .mfp-b{border-left:27px solid #fff}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:"";position:absolute;
180left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-figure figcaption{margin-top:0;margin-bottom:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width: 800px)and (orientation: landscape),screen and (max-height: 300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}@media all and (max-width: 900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}button:focus,a:focus{outline:thin dotted #ff4f00;outline:5px auto #ff4f00;outline-offset:-2px}*{box-sizing:border-box}html{box-sizing:border-box;background-color:#fff;font-size:14px}@media(min-width: 48em){html{font-size:14px}}@media(min-width: 64em){html{font-size:16px}}@media(min-width: 84.375em){html{font-size:16px}}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}::-moz-selection{color:#fff;background:#000}::selection{color:#fff;background:#000}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}a{color:#ff4f00}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;width:auto\9 ;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}label,select,button,input[type=button],input[type=reset],input[type=submit],input[type=radio],input[type=checkbox]{cursor:pointer}input[type=search]{box-sizing:border-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}html{position:relative;min-height:100%}body{margin:0;padding:0;color:#212121;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;line-height:1.5}body.overflow--hidden{overflow:hidden}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{margin:1.5em 0 .5em;line-height:1.2;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500}h1[id]:before,.h1[id]:before,h2[id]:before,.h2[id]:before,h3[id]:before,.h3[id]:before,h4[id]:before,.h4[id]:before,h5[id]:before,.h5[id]:before,h6[id]:before,.h6[id]:before{content:" ";display:block;padding-top:60px;margin-top:-60px}h1,.h1{margin-top:0;font-size:1.953em}h2,.h2{font-size:1.563em}h3,.h3{font-size:1.25em}h4,.h4{font-size:1em}h5,.h5{font-size:1em}h6,.h6{font-size:1em}small,.small{font-size:.8em}p{margin-bottom:1.3em}u,ins{text-decoration:none;border-bottom:1px solid #212121}u a,ins a{color:inherit}del a{color:inherit}p,pre,blockquote,ul,ol,dl,figure,table,fieldset{orphans:3;widows:3}abbr[title],abbr[data-original-title]{text-decoration:none;cursor:help;border-bottom:1px dotted #212121}blockquote{margin:2em 1em 2em 0;padding-left:1em;padding-right:1em;font-style:italic;border-left:.25em solid #ff4f00}blockquote cite{font-style:italic}blockquote cite:before{content:"â";padding-right:5px}a:hover,a:active{color:rgb(178.5,55.3,0);outline:0}a:visited{color:rgb(178.5,55.3,0)}a:hover{color:rgb(178.5,55.3,0);outline:0}tt,code,kbd,samp,pre{font-family:Monaco,Consolas,"Lucida Console",monospace}pre{overflow-x:auto;word-wrap:break-word;white-space:-moz-pre-wrap;white-space:pre-wrap;word-break:keep-all}p>code,a>code,li>code,figcaption>code,td>code{padding-top:.1rem;padding-bottom:.1rem;font-size:.8em;background:#fafafa;border-radius:4px}p>code:before,p>code:after,a>code:before,a>code:after,li>code:before,li>code:after,figcaption>code:before,figcaption>code:after,td>code:before,td>code:after{letter-spacing:-0.2em;content:"Â "}hr{display:block;margin:1em 0;border:0;border-top:1px solid hsl(0,0%,93.5%)}ul li,ol li{margin-bottom:0}li ul,li ol{margin-top:.5em}figure{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:start;align-items:flex-start;flex-wrap:wrap;margin:2em 0}figure img,figure iframe,figure .fluid-width-video-wrapper{margin-bottom:1em}figure img{width:100%;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}figure>a{display:block}@media(min-width: 37.5em){figure.half>a,figure.half>img{width:calc(50% - .5em)}}figure.half figcaption{width:100%}@media(min-width: 37.5em){figure.third>a,figure.third>img{width:calc(33.3333% - .5em)}}figure.third figcaption{width:100%}figcaption{margin-bottom:.5em;color:#666;font-family:Georgia,Times,serif;font-size:.8em}figcaption a{-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}figcaption a:hover{color:rgb(178.5,55.3,0)}svg:not(:root){overflow:hidden}nav ul{margin:0;padding:0}nav li{list-style:none}nav a{text-decoration:none}nav ul li,nav ol li{margin-bottom:0}nav li ul,nav li ol{margin-top:0}b,i,strong,em,blockquote,p,q,span,figure,img,h1,h2,header,input,a,tr,td,form button,input[type=submit],.btn,#goog-wm-sb,.highlight,.archive__item-teaser{-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}form{margin:0 0 5px 0;padding:1em;background-color:hsl(0,0%,93.5%)}form fieldset{margin-bottom:5px;padding:0;border-width:0}form legend{display:block;width:100%;margin-bottom:10px;*margin-left:-7px;padding:0;color:#212121;border:0;white-space:normal}form p{margin-bottom:2.5px}form ul{list-style-type:none;margin:0 0 5px 0;padding:0}form br{display:none}label,input,button,select,textarea{vertical-align:baseline;*vertical-align:middle}input,button,select,textarea{box-sizing:border-box;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:.25em;color:#212121;cursor:pointer}label small{font-size:.8em}label input,label textarea,label select{display:block}input,textarea,select{display:inline-block;width:100%;padding:.25em;margin-bottom:.5em;color:#212121;background-color:#fff;border:hsl(0,0%,93.5%);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.125)}.input-mini{width:60px}.input-small{width:90px}input[type=image],input[type=checkbox],input[type=radio]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;border-radius:0;border:0 \9 }input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type=image]{border:0;box-shadow:none}input[type=file]{width:auto;padding:initial;line-height:initial;border:initial;background-color:rgba(0,0,0,0);background-color:initial;box-shadow:none}input[type=button],input[type=reset],input[type=submit]{width:auto;height:auto;cursor:pointer;*overflow:visible}select,input[type=file]{*margin-top:4px}select{width:auto;background-color:#fff}select[multiple],select[size]{height:auto}textarea{resize:vertical;height:auto;overflow:auto;vertical-align:top}input[type=hidden]{display:none}.form{position:relative}.radio,.checkbox{padding-left:18px;font-weight:normal}.radio input[type=radio],.checkbox input[type=checkbox]{float:left;margin-left:-18px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{opacity:.5;cursor:not-allowed}input:focus,textarea:focus{border-color:#ff4f00;outline:0;outline:thin dotted \9 ;box-shadow:inset 0 1px 3px rgba(33,33,33,.06),0 0 5px rgba(255,79,0,.7)}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus,select:focus{box-shadow:none}.help-block,.help-inline{color:#666}.help-block{display:block;margin-bottom:1em;line-height:1em}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.form-group{margin-bottom:5px;padding:0;border-width:0}.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;margin-bottom:0}.form-inline label{display:inline-block}.form-inline .radio,.form-inline .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:left;margin-left:0;margin-right:3px}.form-search input,.form-search textarea,.form-search select{display:inline-block;margin-bottom:0}.form-search .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;border-radius:14px}.form-search label{display:inline-block}.form-search .radio,.form-search .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type=radio],.form-search .checkbox input[type=checkbox]{float:left;margin-left:0;margin-right:3px}.form--loading:before{content:""}.form--loading .form__spinner{display:block}.form:before{position:absolute;top:0;left:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.7);z-index:10}.form__spinner{display:none;position:absolute;top:50%;left:50%;z-index:11}#goog-fixurl ul{list-style:none;margin-left:0;padding-left:0}#goog-fixurl ul li{list-style-type:none}#goog-wm-qt{width:auto;margin-right:10px;margin-bottom:20px;padding:8px 20px;display:inline-block;font-size:.8em;background-color:#fff;color:#000;border-width:2px !important;border-style:solid !important;border-color:hsl(0,0%,93.5%);border-radius:4px}table{display:block;margin-bottom:1em;width:100%;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em;border-collapse:collapse;overflow-x:auto}
180table+table{margin-top:1em}table tr:nth-child(odd)>td{background-color:hsl(0,0%,96.7%)}table tr:nth-child(even)>td{background-color:hsl(0,0%,93%)}thead{background-color:hsl(0,0%,93.5%);border-bottom:2px solid hsl(0,0%,70.125%)}th{padding:.5em;font-weight:bold;text-align:left}td{padding:.5em;border-bottom:1px solid hsl(0,0%,70.125%)}tr,td,th{vertical-align:middle}@-webkit-keyframes intro{0%{opacity:0}100%{opacity:1}}@keyframes intro{0%{opacity:0}100%{opacity:1}}.btn,#goog-wm-sb,button{display:inline-flex;margin:.25em;padding:.5em 1em;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em;font-weight:bold;text-align:center;text-decoration:none;border-width:0;border-radius:4px;cursor:pointer;line-height:1.4}.btn .icon+.hidden,#goog-wm-sb .icon+.hidden,button .icon+.hidden{margin-left:-0.5em}.btn--primary,button--primary{background-color:#ff4f00;color:#fff}.btn--primary:visited,button--primary:visited{background-color:#ff4f00;color:#fff}.btn--primary:hover,button--primary:hover{background-color:rgb(204,63.2,0);color:#fff}.btn--inverse,button--inverse{background-color:#fff;color:#212121;border:1px solid hsl(0,0%,93.5%)}.btn--inverse:visited,button--inverse:visited{background-color:#fff;color:#212121}.btn--inverse:hover,button--inverse:hover{background-color:#ccc;color:#212121}.btn--inverse-primary,button--inverse-primary{background-color:#fff;color:#212121;border:1px solid #ff4f00}.btn--inverse-primary:visited,button--inverse-primary:visited{background-color:#fff;color:#212121}.btn--inverse-primary:hover,button--inverse-primary:hover{background-color:#ccc;color:#212121}.btn--light-outline,button--light-outline{background-color:rgba(0,0,0,0);color:#fff;border:1px solid #fff}.btn--light-outline:visited,button--light-outline:visited{background-color:rgba(0,0,0,0);color:#fff}.btn--light-outline:hover,button--light-outline:hover{background-color:rgba(0,0,0,.2);color:#fff}.btn--success,button--success{background-color:#54c000;color:#fff}.btn--success:visited,button--success:visited{background-color:#54c000;color:#fff}.btn--success:hover,button--success:hover{background-color:rgb(67.2,153.6,0);color:#fff}.btn--warning,button--warning{background-color:#ff9800;color:#fff}.btn--warning:visited,button--warning:visited{background-color:#ff9800;color:#fff}.btn--warning:hover,button--warning:hover{background-color:rgb(204,121.6,0);color:#fff}.btn--danger,button--danger{background-color:#e51c23;color:#fff}.btn--danger:visited,button--danger:visited{background-color:#e51c23;color:#fff}.btn--danger:hover,button--danger:hover{background-color:rgb(183.2,22.4,28);color:#fff}.btn--info,button--info{background-color:#1387ff;color:#fff}.btn--info:visited,button--info:visited{background-color:#1387ff;color:#fff}.btn--info:hover,button--info:hover{background-color:rgb(15.2,108,204);color:#fff}.btn--facebook,button--facebook{background-color:#3b5998;color:#fff}.btn--facebook:visited,button--facebook:visited{background-color:#3b5998;color:#fff}.btn--facebook:hover,button--facebook:hover{background-color:rgb(47.2,71.2,121.6);color:#fff}.btn--twitter,button--twitter{background-color:#55acee;color:#fff}.btn--twitter:visited,button--twitter:visited{background-color:#55acee;color:#fff}.btn--twitter:hover,button--twitter:hover{background-color:rgb(68,137.6,190.4);color:#fff}.btn--linkedin,button--linkedin{background-color:#007bb6;color:#fff}.btn--linkedin:visited,button--linkedin:visited{background-color:#007bb6;color:#fff}.btn--linkedin:hover,button--linkedin:hover{background-color:rgb(0,98.4,145.6);color:#fff}.btn--block,button--block{display:block;width:100%}.btn--block+.btn--block,button--block+.btn--block{margin-top:.25em}.btn--disabled,button--disabled{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:.65}.btn--x-large,button--x-large{font-size:1.25em}.btn--large,button--large{font-size:1em}.btn--small,button--small{font-size:.6875em}.notice{margin:2em 0 !important;padding:1em;color:#212121;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em !important;text-indent:initial;background-color:rgb(248.2,248.2,248.2);border-radius:4px;box-shadow:0 1px 1px rgba(187,187,187,.25)}.notice h4,.notice h3{margin-top:0 !important;margin-bottom:.75em !important}.page__content .notice h4{margin-bottom:0;font-size:1em}.notice p:last-child{margin-bottom:0 !important}.notice h4+p{margin-top:0;padding-top:0}.notice a{color:#bbb}.notice a:hover{color:hsl(0,0%,44%)}.notice .btn,.notice #goog-wm-sb{color:#fff}.notice .btn--inverse{color:#212121}.notice code{background-color:rgb(251.6,251.6,251.6)}.notice pre code{background-color:inherit}.notice ul:last-child{margin-bottom:0}.notice--primary{margin:2em 0 !important;padding:1em;color:#212121;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em !important;text-indent:initial;background-color:rgb(255,237.4,229.5);border-radius:4px;box-shadow:0 1px 1px rgba(255,79,0,.25)}.notice--primary h4,.notice--primary h3{margin-top:0 !important;margin-bottom:.75em !important}.page__content .notice--primary h4{margin-bottom:0;font-size:1em}.notice--primary p:last-child{margin-bottom:0 !important}.notice--primary h4+p{margin-top:0;padding-top:0}.notice--primary a{color:#ff4f00}.notice--primary a:hover{color:rgb(153,47.4,0)}.notice--primary .btn,.notice--primary #goog-wm-sb{color:#fff}.notice--primary .btn--inverse{color:#212121}.notice--primary code{background-color:rgb(255,246.2,242.25)}.notice--primary pre code{background-color:inherit}.notice--primary ul:last-child{margin-bottom:0}.notice--info{margin:2em 0 !important;padding:1em;color:#212121;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em !important;text-indent:initial;background-color:rgb(231.4,243,255);border-radius:4px;box-shadow:0 1px 1px rgba(19,135,255,.25)}.notice--info h4,.notice--info h3{margin-top:0 !important;margin-bottom:.75em !important}.page__content .notice--info h4{margin-bottom:0;font-size:1em}.notice--info p:last-child{margin-bottom:0 !important}.notice--info h4+p{margin-top:0;padding-top:0}.notice--info a{color:#1387ff}.notice--info a:hover{color:rgb(11.4,81,153)}.notice--info .btn,.notice--info #goog-wm-sb{color:#fff}.notice--info .btn--inverse{color:#212121}.notice--info code{background-color:rgb(243.2,249,255)}.notice--info pre code{background-color:inherit}.notice--info ul:last-child{margin-bottom:0}.notice--warning{margin:2em 0 !important;padding:1em;color:#212121;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em !important;text-indent:initial;background-color:rgb(255,244.7,229.5);border-radius:4px;box-shadow:0 1px 1px rgba(255,152,0,.25)}.notice--warning h4,.notice--warning h3{margin-top:0 !important;margin-bottom:.75em !important}.page__content .notice--warning h4{margin-bottom:0;font-size:1em}.notice--warning p:last-child{margin-bottom:0 !important}.notice--warning h4+p{margin-top:0;padding-top:0}.notice--warning a{color:#ff9800}.notice--warning a:hover{color:rgb(153,91.2,0)}.notice--warning .btn,.notice--warning #goog-wm-sb{color:#fff}.notice--warning .btn--inverse{color:#212121}.notice--warning code{background-color:rgb(255,249.85,242.25)}.notice--warning pre code{background-color:inherit}.notice--warning ul:last-child{margin-bottom:0}.notice--success{margin:2em 0 !important;padding:1em;color:#212121;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em !important;text-indent:initial;background-color:rgb(237.9,248.7,229.5);border-radius:4px;box-shadow:0 1px 1px rgba(84,192,0,.25)}.notice--success h4,.notice--success h3{margin-top:0 !important;margin-bottom:.75em !important}.page__content .notice--success h4{margin-bottom:0;font-size:1em}.notice--success p:last-child{margin-bottom:0 !important}.notice--success h4+p{margin-top:0;padding-top:0}.notice--success a{color:#54c000}.notice--success a:hover{color:rgb(50.4,115.2,0)}.notice--success .btn,.notice--success #goog-wm-sb{color:#fff}.notice--success .btn--inverse{color:#212121}.notice--success code{background-color:rgb(246.45,251.85,242.25)}.notice--success pre code{background-color:inherit}.notice--success ul:last-child{margin-bottom:0}.notice--danger{margin:2em 0 !important;padding:1em;color:#212121;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em !important;text-indent:initial;background-color:rgb(252.4,232.3,233);border-radius:4px;box-shadow:0 1px 1px rgba(229,28,35,.25)}.notice--danger h4,.notice--danger h3{margin-top:0 !important;margin-bottom:.75em !important}.page__content .notice--danger h4{margin-bottom:0;font-size:1em}.notice--danger p:last-child{margin-bottom:0 !important}.notice--danger h4+p{margin-top:0;padding-top:0}.notice--danger a{color:#e51c23}.notice--danger a:hover{color:rgb(137.4,16.8,21)}.notice--danger .btn,.notice--danger #goog-wm-sb{color:#fff}.notice--danger .btn--inverse{color:#212121}.notice--danger code{background-color:rgb(253.7,243.65,244)}.notice--danger pre code{background-color:inherit}.notice--danger ul:last-child{margin-bottom:0}.masthead{position:sticky;top:0;background-color:#fff;-webkit-animation:intro .3s both;animation:intro .3s both;-webkit-animation-delay:.15s;animation-delay:.15s;z-index:20;transition:all .3s}
180.masthead__inner-wrap{clear:both}.masthead__inner-wrap::after{clear:both;content:"";display:table}.masthead__inner-wrap{margin-left:auto;margin-right:auto;padding:1.25em 1em;max-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;transition:all .3s}@media(min-width: 84.375em){.masthead__inner-wrap{max-width:1350px}}.masthead__inner-wrap nav{z-index:10}.masthead__inner-wrap a{text-decoration:none}.masthead--sticky{box-shadow:rgba(2,23,49,.15) 0px 10px 30px 0px}.masthead--sticky .masthead__inner-wrap{padding:1em 1em}.site-logo img{height:48px}@media(min-width: 48em){.site-logo img{height:24px}}@media(min-width: 64em){.site-logo img{height:48px}}.site-title{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:center;align-self:center;font-weight:bold;z-index:20}.site-subtitle{display:block;font-size:.625em}.masthead__menu{float:left;margin-left:0;margin-right:0;width:100%;clear:both}.masthead__menu .site-nav{margin-left:0}@media(min-width: 37.5em){.masthead__menu .site-nav{float:right}}.masthead__menu ul{margin:0;padding:0;clear:both;list-style-type:none}.masthead__menu-item{display:block;list-style-type:none;white-space:nowrap}.masthead__menu-item--lg{padding-right:2em;font-weight:700}.masthead__divider{display:inline-block;vertical-align:middle;margin:0 16px;width:1px;height:48px;background:#d2dade}.breadcrumbs{clear:both}.breadcrumbs::after{clear:both;content:"";display:table}.breadcrumbs{margin:0 auto;max-width:100%;padding-left:1em;padding-right:1em;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;-webkit-animation:intro .3s both;animation:intro .3s both;-webkit-animation-delay:.3s;animation-delay:.3s}@media(min-width: 84.375em){.breadcrumbs{max-width:1350px}}.breadcrumbs ol{padding:0;list-style:none;font-size:.8em}@media(min-width: 64em){.breadcrumbs ol{float:right;width:calc(100% - 200px)}}@media(min-width: 84.375em){.breadcrumbs ol{width:calc(100% - 300px)}}.breadcrumbs li{display:inline}.breadcrumbs .current{font-weight:bold}.pagination{clear:both}.pagination::after{clear:both;content:"";display:table}.pagination{float:left;margin-top:1em;padding-top:1em;width:100%}.pagination ul{margin:0;padding:0;list-style-type:none;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}.pagination li{display:block;float:left;margin-left:-1px}.pagination li a{display:block;margin-bottom:.25em;padding:.5em 1em;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:bold;line-height:1.5;text-align:center;text-decoration:none;color:#666;border:1px solid hsl(0,0%,70.125%);border-radius:0}.pagination li a:hover{color:rgb(178.5,55.3,0)}.pagination li a.current,.pagination li a.current.disabled{color:#fff;background:#ff4f00}.pagination li a.disabled{color:hsla(0,0%,40%,.5);pointer-events:none;cursor:not-allowed}.pagination li:first-child{margin-left:0}.pagination li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination--pager{display:block;padding:1em 2em;float:left;width:50%;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1em;font-weight:bold;text-align:center;text-decoration:none;color:#666;border:1px solid hsl(0,0%,70.125%);border-radius:4px}.pagination--pager:hover{background-color:#666;color:#fff}.pagination--pager:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.pagination--pager:last-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.pagination--pager.disabled{color:hsla(0,0%,40%,.5);pointer-events:none;cursor:not-allowed}.page__content+.pagination,.page__meta+.pagination,.comment__date+.pagination,.page__share+.pagination,.page__comments+.pagination{margin-top:2em;padding-top:2em;border-top:1px solid hsl(0,0%,93.5%)}.greedy-nav{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:2em;background:#fff}.greedy-nav a{display:block;margin:0 1rem;color:#ff4f00;text-decoration:none}.greedy-nav a:hover{color:rgb(178.5,55.3,0)}.greedy-nav a.site-logo{margin-left:0;margin-right:0;display:flex;align-items:center}.greedy-nav a.site-title{margin-left:-4px;color:#212121;font-weight:300;margin-bottom:-2px;font-size:1.1em}@media(min-width: 48em){.greedy-nav a.site-title{font-weight:300}}@media(min-width: 64em){.greedy-nav a.site-title{font-weight:200}}.greedy-nav a.site-title:hover{text-decoration:underline}.greedy-nav__toggle{-ms-flex-item-align:center;align-self:center;border:0;outline:none;background-color:rgba(0,0,0,0);cursor:pointer;color:#ff4f00;padding:0}.greedy-nav .visible-links{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;align-items:center}.greedy-nav .visible-links li{-webkit-box-flex:0;-ms-flex:none;flex:none}.greedy-nav .visible-links a{position:relative}.greedy-nav .visible-links a::before{content:"";position:relative;display:block;height:2px;width:100%}.greedy-nav .visible-links a:after{content:"";position:relative;display:block;left:0;bottom:0;height:2px;background:rgb(178.5,55.3,0);width:0;transition:all .3s}.greedy-nav .visible-links a:hover:after{width:100%}.greedy-nav .hidden-links{position:absolute;top:100%;right:0;margin-top:15px;padding:5px;border:1px solid hsl(0,0%,93.5%);border-radius:4px;background:#fff;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}.greedy-nav .hidden-links.hidden{display:none}.greedy-nav .hidden-links a{margin:0;padding:10px 20px;font-size:1em}.greedy-nav .hidden-links a:hover{color:rgb(178.5,55.3,0);background:rgb(178.5,55.3,0)}.greedy-nav .hidden-links:before{content:"";position:absolute;top:-11px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:hsl(0,0%,93.5%) rgba(0,0,0,0);display:block;z-index:0}.greedy-nav .hidden-links:after{content:"";position:absolute;top:-10px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff rgba(0,0,0,0);display:block;z-index:1}.greedy-nav .hidden-links li{display:block;border-bottom:1px solid hsl(0,0%,93.5%)}.greedy-nav .hidden-links li:last-child{border-bottom:none}.masthead--sticky a.site-logo::after{width:0;overflow:hidden}.no-js .greedy-nav .visible-links{-ms-flex-wrap:wrap;flex-wrap:wrap;overflow:visible}.nav__list{display:grid;margin-bottom:1.5em}.nav__list input[type=checkbox],.nav__list label{display:none}@media(max-width: 47.9375em){.nav__list label{position:relative;display:inline-block;padding:.5em 2.5em .5em 1em;color:#666;font-size:.8em;font-weight:bold;border:1px solid #bbb;border-radius:4px;z-index:20;
180-webkit-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.nav__list label:before,.nav__list label:after{content:"";position:absolute;right:1em;top:1.25em;width:.75em;height:.125em;line-height:1;background-color:#666;-webkit-transition:.2s ease-out;transition:.2s ease-out}.nav__list label:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.nav__list label:hover{color:#fff;border-color:#666;background-color:#333}.nav__list label:hover:before,.nav__list label:hover:after{background-color:#fff}.nav__list input:checked+label{color:#fff;background-color:#333}.nav__list input:checked+label:before,.nav__list input:checked+label:after{background-color:#fff}.nav__list label:hover:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.nav__list input:checked+label:hover:after{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}.nav__list ul{margin-bottom:1em}.nav__list a{display:block;padding:.25em 0}}@media(max-width: 47.9375em)and (min-width: 64em){.nav__list a{padding-top:.125em;padding-bottom:.125em}}@media(max-width: 47.9375em){.nav__list a:hover{text-decoration:underline}}.nav__list .nav__sub-titles{margin:0}.nav__list .nav__sub-titles .active,.nav__list .nav__sub-titles .active:hover,.nav__list .nav__sub-titles .active:focus{color:#ff4f00}@media(max-width: 47.9375em){.nav__list .nav__sub-titles{position:relative;max-height:0;opacity:0%;overflow:hidden;z-index:10;-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out;-webkit-transform:translate(0, 10%);-ms-transform:translate(0, 10%);transform:translate(0, 10%)}}@media(max-width: 47.9375em){.nav__list input:checked~.nav__sub-titles{-webkit-transition:.5s ease-in-out;transition:.5s ease-in-out;max-height:9999px;overflow:visible;opacity:1;margin-top:1em;-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}}.nav__title{margin:0;padding:.5rem .75rem;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1em;font-weight:bold}.nav__sub-titles{display:grid}.nav__sub-titles>li{display:grid}.nav__sub-titles>li:not(:first-child){border-top:1px solid hsl(0,0%,93.5%)}.nav__sub-titles .nav__sub-title{padding:.5em;text-transform:uppercase;border:0px;background-color:rgba(0,0,0,0);color:#212121;display:flex;align-items:center;font-size:.9em}.nav__sub-titles .nav__sub-title.active{color:#ff4f00}.nav__sub-titles .nav__sub-title:hover{background-color:hsl(0,0%,93.5%)}.nav__sub-titles .nav__sub-title:focus{outline:none}.nav__children{display:grid;margin-bottom:.5em}.nav__children .nav__child{display:flex;align-items:center;font-size:.9em;color:#212121;padding:0 .5em;border-radius:3px;flex:1;font-weight:300;height:28px}.nav__children .nav__child:hover,.nav__children .nav__child:focus{background-color:hsl(0,0%,93.5%)}.toc{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;color:#666;font-size:1em}@media(min-width: 48em){.toc .active::before{background-image:url("../../images/icons/right-arrow-mini.png");background-size:22px 22px}}.toc .active a{color:#ff4f00;font-weight:400}.toc--sticky{position:sticky;top:4em}.toc__title{font-size:.8em;padding:.5em 0;color:#666;opacity:.8}@media(min-width: 48em){.toc__title{margin-left:22px}}.toc__menu{margin:0;padding:0;width:100%;list-style:none;font-size:.8em}@media(min-width: 64em){.toc__menu{font-size:.6875em}}.toc__menu li{display:flex;align-items:center}@media(min-width: 48em){.toc__menu li::before{display:inline-block;height:22px;width:22px;content:" "}}.toc__menu a{align-items:center;padding:.5em 0;color:#666;line-height:1.3;font-size:1.3em;border-top:1px solid hsl(0,0%,93.5%);font-weight:300;flex:1}.toc__menu a:hover{color:#ff4f00}.toc__menu li ul>li a{padding-left:1.25rem;font-weight:normal}.toc__menu li ul li ul>li a{padding-left:1.75rem}.toc__menu li ul li ul li ul>li a{padding-left:2.25rem}.toc__menu li ul li ul li ul li ul>li a{padding-left:2.75rem}.toc__menu li ul li ul li ul li ul li ul>li a{padding-left:3.25rem}.toc__menu--tub{margin:0;padding:0;width:200px;list-style:none;font-size:.8em}@media(min-width: 64em){.toc__menu--tub{font-size:.6875em}}.toc__menu--tub li{display:flex;align-items:center}.toc__menu--tub a{align-items:center;padding:.5em;color:#666;line-height:1.3;font-size:18px;font-weight:300;flex:1}.toc__menu--tub a:hover{color:#ff4f00;background-color:#f5f5f5}.toc__menu--tub li ul>li a{padding-left:1.25rem;font-weight:normal}.toc__menu--tub li ul li ul>li a{padding-left:1.75rem}.toc__menu--tub li ul li ul li ul>li a{padding-left:2.25rem}.toc__menu--tub li ul li ul li ul li ul>li a{padding-left:2.75rem}.toc__menu--tub li ul li ul li ul li ul li ul>li a{padding-left:3.25rem}
180.api-guide-navigation{display:grid;grid-template-columns:repeat(auto-fill, minmax(120px, 1fr));grid-gap:24px}@media(min-width: 48em){.api-guide-navigation{grid-template-columns:repeat(auto-fill, minmax(300px, 1fr))}}.api-guide-navigation__item{text-decoration:none !important;border-radius:8px;box-shadow:0px 10px 40px 0px rgba(0,0,0,.1019607843);text-align:center}@media(min-width: 48em){.api-guide-navigation__item{display:flex;text-align:left}}.api-guide-navigation__item:hover,.api-guide-navigation__item:active{box-shadow:0px 10px 40px 0px rgba(0,0,0,.2)}.api-guide-navigation__image{box-shadow:none !important;background-color:#103251;min-width:100px;border-radius:8px 8px 0 0}@media(min-width: 48em){.api-guide-navigation__image{border-radius:8px 0 0 8px;width:100px}}.api-guide-navigation__text{border-radius:0 0 8px 8px;padding:12px;place-self:center;flex:1}@media(min-width: 48em){.api-guide-navigation__text{border-radius:0 8px 8px 0}}.api-guide-navigation__title{margin:0;line-height:1;margin-bottom:8px;font-size:1em}.api-guide-navigation__excerpt{font-size:.8em !important;margin:0 !important;color:#212121 !important;line-height:1.2}.language-navigation{display:flex;flex-wrap:wrap}.language-navigation__item{margin:0 16px 16px 0;text-decoration:none !important;display:flex;box-shadow:0px 5px 20px 0px rgba(0,0,0,.1019607843);padding:3px 12px;border-radius:4px}.language-navigation__item:hover,.language-navigation__item:active{box-shadow:0px 5px 20px 0px rgba(0,0,0,.2)}.language-navigation__item:hover .language-navigation__language,.language-navigation__item:active .language-navigation__language{color:#212121}.language-navigation__image{max-height:40px;max-width:40px;display:flex;margin-right:6px}.language-navigation__image img{width:100%;place-self:center}.language-navigation__language{margin:0;font-weight:400;place-self:center;font-size:.9em;color:#666}.page__footer{clear:both}.page__footer::after{clear:both;content:"";display:table}.page__footer{float:left;margin-left:0;margin-right:0;width:100%;clear:both;margin-top:3em;color:#666;-webkit-animation:intro .3s both;animation:intro .3s both;-webkit-animation-delay:.45s;animation-delay:.45s;background-color:hsl(0,0%,93.5%)}.page__footer footer{clear:both}.page__footer footer::after{clear:both;content:"";display:table}.page__footer footer{margin-left:auto;margin-right:auto;margin-top:2em;max-width:100%;padding:0 1em 2em}@media(min-width: 84.375em){.page__footer footer{max-width:1350px}}.page__footer a{color:inherit;text-decoration:none}.page__footer a:hover{text-decoration:underline}.page__footer .fas,.page__footer .fab,.page__footer .far,.page__footer .fal{color:#666}.page__footer-copyright{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em}.page__footer-follow ul{margin:0;padding:0;list-style-type:none}.page__footer-follow li{display:inline-block;padding-top:5px;padding-bottom:5px;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1em;text-transform:uppercase}.page__footer-follow li+li:before{content:"";padding-right:5px}.page__footer-follow a{padding-right:10px;font-weight:bold}.page__footer-follow .social-icons a{white-space:nowrap}.layout--search .archive__item-teaser{margin-bottom:.25em}.search__toggle{margin-left:.5em;margin-right:.5em;border:0;outline:none;color:#ff4f00;background-color:rgba(0,0,0,0);cursor:pointer;-webkit-transition:.2s;transition:.2s;padding:0}.search__toggle:hover{color:rgb(191.25,59.25,0)}.search-icon{width:100%;height:100%}.search-content{display:none;visibility:hidden;padding-top:1em;padding-bottom:1em}.search-content__inner-wrap{width:100%;margin-left:auto;margin-right:auto;padding-left:1em;padding-right:1em;-webkit-animation:intro .3s both;animation:intro .3s both;-webkit-animation-delay:.15s;animation-delay:.15s}@media(min-width: 84.375em){.search-content__inner-wrap{max-width:1350px}}.search-content__form{background-color:rgba(0,0,0,0)}.search-content .search-input{display:block;margin-bottom:0;padding:0;border:none;outline:none;box-shadow:none;background-color:rgba(0,0,0,0);font-size:1.563em}@media(min-width: 64em){.search-content .search-input{font-size:1.953em}}@media(min-width: 84.375em){.search-content .search-input{font-size:2.441em}}.search-content.is--visible{display:block;visibility:visible}.search-content.is--visible::after{content:"";display:block}.search-content .results__found{margin-top:.5em;font-size:.8em}.search-content .archive__item{margin-bottom:2em}@media(min-width: 64em){.search-content .archive__item{width:75%}}@media(min-width: 84.375em){.search-content .archive__item{width:50%}}.search-content .archive__item-title{margin-top:0}.search-content .archive__item-excerpt{margin-bottom:0}.ais-search-box{max-width:100% !important;margin-bottom:2em}.archive__item-title .ais-Highlight{color:#ff4f00;font-style:normal;text-decoration:underline}.archive__item-excerpt .ais-Highlight{color:#ff4f00;font-style:normal;font-weight:bold}div.highlighter-rouge,figure.highlight{position:relative;margin-bottom:1em;background:#263238;color:#eff;font-family:Monaco,Consolas,"Lucida Console",monospace;font-size:.8em;line-height:1.8;border-radius:4px}div.highlighter-rouge>pre,div.highlighter-rouge pre.highlight,figure.highlight>pre,figure.highlight pre.highlight{margin:0;padding:1em}.highlight table{margin-bottom:0;font-size:1em;border:0}.highlight table td{padding:0;width:calc(100% - 1em);border:0}.highlight table td.gutter,.highlight table td.rouge-gutter{padding-right:1em;width:1em;color:#b2ccd6;border-right:1px solid #b2ccd6;text-align:right}.highlight table td.code,.highlight table td.rouge-code{padding-left:1em}.highlight table pre{margin:0}.highlight pre{width:100%}.highlight .hll{background-color:#eff}.highlight .c{color:#b2ccd6}.highlight .err{color:#f07178}.highlight .k{color:#c792ea}.highlight .l{color:#f78c6c}.highlight .n{color:#eff}.highlight .o{color:#89ddff}.highlight .p{color:#eff}.highlight .cm{color:#b2ccd6}.highlight .cp{color:#b2ccd6}.highlight .c1{color:#b2ccd6}.highlight .cs{color:#b2ccd6}.highlight .gd{color:#f07178}.highlight .ge{font-style:italic}.highlight .gh{color:#eff;font-weight:bold}.highlight .gi{color:#c3e88d}.highlight .gp{color:#b2ccd6;font-weight:bold}.highlight .gs{font-weight:bold}.highlight .gu{color:#89ddff;font-weight:bold}.highlight .kc{color:#c792ea}.highlight .kd{color:#c792ea}.highlight .kn{color:#89ddff}.highlight .kp{color:#c792ea}.highlight .kr{color:#c792ea}.highlight .kt{color:#ffcb6b}.highlight .ld{color:#c3e88d}.highlight .m{color:#f78c6c}.highlight .s{color:#c3e88d}.highlight .na{color:#82aaff}.highlight .nb{color:#eff}.highlight .nc{color:#ffcb6b}.highlight .no{color:#f07178}.highlight .nd{color:#89ddff}.highlight .ni{color:#eff}.highlight .ne{color:#f07178}.highlight .nf{color:#82aaff}.highlight .nl{color:#eff}.highlight .nn{color:#ffcb6b}.highlight .nx{color:#82aaff}.highlight .py{color:#eff}.highlight .nt{color:#89ddff}.highlight .nv{color:#f07178}.highlight .ow{color:#89ddff}.highlight .w{color:#eff}
180.highlight .mf{color:#f78c6c}.highlight .mh{color:#f78c6c}.highlight .mi{color:#f78c6c}.highlight .mo{color:#f78c6c}.highlight .sb{color:#c3e88d}.highlight .sc{color:#eff}.highlight .sd{color:#b2ccd6}.highlight .s2{color:#c3e88d}.highlight .se{color:#f78c6c}.highlight .sh{color:#c3e88d}.highlight .si{color:#f78c6c}.highlight .sx{color:#c3e88d}.highlight .sr{color:#c3e88d}.highlight .s1{color:#c3e88d}.highlight .ss{color:#c3e88d}.highlight .bp{color:#eff}.highlight .vc{color:#f07178}.highlight .vg{color:#f07178}.highlight .vi{color:#f07178}.highlight .il{color:#f78c6c}.gist th,.gist td{border-bottom:0}.hidden,.is--hidden{display:none;visibility:hidden}.load{display:none}.transparent{opacity:0}.visually-hidden,.screen-reader-text,.screen-reader-text span,.screen-reader-shortcut{position:absolute !important;clip:rect(1px, 1px, 1px, 1px);height:1px !important;width:1px !important;border:0 !important;overflow:hidden}body:hover .visually-hidden a,body:hover .visually-hidden input,body:hover .visually-hidden button{display:none !important}.screen-reader-text:focus,.screen-reader-shortcut:focus{clip:auto !important;height:auto !important;width:auto !important;display:block;font-size:1em;font-weight:bold;padding:15px 23px 14px;background:#fff;z-index:100000;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,.6)}.skip-link{position:fixed;z-index:20;margin:0;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;white-space:nowrap}.skip-link li{height:0;width:0;list-style:none}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.task-list{padding:0}.task-list li{list-style-type:none}.task-list .task-list-item-checkbox{margin-right:.5em;opacity:1}.task-list .task-list{margin-left:1em}.cf{clear:both}.wrapper{margin-left:auto;margin-right:auto;width:100%}.align-left{display:block;margin-left:auto;margin-right:auto}@media(min-width: 37.5em){.align-left{float:left;margin-right:1em}}.align-right{display:block;margin-left:auto;margin-right:auto}@media(min-width: 37.5em){.align-right{float:right;margin-left:1em}}.align-center{display:block;margin-left:auto;margin-right:auto}@media(min-width: 64em){.full{margin-right:-20.3389830508% !important}}.bw-logos{display:inline-block;filter:grayscale(100%);width:5em;height:5.1em;position:relative;top:-0.1em;vertical-align:middle}.icon{display:inline-block;fill:currentColor;width:20px;line-height:1;position:relative;top:-0.1em;vertical-align:middle}.social-icons .fas,.social-icons .fab,.social-icons .far,.social-icons .fal{color:#212121}.social-icons .fa-behance,.social-icons .fa-behance-square{color:#1769ff}.social-icons .fa-bitbucket{color:#205081}.social-icons .fa-dribbble,.social-icons .fa-dribble-square{color:#ea4c89}.social-icons .fa-facebook,.social-icons .fa-facebook-square,.social-icons .fa-facebook-f{color:#3b5998}.social-icons .fa-flickr{color:#ff0084}.social-icons .fa-foursquare{color:#0072b1}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{color:#171516}.social-icons .fa-gitlab{color:#e24329}.social-icons .fa-instagram{color:#517fa4}.social-icons .fa-keybase{color:#ef7639}.social-icons .fa-lastfm,.social-icons .fa-lastfm-square{color:#d51007}.social-icons .fa-linkedin,.social-icons .fa-linkedin-in{color:#007bb6}.social-icons .fa-mastodon,.social-icons .fa-mastodon-square{color:#2b90d9}.social-icons .fa-pinterest,.social-icons .fa-pinterest-p,.social-icons .fa-pinterest-square{color:#cb2027}.social-icons .fa-reddit{color:#ff4500}.social-icons .fa-rss,.social-icons .fa-rss-square{color:#fa9b39}.social-icons .fa-soundcloud{color:#f30}.social-icons .fa-stack-exchange,.social-icons .fa-stack-overflow{color:#fe7a15}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{color:#32506d}.social-icons .fa-twitter,.social-icons .fa-twitter-square{color:#55acee}.social-icons .fa-vimeo,.social-icons .fa-vimeo-square,.social-icons .fa-vimeo-v{color:#1ab7ea}.social-icons .fa-vine{color:#00bf8f}.social-icons .fa-youtube{color:#b00}.social-icons .fa-xing,.social-icons .fa-xing-square{color:#006567}.navicon{position:relative;width:1.5rem;height:.25rem;background:#ff4f00;margin:auto;-webkit-transition:.3s;transition:.3s}.navicon:before,.navicon:after{content:"";position:absolute;
180left:0;width:1.5rem;height:.25rem;background:#ff4f00;-webkit-transition:.3s;transition:.3s}.navicon:before{top:-0.5rem}.navicon:after{bottom:-0.5rem}.close .navicon{background:rgba(0,0,0,0)}.close .navicon:before,.close .navicon:after{-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;top:0;width:1.5rem}.close .navicon:before{-webkit-transform:rotate3d(0, 0, 1, 45deg);transform:rotate3d(0, 0, 1, 45deg)}.close .navicon:after{-webkit-transform:rotate3d(0, 0, 1, -45deg);transform:rotate3d(0, 0, 1, -45deg)}.greedy-nav__toggle:hover .navicon,.greedy-nav__toggle:hover .navicon:before,.greedy-nav__toggle:hover .navicon:after{background:rgb(191.25,59.25,0)}.greedy-nav__toggle:hover.close .navicon{background:rgba(0,0,0,0)}@media(min-width: 64em){.sticky{clear:both}.sticky::after{clear:both;content:"";display:table}.sticky{position:-webkit-sticky;position:sticky;top:2em}.sticky>*{display:block}}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.show-modal{overflow:hidden;position:relative}.show-modal:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;z-index:999;background-color:hsla(0,0%,100%,.85)}.show-modal .modal{display:block}.modal{display:none;position:fixed;width:300px;top:50%;left:50%;margin-left:-150px;margin-top:-150px;min-height:0;z-index:9999;background:#fff;border:1px solid hsl(0,0%,93.5%);border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.125)}.modal__title{margin:0;padding:.5em 1em}.modal__supporting-text{padding:0 1em .5em 1em}.modal__actions{padding:.5em 1em;border-top:1px solid hsl(0,0%,93.5%)}.footnote{color:hsl(0,0%,55%);text-decoration:none}.footnotes{color:hsl(0,0%,55%)}.footnotes ol,.footnotes li,.footnotes p{margin-bottom:0;font-size:.8em}a.reversefootnote{color:#666;text-decoration:none}a.reversefootnote:hover{text-decoration:underline}.required{color:#e51c23;font-weight:bold}.gsc-control-cse table,.gsc-control-cse tr,.gsc-control-cse td{border:0}.responsive-video-container{position:relative;margin-bottom:1em;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%}.responsive-video-container iframe,.responsive-video-container object,.responsive-video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}:-webkit-full-screen-ancestor .masthead,:-webkit-full-screen-ancestor .page__footer{position:static}#main{clear:both}#main::after{clear:both;content:"";display:table}#main{margin-left:auto;margin-right:auto;padding-left:1em;padding-right:1em;-webkit-animation:intro .3s both;animation:intro .3s both;max-width:100%;-webkit-animation-delay:.15s;animation-delay:.15s}@media(min-width: 84.375em){#main{max-width:1350px}}body{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:100vh;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.initial-content,.search-content{flex:1 0 auto}@media(min-width: 64em){.page{float:right;width:calc(100% - 200px);padding-right:200px}}@media(min-width: 84.375em){.page{width:calc(100% - 300px);padding-right:300px}}.page .page__inner-wrap{float:left;margin-top:1em;margin-left:0;margin-right:0;width:100%;clear:both}.page .page__inner-wrap .page__content,.page .page__inner-wrap .page__meta,.page .page__inner-wrap .comment__date,.page .page__inner-wrap .page__share{position:relative;float:left;margin-left:0;margin-right:0;width:100%;clear:both}.page__title{margin-top:0;line-height:1}.page__title+.page__meta,.page__title+.comment__date{margin-top:-0.5em}.page__lead{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.25em}.page__content h2{padding-bottom:.5em;border-bottom:1px solid hsl(0,0%,93.5%)}.page__content h1 .header-link,.page__content h2 .header-link,.page__content h3 .header-link,.page__content h4 .header-link,.page__content h5 .header-link,.page__content h6 .header-link{position:relative;left:.5em;opacity:0;font-size:.8em;-webkit-transition:opacity .2s ease-in-out .1s;-moz-transition:opacity .2s ease-in-out .1s;-o-transition:opacity .2s ease-in-out .1s;transition:opacity .2s ease-in-out .1s}.page__content h1:hover .header-link,.page__content h2:hover .header-link,.page__content h3:hover .header-link,.page__content h4:hover .header-link,.page__content h5:hover .header-link,.page__content h6:hover .header-link{opacity:1}.page__content p,.page__content li,.page__content dl{font-size:1em}.page__content p{margin:0 0 1.3em}
180.page__content a:not(.btn):not(#goog-wm-sb):hover{text-decoration:underline}.page__content a:not(.btn):not(#goog-wm-sb):hover img{box-shadow:0 0 10px rgba(0,0,0,.25)}.page__content dt{margin-top:1em;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold}.page__content dd{margin-left:1em;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em}.page__content .small{font-size:.8em}.page__content blockquote+.small{margin-top:-1.5em;padding-left:1.25rem}.page__hero{position:relative;margin-bottom:2em;clear:both}.page__hero::after{clear:both;content:"";display:table}.page__hero{-webkit-animation:intro .3s both;animation:intro .3s both;-webkit-animation-delay:.25s;animation-delay:.25s}.page__hero--overlay{position:relative;margin-bottom:2em;padding:3em 0;clear:both}.page__hero--overlay::after{clear:both;content:"";display:table}.page__hero--overlay{background-size:cover;background-repeat:no-repeat;background-position:center;-webkit-animation:intro .3s both;animation:intro .3s both;-webkit-animation-delay:.25s;animation-delay:.25s}.page__hero--overlay a{color:#fff}.page__hero--overlay .wrapper{padding-left:1em;padding-right:1em}@media(min-width: 84.375em){.page__hero--overlay .wrapper{max-width:1350px}}.page__hero--overlay .page__title,.page__hero--overlay .page__meta,.page__hero--overlay .comment__date,.page__hero--overlay .page__lead,.page__hero--overlay .btn,.page__hero--overlay #goog-wm-sb{color:#fff;text-shadow:1px 1px 4px rgba(0,0,0,.5)}.page__hero--overlay .page__lead{max-width:768px}.page__hero--overlay .page__title{font-size:1.953em}@media(min-width: 37.5em){.page__hero--overlay .page__title{font-size:2.441em}}.page__hero-image{width:100%;height:auto;-ms-interpolation-mode:bicubic}.page__hero-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.6875em;background:#000;text-align:right;z-index:5;opacity:.5;border-radius:4px 0 0 0}@media(min-width: 64em){.page__hero-caption{padding:5px 10px}}.page__hero-caption a{color:#fff;text-decoration:none}.page__share{margin-top:2em;padding-top:1em;border-top:1px solid hsl(0,0%,93.5%)}@media(max-width: 37.5em){.page__share .btn span,.page__share #goog-wm-sb span{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}}.page__share-title{margin-bottom:10px;font-size:.8em;text-transform:uppercase}.page__meta,.comment__date{margin-top:2em;color:#666;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em}.page__meta p,.comment__date p{margin:0}.page__meta a,.comment__date a{color:inherit}.page__meta-title{margin-bottom:10px;font-size:.8em;text-transform:uppercase}.page__taxonomy .sep{display:none}.page__taxonomy strong{margin-right:10px}.page__taxonomy-item{display:inline-block;margin-right:5px;margin-bottom:8px;padding:5px 10px;text-decoration:none;border:1px solid hsl(0,0%,70.125%);border-radius:4px}.page__taxonomy-item:hover{text-decoration:none;color:rgb(178.5,55.3,0)}.taxonomy__section{margin-bottom:2em;padding-bottom:1em}.taxonomy__section:not(:last-child){border-bottom:solid 1px hsl(0,0%,93.5%)}.taxonomy__section .archive__item-title{margin-top:0}.taxonomy__section .archive__subtitle{clear:both;border:0}.taxonomy__section+.taxonomy__section{margin-top:2em}.taxonomy__title{margin-bottom:.5em;color:#bababa}.taxonomy__count{color:rgb(160.5,160.5,160.5)}.taxonomy__index{display:grid;grid-column-gap:2em;grid-template-columns:repeat(2, 1fr);margin:1.414em 0;padding:0;font-size:.75em;list-style:none}@media(min-width: 64em){.taxonomy__index{grid-template-columns:repeat(3, 1fr)}}.taxonomy__index a{display:-webkit-box;display:-ms-flexbox;display:flex;padding:.25em 0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;color:inherit;text-decoration:none;border-bottom:1px solid hsl(0,0%,93.5%)}.back-to-top{display:block;clear:both;color:rgb(160.5,160.5,160.5);font-size:.6em;text-transform:uppercase;text-align:right;text-decoration:none}.page__comments{float:left;margin-left:0;margin-right:0;width:100%;clear:both}.page__comments-title{margin-top:2rem;margin-bottom:10px;padding-top:2rem;font-size:.8em;border-top:1px solid hsl(0,0%,93.5%);text-transform:uppercase}.page__comments-form{-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.page__comments-form.disabled input,.page__comments-form.disabled button,.page__comments-form.disabled textarea,.page__comments-form.disabled label{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:.65}
180.comment{clear:both}.comment::after{clear:both;content:"";display:table}.comment{margin:1em 0}.comment:not(:last-child){border-bottom:1px solid hsl(0,0%,93.5%)}.comment__avatar-wrapper{float:left;width:60px;height:60px}@media(min-width: 64em){.comment__avatar-wrapper{width:100px;height:100px}}.comment__avatar{width:40px;height:40px;border-radius:50%}@media(min-width: 64em){.comment__avatar{width:80px;height:80px;padding:5px;border:1px solid hsl(0,0%,93.5%)}}.comment__content-wrapper{float:right;width:calc(100% - 60px)}@media(min-width: 64em){.comment__content-wrapper{width:calc(100% - 100px)}}.comment__author{margin:0}.comment__author a{text-decoration:none}.comment__date{margin:0}.comment__date a{text-decoration:none}.page__related{clear:both}.page__related::after{clear:both;content:"";display:table}.page__related{float:left;margin-top:2em;padding-top:1em;border-top:1px solid hsl(0,0%,93.5%)}@media(min-width: 64em){.page__related{float:right;width:calc(100% - 200px)}}@media(min-width: 84.375em){.page__related{width:calc(100% - 300px)}}.page__related a{color:inherit;text-decoration:none}.page__related-title{margin-bottom:10px;font-size:.8em;text-transform:uppercase}@media(min-width: 64em){.wide .page{padding-right:0}}@media(min-width: 84.375em){.wide .page{padding-right:0}}@media(min-width: 64em){.wide .page__related{padding-right:0}}@media(min-width: 84.375em){.wide .page__related{padding-right:0}}.archive{margin-top:1em;margin-bottom:2em}@media(min-width: 64em){.archive{float:right;width:calc(100% - 200px);padding-right:200px}}@media(min-width: 84.375em){.archive{width:calc(100% - 300px);padding-right:300px}}.archive-card-grid{display:grid;grid-gap:20px;width:100%}@media(min-width: 48em){.archive-card-grid{grid-template-columns:repeat(auto-fill, minmax(420px, 1fr));grid-gap:40px}}@media(min-width: 48em){.archive-card-grid--mini{grid-template-columns:repeat(auto-fit, minmax(380px, 1fr));grid-gap:20px}}a:-webkit-any-link.archive-card{text-decoration-line:none}.archive-card{background-color:#fff;box-shadow:rgba(2,23,49,.14) 0px 42px 84px 0px;border-radius:8px;overflow:hidden;cursor:pointer;z-index:2;display:flex;text-decoration-line:none}.archive-card:hover{transform:scale(1.02)}@media(min-width: 37.5em){.archive-card{min-height:150px}}.archive-card__teaser{background-color:#103251;width:150px;display:flex;place-items:center}.archive-card__text{flex:1;padding:20px 20px 10px;display:flex;flex-direction:column}.archive-card__categories{display:flex}.archive-card__categories p{border-radius:3px;margin:0 16px 0 0;line-height:1;font-size:.6875em;text-transform:uppercase;color:#bbb}.archive-card h2.archive-card__title{font-size:1.25em;line-height:1.1;margin:.5em 0;font-weight:400;letter-spacing:.5px}.archive-card__excerpt{font-size:1.25em;line-height:1.2;flex:1;color:#666;margin:0;font-weight:300}@media(min-width: 37.5em){.archive-card__excerpt{font-size:1em}}.archive-card__date{display:flex;justify-content:flex-end;color:#bbb;margin:0;font-size:.6875em}@media(min-width: 37.5em){.archive-card--mini{min-height:100px}}.archive-card--mini .archive-card__teaser{width:100px}.archive-card--mini .archive-card__title{font-size:1em}.archive-card--mini .archive-card__excerpt{display:none}.archive__item{position:relative}.archive__item a{position:relative;z-index:10}.archive__item a[rel=permalink]{position:static}.archive__subtitle{color:#666}.archive__item-title{margin-bottom:.25em;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;line-height:initial;overflow:hidden;text-overflow:ellipsis}.archive__item-title a[rel=permalink]::before{content:"";position:absolute;left:0;top:0;right:0;bottom:0}.archive__item-title a{color:inherit;position:relative;text-decoration:none;color:#ff4f00;font-weight:400}.archive__item-title a+a{opacity:.5}.page__content .archive__item-title{margin-top:1em;border-bottom:none}.archive__item-excerpt{margin-top:0;font-size:.8em}.archive__item-excerpt+p{text-indent:0}.archive__item-excerpt a{position:relative}.archive__item-teaser{position:relative;border-radius:4px;overflow:hidden}.archive__item-teaser img{width:100%}.archive__item:hover .archive__item-teaser{box-shadow:0 0 10px rgba(0,0,0,.25)}
180.archive__item:hover .archive__item-title{text-decoration:underline}.archive__item-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.625em;background:#000;text-align:right;z-index:5;opacity:.5;border-radius:4px 0 0 0}@media(min-width: 64em){.archive__item-caption{padding:5px 10px}}.archive__item-caption a{color:#fff;text-decoration:none}.list__item .page__meta,.list__item .comment__date{margin:0 0 4px;font-size:.6em}@media(min-width: 64em){.archive .grid__wrapper{margin-right:-200px}}@media(min-width: 84.375em){.archive .grid__wrapper{margin-right:-300px}}.grid__item{margin-bottom:2em}@media(min-width: 37.5em){.grid__item{float:left;width:48.9795918367%}.grid__item:nth-child(2n+1){clear:both;margin-left:0}.grid__item:nth-child(2n+2){clear:none;margin-left:2.0408163265%}}@media(min-width: 48em){.grid__item{margin-left:0;margin-right:0;width:23.7288135593%}.grid__item:nth-child(2n+1){clear:none}.grid__item:nth-child(4n+1){clear:both}.grid__item:nth-child(4n+2){clear:none;margin-left:1.6949152542%}.grid__item:nth-child(4n+3){clear:none;margin-left:1.6949152542%}.grid__item:nth-child(4n+4){clear:none;margin-left:1.6949152542%}}.grid__item .page__meta,.grid__item .comment__date{margin:0 0 4px;font-size:.6em}.grid__item .archive__item-title{margin-top:.5em;font-size:1em}.grid__item .archive__item-excerpt{display:none}@media(min-width: 48em){.grid__item .archive__item-excerpt{display:block;font-size:.8em}}@media(min-width: 37.5em){.grid__item .archive__item-teaser{max-height:200px}}@media(min-width: 48em){.grid__item .archive__item-teaser{max-height:120px}}.feature__wrapper{clear:both}.feature__wrapper::after{clear:both;content:"";display:table}.feature__wrapper{margin-bottom:2em;border-bottom:1px solid hsl(0,0%,93.5%)}.feature__wrapper .archive__item-title{margin-bottom:0}.feature__item{position:relative;margin-bottom:2em;font-size:1.125em}@media(min-width: 37.5em){.feature__item{float:left;margin-bottom:0;width:18.3673469388%}.feature__item:nth-child(5n+1){clear:both;margin-left:0}.feature__item:nth-child(5n+2){clear:none;margin-left:2.0408163265%}.feature__item:nth-child(5n+3){clear:none;margin-left:2.0408163265%}.feature__item:nth-child(5n+4){clear:none;margin-left:2.0408163265%}.feature__item:nth-child(5n+5){clear:none;margin-left:2.0408163265%}.feature__item .feature__item-teaser{max-height:200px;overflow:hidden}}.feature__item .archive__item-body{padding-left:2.0408163265%;padding-right:2.0408163265%}.feature__item a.btn::before,.feature__item a#goog-wm-sb::before{content:"";position:absolute;left:0;top:0;right:0;bottom:0}.feature__item--left{position:relative;float:left;margin-left:0;margin-right:0;width:100%;clear:both;font-size:1.125em}.feature__item--left .archive__item{float:left}.feature__item--left .archive__item-teaser{margin-bottom:2em}.feature__item--left a.btn::before,.feature__item--left a#goog-wm-sb::before{content:"";position:absolute;left:0;top:0;right:0;bottom:0}@media(min-width: 37.5em){.feature__item--left .archive__item-teaser{float:left;width:40.6779661017%}.feature__item--left .archive__item-body{float:right;padding-left:2.0408163265%;padding-right:2.0408163265%;width:69.387755102%}}.feature__item--right{position:relative;float:left;margin-left:0;margin-right:0;width:100%;clear:both;font-size:1.125em}.feature__item--right .archive__item{float:left}.feature__item--right .archive__item-teaser{margin-bottom:2em}.feature__item--right a.btn::before,.feature__item--right a#goog-wm-sb::before{content:"";position:absolute;left:0;top:0;right:0;bottom:0}@media(min-width: 37.5em){.feature__item--right{text-align:right}.feature__item--right .archive__item-teaser{float:right;width:40.6779661017%}.feature__item--right .archive__item-body{float:left;width:57.6271186441%;padding-left:2.0408163265%;padding-right:2.0408163265%}}.feature__item--center{position:relative;float:left;margin-left:0;margin-right:0;width:100%;clear:both;font-size:1.125em}.feature__item--center .archive__item{float:left;width:100%}.feature__item--center .archive__item-teaser{margin-bottom:2em}.feature__item--center a.btn::before,.feature__item--center a#goog-wm-sb::before{content:"";position:absolute;
180left:0;top:0;right:0;bottom:0}@media(min-width: 37.5em){.feature__item--center{text-align:center}.feature__item--center .archive__item-teaser{margin:0 auto;width:40.6779661017%}.feature__item--center .archive__item-body{margin:0 auto;width:57.6271186441%}}.archive .feature__wrapper .archive__item-title{margin-top:.25em;font-size:1em}.archive .feature__item,.archive .feature__item--left,.archive .feature__item--center,.archive .feature__item--right{font-size:1em}@media(min-width: 64em){.wide .archive{padding-right:0}}@media(min-width: 84.375em){.wide .archive{padding-right:0}}.layout--single .feature__wrapper{display:inline-block}.ebook-gallery{display:grid;grid-template-columns:repeat(auto-fill, minmax(200px, 1fr));width:100%;grid-gap:2em;margin-bottom:2em}.ebook-item{background-color:#fff;box-shadow:1px 2px 12px -4px rgba(15,49,81,.2509803922);text-decoration-line:none;border-radius:3px}.ebook-item:hover{box-shadow:1px 2px 16px -4px rgba(15,49,81,.2509803922)}.ebook-item__img{max-height:290px;overflow:hidden;border-radius:3px 3px 0 0}.ebook-item__img img{width:100%}.ebook-item__type{padding:16px 16px 8px;line-height:1;font-size:.6875em;text-transform:uppercase;color:#bbb;border-top-width:4px;border-top-style:solid}.ebook-item__type--ebook{border-top-color:#ff4f00}.ebook-item__type--case-study{border-top-color:#007aff}.ebook-item__type--infographic{border-top-color:#000}.ebook-item__title{margin:0 16px 1em;font-weight:400;font-size:1.15em}.ebook-body{background-image:linear-gradient(#ff4f00, orange);position:relative}.ebook-download__header{display:grid;color:#fff;margin:2em 0 1em;grid-auto-flow:dense;overflow:hidden}@media(min-width: 64em){.ebook-download__header--split{grid-template-columns:1fr 1fr;grid-template-rows:auto max-content}}.ebook-download__header--split{padding:0 2em}.ebook-download__header h1{margin-top:-1em;margin-bottom:10px;grid-column-start:1}@media(min-width: 84.375em){.ebook-download__header h1{font-size:2.75em}}.ebook-download__header .title-container{text-align:center;margin-left:25px}.ebook-download__header-logos{grid-column-start:1;display:flex;flex-wrap:wrap}@media(min-width: 84.375em){.ebook-download__header-logos{margin-bottom:1em}}.ebook-download__header-logos img{height:200px;display:block;margin-left:auto;margin-right:auto}.ebook-download__header-image{grid-row:span 2;place-self:center}.ebook-download__content .form-container{margin-top:16px}.ebook-download__content{background-color:hsla(0,0%,100%,.3);padding:0 5em;box-shadow:0 3px 10px rgba(0,0,0,.25)}@media(min-width: 64em){.ebook-download__content{display:grid;grid-column-gap:5em;grid-template-columns:1fr 1fr}}.ebook-download__content .page__footer{background-color:inherit;text-align:end}.ebook-download__content h1{margin-top:0em;padding-top:1em}.ebook-download__form{padding:2em 1em}.ebook-body-new{height:100%;width:100%;background:linear-gradient(0deg, #ffffff 60%, #e8e8e8 40%)}.ebook-download-new{display:grid;position:relative;grid-template-columns:1fr 1fr;column-gap:3em}.ebook-download-new__container-left{display:grid;grid-template-rows:1fr 1fr;row-gap:0;margin:0 1em}.ebook-download-new__container-left-image1{place-self:center;margin-bottom:-4.1em}.ebook-download-new__container-left-image2{place-self:center;margin-bottom:-5.5em}.ebook-download-new__container-left-image3{place-self:center;margin-bottom:-6.5em}.ebook-download-new__container-left-text{place-self:center}.ebook-download-new__container-left-text h1{margin-top:0}.ebook-download-new__container-left-text h2{margin-top:1em}.ebook-download-new__container-right{display:flex;flex-direction:column;margin:2em 1em}.ebook-download-new__container-right-logo{display:flex;place-self:center;align-self:center}.ebook-download-new__container-right-logo img{width:70%}.ebook-download-new__form{position:relative;max-width:500px;margin:2em 1em;padding:3em 2em;background-color:#fff;box-shadow:0 3px 10px rgba(0,0,0,.25)}.guest-post-body{height:100%;width:100%;background:#fff}.guest-post{display:grid;position:relative;grid-template-columns:1fr 1fr;column-gap:3em}.guest-post__container-left{display:grid;row-gap:0;margin:1em 1em 0 0}.guest-post__container-left-image1{place-self:center;margin-bottom:-4.1em}.guest-post__container-left-image2{place-self:center;
180margin-bottom:-5.5em}.guest-post__container-left-image3{place-self:center;margin-bottom:-6.5em}.guest-post__container-left-text{place-self:center}.guest-post__container-left-text h1{margin-top:0}.guest-post__container-left-text h2{margin-top:1em}.guest-post__container-right{display:flex;flex-direction:column;margin:2em 1em}.guest-post__container-right-logo{display:flex;place-self:center;align-self:center}.guest-post__container-right-logo img{width:70%}.guest-post__form{position:relative;max-width:500px;margin:2em 1em;padding:3em 2em;background-color:#fff;box-shadow:0 3px 10px rgba(0,0,0,.25)}.layout{display:flex;flex-direction:column}.content{flex:1;margin:0 auto;padding:1em;width:100%;display:grid;place-items:center}.content h1{justify-self:flex-start;margin:1em 0}@media(min-width: 84.375em){.content{max-width:1350px}}a:-webkit-any-link.carousel-item{text-decoration-line:none}.carousel-item{background-color:#fff;box-shadow:rgba(2,23,49,.14) 0px 42px 84px 0px;border-radius:8px;overflow:hidden;cursor:pointer;margin:20px 0 0 0;max-width:1100px;opacity:0;grid-area:1/1/2/2;transition:opacity 1s ease-in-out;display:grid;place-items:center}@media(min-width: 64em){.carousel-item{grid-template-columns:3fr 2fr}}.carousel-item:hover .carousel-item__title::after{width:100px}.carousel-item--active{opacity:1;z-index:10}@media(min-width: 64em){.carousel-item__image{min-width:100%;object-fit:cover}}.carousel-item__text{padding:1em;display:flex;flex-direction:column}@media(min-width: 48em){.carousel-item__text{padding:2em}}.carousel-item__header{color:#bbb;font-size:1em;margin:0}.carousel-item__title{font-size:1.563em;margin:0;line-height:1.2;margin:15px 0 10px;font-weight:300}.carousel-item__title::after{content:"";position:relative;display:block;left:0;bottom:0;height:2px;margin:10px 0;background:#b33700;width:0;transition:all .3s}.carousel-item__excerpt{font-size:1.25em;line-height:1.2;flex:1;color:#666;margin:0}.carousel-item__date{display:flex;justify-content:flex-end;color:#bbb;font-size:.8em;margin:0}.secondary-nav{width:100%;margin:1em 0;padding:10px 0;display:flex;flex-wrap:wrap}.secondary-nav__link{margin:4px;padding:0px 8px;border-radius:4px;border:1px solid;font-size:1em}.carousel{display:flex;justify-content:center;place-items:center}.carousel__items{display:grid}.carousel__prev,.carousel__next{cursor:pointer;font-weight:bold;font-size:18px;user-select:none;z-index:5;border-radius:3px;padding:10px}@media(min-width: 48em){.carousel__prev,.carousel__next{margin:10px}}.fade{animation-name:fade;animation-duration:1.5s}@keyframes fade{from{opacity:1}to{opacity:1}}.dot{cursor:pointer;height:8px;width:8px;margin:0 4px;background-color:#bbb;border-radius:50%;display:inline-block;transition:background-color .4s ease}.dot:hover,.dot.active{background-color:#ff4f00}.sidebar{clear:both}.sidebar::after{clear:both;content:"";display:table}@media(max-width: 64em){.sidebar{position:relative;z-index:10;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}}@media(min-width: 64em){.sidebar{float:left;width:calc(200px - 1em);opacity:1;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.sidebar:hover{opacity:1}.sidebar.sticky{overflow-y:auto;height:calc(100vh - 2em - 2em);padding-right:9px}}@media(min-width: 84.375em){.sidebar{width:calc(300px - 1em)}}.sidebar>*{margin-top:1em;margin-bottom:1em}.sidebar h2,.sidebar h3,.sidebar h4,.sidebar h5,.sidebar h6{margin-bottom:0;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}.sidebar p,.sidebar li{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em;line-height:1.5}.sidebar img{width:100%}.sidebar img.emoji{width:20px;height:20px}.sidebar__right{margin-bottom:1em}@media(min-width: 64em){.sidebar__right{position:absolute;top:0;right:0;width:200px;margin-right:-200px;padding-left:1em;z-index:10}.sidebar__right.sticky{clear:both}.sidebar__right.sticky::after{clear:both;content:"";display:table}.sidebar__right.sticky{position:-webkit-sticky;position:sticky;top:2em;float:right}}@media(min-width: 84.375em){.sidebar__right{width:300px;margin-right:-300px}}@media(min-width: 64em){.splash .sidebar__right{position:relative;float:right;margin-right:0}}@media(min-width: 84.375em){.splash .sidebar__right{margin-right:0}}.email-signup{margin-bottom:1em;padding:0;background:#fff}.email-signup .email{background:#ddd;
180width:200px}@media(min-width: 64em){.email-signup{float:right;z-index:10;width:200px;position:absolute}}@media(min-width: 84.375em){.email-signup{width:300px}}.author__avatar{display:table-cell;vertical-align:top;width:36px;height:36px}@media(min-width: 64em){.author__avatar{display:grid;width:auto;height:auto;place-content:center}}.author__avatar img{max-width:110px;border-radius:50%}@media(min-width: 64em){.author__avatar img{padding:5px;border:1px solid hsl(0,0%,93.5%)}}.author__avatar__large{display:table-cell;vertical-align:top;width:56px;height:56px}@media(min-width: 64em){.author__avatar__large{display:block;width:auto;height:auto}}.author__avatar__large img{max-width:190px;border-radius:50%}@media(min-width: 64em){.author__avatar__large img{padding:5px;border:1px solid hsl(0,0%,93.5%)}}.author__content{display:table-cell;vertical-align:top;padding-left:15px;padding-right:25px;line-height:1}@media(min-width: 64em){.author__content{display:block;width:100%;padding-left:0;padding-right:0}}.author__content a{color:inherit;text-decoration:none}.author__name{margin:0}@media(min-width: 64em){.author__name{margin-top:10px;margin-bottom:10px;text-align:center}}.sidebar .author__name{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1em}.author__bio{margin:0}@media(min-width: 64em){.author__bio{margin-top:10px;margin-bottom:20px}}.author__urls-wrapper{position:relative;display:table-cell;vertical-align:middle;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;z-index:10;position:relative;cursor:pointer}.author__urls-wrapper li:last-child a{margin-bottom:0}@media(min-width: 64em){.author__urls-wrapper{display:block}}.author__urls-wrapper button{margin-bottom:0}@media(min-width: 64em){.author__urls-wrapper button{display:none}}.author__urls{display:none;position:absolute;right:0;margin-top:30px;padding:10px;list-style-type:none;border:1px solid hsl(0,0%,93.5%);border-radius:4px;background:#fff;z-index:-1;box-shadow:0 2px 4px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);cursor:default}.author__urls.is--visible{display:block}@media(min-width: 64em){.author__urls{display:grid;position:relative;margin:0;padding:0;border:0;background:rgba(0,0,0,0);box-shadow:none;grid-template-columns:auto auto}}.author__urls:before{display:block;content:"";position:absolute;top:-11px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:hsl(0,0%,93.5%) rgba(0,0,0,0);z-index:0}@media(min-width: 64em){.author__urls:before{display:none}}.author__urls:after{display:block;content:"";position:absolute;top:-10px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff rgba(0,0,0,0);z-index:1}@media(min-width: 64em){.author__urls:after{display:none}}.author__urls li{white-space:nowrap}.author__urls a{display:block;margin-bottom:0;padding-right:5px;padding-top:2px;padding-bottom:2px;color:inherit;font-size:1em;text-decoration:none}.author__urls a:hover{text-decoration:underline}.wide .sidebar__right{margin-bottom:1em}@media(min-width: 64em){.wide .sidebar__right{position:initial;top:initial;right:initial;width:initial;margin-right:initial;padding-left:initial;z-index:initial}.wide .sidebar__right.sticky{float:none}}@media(min-width: 84.375em){.wide .sidebar__right{width:initial;margin-right:initial}}@media print{[hidden]{display:none}*{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}html{margin:0;padding:0;min-height:auto !important;font-size:16px}body{margin:0 auto;background:#fff !important;color:#000 !important;font-size:1rem;line-height:1.5;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{color:#000;line-height:1.2;margin-bottom:.75rem;margin-top:0}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}a,a:visited{color:#000;text-decoration:underline;word-wrap:break-word}table{border-collapse:collapse}thead{display:table-header-group}table,th,td{border-bottom:1px solid #000}td,th{padding:8px 16px}img{border:0;display:block;max-width:100% !important;vertical-align:middle}hr{border:0;border-bottom:2px solid #bbb;height:0;margin:2.25rem 0;padding:0}dt{font-weight:bold}dd{margin:0;margin-bottom:.75rem}abbr[title],acronym[title]{border:0;text-decoration:none}table,blockquote,pre,code,figure,li,hr,ul,ol,a,tr{page-break-inside:avoid}h2,h3,h4,p,a{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid;page-break-inside:avoid}h1+p,h2+p,h3+p{page-break-before:avoid}img{page-break-after:auto;page-break-before:auto;page-break-inside:avoid}pre{white-space:pre-wrap !important;word-wrap:break-word}a[href^="http://"]:after,a[href^="https://"]:after,a[href^="ftp://"]:after{content:" (" attr(href) ")";font-size:80%}abbr[title]:after,acronym[title]:after{content:" (" attr(title) ")"}#main{max-width:100%}.page{margin:0;padding:0;width:100%}.page-break,.page-break-before{page-break-before:always}.page-break-after{page-break-after:always}.no-print{display:none}a.no-reformat:after{content:""}abbr[title].no-reformat:after,acronym[title].no-reformat:after{content:""}.page__hero-caption{color:#000 !important;background:#fff !important;opacity:1}.page__hero-caption a{color:#000 !important}.masthead,.toc,.page__share,.page__related,.pagination,.ads,.page__footer,.page__comments-form,.author__avatar,.author__content,.author__urls-wrapper,.nav__list,.sidebar,.adsbygoogle{display:none !important;height:1px !important}}.hub p{color:#666}.hub-body{background-image:linear-gradient(#ff4f00, orange);position:relative}.hub__header{grid-column:2/3;margin:1em 0}@media(min-width: 48em){.hub__header{margin:4em 0 2em}}
180.hub__header-image{box-shadow:rgba(2,23,49,.14) 0px 20px 84px 0px;margin:1em 0;width:100%}.hub-layout{display:flex}@media(min-width: 48em){.hub-layout{display:grid;grid-template-columns:minmax(auto, 1fr) minmax(100px, 800px) minmax(auto, 1fr)}}.hub-monetization-nav{width:100%;margin:0;padding-top:42px;display:flex;flex-direction:column;position:sticky;top:80px;display:none}@media(min-width: 48em){.hub-monetization-nav{display:flex}}.hub-body{display:flex}.hub__content{font-size:18px;display:flex;flex-direction:column;width:fit-content;max-width:800px;margin-bottom:30px}.hub__content h2{padding-top:60px}.hub__content h1,.hub__content h2,.hub__content h3,.hub__content h4,.hub__content h5,.hub__content h6{color:#000}.hub__content h1 .header-link,.hub__content h2 .header-link,.hub__content h3 .header-link,.hub__content h4 .header-link,.hub__content h5 .header-link,.hub__content h6 .header-link{position:relative;left:.5em;opacity:0;font-size:.8em;-webkit-transition:opacity .2s ease-in-out .1s;-moz-transition:opacity .2s ease-in-out .1s;-o-transition:opacity .2s ease-in-out .1s;transition:opacity .2s ease-in-out .1s;color:#ff4f00}.hub__content h1:hover .header-link,.hub__content h2:hover .header-link,.hub__content h3:hover .header-link,.hub__content h4:hover .header-link,.hub__content h5:hover .header-link,.hub__content h6:hover .header-link{opacity:1}.hub__content h1{font-size:1.563em;margin:0;font-weight:300}@media(min-width: 48em){.hub__content h1{font-size:2.441em}}.hub__content hr{position:relative;top:40px}.hub-link{display:flex;align-items:center;margin:5px 0;padding:1.5em 1.5em;background-color:#eee}.hub-link h5{margin:0}.hub-link h5 a{color:#000;text-decoration:none}.hub-link h5 a:hover{color:#ff4f00;text-decoration:underline}.link-button{margin-left:6px}.link-button a{text-decoration:none}.hub-section{display:flex;flex-direction:column;top:100px;width:fit-content}.hub-sub-section{display:flex;flex-direction:column}.hub-sub-section h5 a{font-size:1.25em;color:#000;text-decoration:none}.hub-sub-section h5 a:hover{color:#ff4f00;text-decoration:underline}.hub-sub-section p{padding-bottom:0}@media(min-width: 48em){.hub-sub-section{display:flex;flex-direction:row}}.hub-sub-section-last{display:flex;flex-direction:column}.hub-sub-section-last h5 a{font-size:1.25em;color:#000;text-decoration:none}.hub-sub-section-last h5 a:hover{color:#ff4f00;text-decoration:underline}.hub-sub-section-last p{padding-bottom:0}@media(min-width: 48em){.hub-sub-section-last{display:flex;flex-direction:row}}.sticky-cta{background:var(--Citrus, radial-gradient(95.82% 70.71% at 100% 0%, rgba(250, 215, 145, 0.64) 0%, rgba(250, 221, 145, 0) 100%), radial-gradient(121.53% 116.92% at 100% 91.41%, rgba(255, 242, 126, 0.78) 0%, rgba(255, 244, 126, 0.69) 18.14%, rgba(255, 242, 126, 0.41) 53.88%, rgba(255, 242, 126, 0.15) 74.54%, rgba(255, 242, 126, 0) 100%), radial-gradient(599.22% 35.81% at 100% 0%, rgba(255, 222, 137, 0.6) 0%, rgba(255, 222, 137, 0) 97.13%), radial-gradient(180.07% 180.05% at 40.1% -4.04%, #ff7c1d 0%, rgba(255, 124, 29, 0) 100%), radial-gradient(215.78% 106.31% at 19.45% 86.62%, #ff4895 0%, rgba(255, 72, 149, 0) 100%), #ff4f00);z-index:10;position:sticky;justify-self:flex-end;bottom:1em;right:1em;margin-top:-320px}.sticky-cta--left{justify-self:flex-start}.sticky-cta{background-color:#fff;text-align:center;padding:1em;box-shadow:0 0 20px 0px rgba(0,0,0,.1490196078);border-radius:.25em;width:250px;display:grid;justify-items:center}@media screen and (max-width: 1024px){.sticky-cta{bottom:0;margin:1em 0 0;justify-self:center;display:flex;width:100%;max-width:600px;padding:.5em;align-items:center}}.sticky-cta img{padding:.5em}@media screen and (max-width: 1024px){.sticky-cta img{margin-left:.5em;max-width:100px}}@media screen and (max-width: 600px){.sticky-cta img{display:none}}.sticky-cta h3{padding-bottom:.5em;font-weight:500}@media screen and (max-width: 1024px){.sticky-cta h3{font-weight:500;margin:.5em;flex:1}}.sticky-cta h3{color:#fff;margin-top:1em}@media screen and (max-width: 1024px){.sticky-cta__close-button{margin:0;order:1}}.sticky-cta__close-button{background-color:rgba(0,0,0,0);padding:0;margin:-10px -10px 0 0;place-self:end}.sticky-cta__close-button:focus,.sticky-cta__close-button:hover{outline:none;background-color:hsl(0,0%,93.5%)}.sticky-cta .btn,.sticky-cta #goog-wm-sb{display:flex;justify-content:center;align-items:center;width:90%;background-color:rgba(0,0,0,0);border:1px solid #fff;text-align:center !important}@media screen and (max-width: 1024px){.sticky-cta .btn,.sticky-cta #goog-wm-sb{display:block;justify-content:center;line-height:1;padding:.25em .5em;max-width:100px;font-weight:500}}.sticky-cta svg{color:#666;width:20px}.sticky-cta--close{display:none}.cta-section__wrapper{display:flex;align-items:center;border-radius:4px;background:var(--Citrus, radial-gradient(95.82% 70.71% at 100% 0%, rgba(250, 215, 145, 0.64) 0%, rgba(250, 221, 145, 0) 100%), radial-gradient(121.53% 116.92% at 100% 91.41%, rgba(255, 242,
180126, 0.78) 0%, rgba(255, 244, 126, 0.69) 18.14%, rgba(255, 242, 126, 0.41) 53.88%, rgba(255, 242, 126, 0.15) 74.54%, rgba(255, 242, 126, 0) 100%), radial-gradient(599.22% 35.81% at 100% 0%, rgba(255, 222, 137, 0.6) 0%, rgba(255, 222, 137, 0) 97.13%), radial-gradient(180.07% 180.05% at 40.1% -4.04%, #ff7c1d 0%, rgba(255, 124, 29, 0) 100%), radial-gradient(215.78% 106.31% at 19.45% 86.62%, #ff4895 0%, rgba(255, 72, 149, 0) 100%), #ff4f00);padding:24px;gap:24px;box-shadow:0 4px 6px rgba(0,0,0,.1)}.cta-section__text{flex:1;color:#fff}.cta-section__excerpt{display:block;padding-top:1rem;font-size:1.5rem;font-weight:500;color:#fff;line-height:1.3}.cta-section__subtext{display:block;padding-top:.5rem;padding-bottom:1rem;font-size:1rem;font-weight:400;color:#fff}.buttoncta,.buttoncta:visited{display:inline-flex;width:120px;justify-content:center;align-items:center;padding:.5em;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em;font-weight:bold;text-align:center;text-decoration:none;border-width:0;border-radius:4px;cursor:pointer;line-height:1.4;color:#fff;text-decoration:none;box-shadow:0px 4px 8px 0px rgba(0,0,0,.08)}.buttoncta--large{font-size:1rem;color:#f3001d}.buttoncta--primary{background-color:#fff;color:#f3001d}.cta-section__image{border-radius:4px;display:flex;height:175px;justify-content:center;align-items:center;flex-shrink:0}@media(max-width: 768px){.cta-section__wrapper{flex-direction:column}.cta-section__image{max-width:100%;margin:2rem 0}}.masthead .hs-form-private{background-color:rgba(0,0,0,0);display:flex;margin:0;padding:0;place-items:center}.masthead .hs-form-private>div:first-child{flex:1}.masthead .hs-richtext{display:none}.masthead label{display:none}.masthead .hs-input{margin:0;border:1px solid #bbb;padding:3px 8px !important;font-size:.8em;line-height:1;box-shadow:none}.masthead .hs-button{display:inline-block;margin:.25em;padding:.5em 1em;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em;font-weight:bold;text-align:center;text-decoration:none;border-width:0;border-radius:4px;line-height:1.4;cursor:pointer;color:#fff;background-color:#ff4f00;padding:7px 8px}.landing-subscription{width:100%}.landing-subscription .hs-form-private{display:grid;flex-wrap:wrap;grid-gap:.5em}.landing-subscription .hs-form-private>div:first-child{min-width:100%}@media(min-width: 48em){.landing-subscription .hs-form-private>div:first-child{display:flex;min-width:0;flex:1}}@media(min-width: 48em){.landing-subscription .hs-form-private{display:flex;padding:1em 3em;margin:2em 0}}.landing-subscription .hs-richtext{flex:1;font-size:1.25em}.landing-subscription .hs-richtext p{margin:0}.landing-subscription .hs-email{display:flex;place-items:center;min-width:30%}.landing-subscription .hs-email .input{width:100%;margin-right:10px;height:100%}.landing-subscription .hs-email input{height:100%;box-shadow:none}.landing-subscription .hs-submit,.landing-subscription .hs-actions{display:flex}.landing-subscription .hs-button{display:inline-block;margin:.25em;padding:.5em 1em;font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:.8em;font-weight:bold;text-align:center;text-decoration:none;border-width:0;border-radius:4px;line-height:1.4;cursor:pointer;color:#fff;background-color:#ff4f00;padding:7px 8px}.landing-subscription label{display:none}.landing-subscription input{margin:0}.post{display:grid;grid-template-columns:minmax(auto, 1fr) minmax(100px, 800px) minmax(auto, 1fr)}.post pre{word-break:break-all}.post--wide .post__header,.post--wide .post__body,.post--wide .post__footer{grid-column:2/4}.post__header{grid-column:2/3;margin:1em 0}@media(min-width: 48em){.post__header{margin:4em 0 2em}}.post__header time{color:#bbb;font-size:1em;font-weight:300}@media(min-width: 48em){.post__header time{font-size:1.25em}}.post__header .post__categories::before{color:#bbb;content:"â";margin:0 .75em}.post__header .post__category{text-decoration-line:none;color:#bbb;font-size:1em;font-weight:300;margin-right:1em}@media(min-width: 48em){.post__header .post__category{font-size:1.25em}}
180.post__header .post__category:visited{color:#bbb}.post__header .post__category:hover,.post__header .post__category :focus{color:#ff4f00}.post__header h1{font-size:1.563em;margin:0;font-weight:300}@media(min-width: 48em){.post__header h1{font-size:2.441em}}.post__header-image{border-radius:16px;box-shadow:rgba(2,23,49,.14) 0px 20px 84px 0px;border:4px solid #fff;margin:2em 0;width:100%}.post__navigation{grid-column:2/3}@media(min-width: 48em){.post__navigation{opacity:.9;grid-column:1/2;grid-row:1/4;position:-webkit-sticky;position:sticky;place-self:flex-start;top:4em;margin:4em 2em 1em}.post__navigation:hover{opacity:1}}.post__right-sidebar{grid-column:2/3}@media(min-width: 48em){.post__right-sidebar{grid-column:3/4;grid-row:1/4;margin-top:4em;max-width:260px}}.post__body{grid-column:2/3}@media(min-width: 48em){.post__body{display:flex;flex-direction:row-reverse}}.post__body .post__share{display:flex;margin-bottom:1em}@media(min-width: 48em){.post__body .post__share{display:grid;grid-template-rows:min-content min-content min-content;align-self:self-start;margin-left:1.5em;position:-webkit-sticky;position:sticky;top:4em}.post__body .post__share>*{display:block}}.post__body .post__share--icon{color:#666;font-size:22px;border:1px solid hsl(0,0%,93.5%);width:40px;height:40px;display:flex;align-content:baseline;place-items:center;place-content:space-around;border-radius:4px;margin-right:8px}@media(min-width: 48em){.post__body .post__share--icon{width:48px;height:48px;margin:8px}}.post__body .post__content{flex:1;color:#666}.post__body .post__content>*:first-child{margin-top:0}.post__body .post__content p{margin-top:0}.post__body .post__content h1,.post__body .post__content h2,.post__body .post__content h3,.post__body .post__content h4,.post__body .post__content h5,.post__body .post__content h6{color:#000}.post__body .post__content h1 .header-link,.post__body .post__content h2 .header-link,.post__body .post__content h3 .header-link,.post__body .post__content h4 .header-link,.post__body .post__content h5 .header-link,.post__body .post__content h6 .header-link{position:relative;left:.5em;opacity:0;font-size:.8em;-webkit-transition:opacity .2s ease-in-out .1s;-moz-transition:opacity .2s ease-in-out .1s;-o-transition:opacity .2s ease-in-out .1s;transition:opacity .2s ease-in-out .1s;color:#ff4f00}.post__body .post__content h1:hover .header-link,.post__body .post__content h2:hover .header-link,.post__body .post__content h3:hover .header-link,.post__body .post__content h4:hover .header-link,.post__body .post__content h5:hover .header-link,.post__body .post__content h6:hover .header-link{opacity:1}.post__body .post__content dl{font-size:1em}.post__body .post__content dt{margin-top:1em;font-weight:bold}.post__body .post__content dd{margin-left:1em}.post__body .post__author .author__profile{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;grid-column-gap:1em}.post__body .post__author .author__avatar{grid-row:1/-1;width:80px;height:80px;place-self:center}.post__body .post__author .author__avatar img{max-width:80px}.post__body .post__author .author__content{padding:0}.post__body .post__author .author__name{font-size:1em;text-align:left}.post__body .post__author .author__bio{color:#666;margin:10px 0;line-height:1.2}.post__body .post__author .author__urls-wrapper{display:grid}.post__body .post__author .author__urls.is--visible{display:grid}@media(min-width: 64em){.post__body .post__author .author__urls{display:flex;flex-wrap:wrap}}.post__body .post__author .author__urls li{margin-right:10px}.post__footer{grid-column:2/3}.post__footer .post__related h4,.post__footer .post__comments h4{color:#666;font-size:1em}.post__podcast-toc{padding-inline-start:0;margin-left:70px}.post__podcast-toc a{text-decoration:none}.post__podcast-toc li{display:block;line-height:1.2;margin:.7em 0;font-weight:300}.post__podcast-toc span{margin-left:-50px;margin-right:.5em;font-weight:500}.post__podcast-badges-row{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.post__podcast-badges-row a{flex:50%;padding:10px}.popup-modal{display:block;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000;display:none}.popup-content{overflow:hidden;position:relative;align-items:center;background:#fff;border-radius:.5rem;box-shadow:0 4px 6px rgba(0,0,0,.1);color:#272f34}.popup-logo-close{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.popup-top{background:var(--Citrus, radial-gradient(95.82% 70.71% at 100% 0%, rgba(250, 215, 145, 0.64) 0%, rgba(250, 221, 145, 0) 100%), radial-gradient(121.53% 116.92% at 100% 91.41%, rgba(255, 242,
180126, 0.78) 0%, rgba(255, 244, 126, 0.69) 18.14%, rgba(255, 242, 126, 0.41) 53.88%, rgba(255, 242, 126, 0.15) 74.54%, rgba(255, 242, 126, 0) 100%), radial-gradient(599.22% 35.81% at 100% 0%, rgba(255, 222, 137, 0.6) 0%, rgba(255, 222, 137, 0) 97.13%), radial-gradient(180.07% 180.05% at 40.1% -4.04%, #ff7c1d 0%, rgba(255, 124, 29, 0) 100%), radial-gradient(215.78% 106.31% at 19.45% 86.62%, #ff4895 0%, rgba(255, 72, 149, 0) 100%), #ff4f00);display:flex;padding:50px;flex-direction:column;align-items:center;gap:16px}.image-wrapper{display:inline-block;border-radius:10px;overflow:hidden}.image-wrapper img{max-width:480px;max-height:260px;object-fit:contain;width:100%;height:auto}.popup-bottom{text-align:center;display:flex;align-items:center;justify-content:center;display:flex;padding:32px 24px;flex-direction:column;gap:24px}.popup-hero{color:var(--Moesif-Orange, var(--moesif-orange, #ff4f00));align-self:center;text-align:center;font-size:24px;font-style:normal;font-weight:700;line-height:normal;letter-spacing:-0.456px;width:20em}.popup-body{color:var(--Moesif-Black, #272f34);text-align:center;font-size:16px;font-style:normal;font-weight:400;line-height:normal;letter-spacing:-0.304px;width:30em}.popup-footer{color:#aab4bd;text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%;letter-spacing:-0.266px}.cta-button,button.cta-button{font-size:18px;padding:12;border-radius:3px;background-color:#ff4f00;color:#fff !important;text-decoration:none}.close-button{position:absolute;top:10px;right:15px;font-size:36px;cursor:pointer;color:#fff;color:hsla(0,0%,100%,.7)}.close-link{color:inherit;text-decoration:none;cursor:pointer}.dropdown-menu nav ul ul{position:absolute;min-width:auto;background:#fff;display:none;box-shadow:0 5px 60px 0 rgba(0,0,0,.2);padding-bottom:5px;border-radius:8px}.dropdown-menu nav ul li:hover ul{display:block}.masthead__dropdown-menu__item{display:block;font-weight:lighter;background:#fff;margin-top:5px;margin-bottom:5px}.podcast-index{display:grid;grid-gap:60px}@media(min-width: 48em){.podcast-index{grid-template-columns:minmax(max-content, 1fr) minmax(100px, 600px)}}.podcast-index__sidebar{display:grid;justify-items:center;text-align:center}.podcast-index__sidebar .podcast-index__cover{max-width:200px;width:100%;border-radius:8px}.podcast-index__sidebar h1{justify-self:center;margin-bottom:0}@media(min-width: 48em){.podcast-index__sidebar{text-align:left;display:block;max-width:300px}.podcast-index__sidebar .podcast-index__cover{max-width:100%}}.podcast-index__badges{display:grid;gap:1em;max-width:230px}.podcast-index .archive-card__teaser{align-items:flex-end;background-color:#734d29}div#disqus_thread iframe[sandbox]{max-height:0px !important} 181 </style> 182 183<!--[if IE]> 184 <style> 185 /* old IE unsupported flexbox fixes */ 186 .greedy-nav .site-title { 187 padding-right: 3em; 188 } 189 .greedy-nav button { 190 position: absolute; 191 top: 0; 192 right: 0; 193 height: 100%; 194 } 195 </style> 196<![endif]--> 197 198 199 200 <!-- start custom head snippets --> 201 202<!-- Google Tag Manager -->
203<script>
vendor: 343 bytes, lines 203-207
203(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 204 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 205 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 206 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 207 })(window,document,'script','dataLayer','
207GTM-WXWPX6T
vendor: 3 bytes, line 207
207');
207</script>
207 208<!-- End Google Tag Manager --> 209 210<!-- Facebook Pixel Code -->
211<script>
vendor: 435 bytes, lines 211-220
211 212 !function(f,b,e,v,n,t,s) 213 {if(f.fbq)return;n=f.fbq=function(){n.callMethod? 214 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 215 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 216 n.queue=[];t=b.createElement(e);t.async=!0; 217 t.src=v;s=b.getElementsByTagName(e)[0]; 218 s.parentNode.insertBefore(t,s)}(window, document,'script', 219 'https://connect.facebook.net/en_US/fbevents.js'); 220 fbq('init', '
220258723467888184
vendor: 34 bytes, lines 220-221
220'); 221 fbq('track', 'PageView');
222</script>
222 223<!-- End Facebook Pixel Code --> 224 225<!-- Clearbit Visitor Tracker Code -->
226<script type="text/javascript"> 227 (function (d, u, h, s) { 228 h = d.getElementsByTagName('head')[0]; 229 s = d.createElement('script'); 230 s.async = 1; 231 s.src = u + new Date().getTime(); 232 h.appendChild(s); 233 })(document, 'https://grow.clearbitjs.com/api/pixel.js?v='); 234 </script>
234 235 <!-- End Clearbit Visitor Tracker Code --> 236<!-- end custom head snippets --> 237 238<!-- Add posthog script -->
vendor: 1,212 bytes, lines 239-242
239<script> 240 !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys onSessionId".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]); 241 posthog.init('phc_WAJsVgzU1R0oSYDjVfIHkoLXvVHj6HPdI9NrnVr58IQ',{api_host:'https://app.posthog.com'}) 242</script>
242 243<!-- end posthog script --> 244 245<!-- Add MS Clarity script: -->
246<script type="text/javascript"> 247 (function(c,l,a,r,i,t,y){ 248 c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 249 t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 250 y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 251 })(window, document, "clarity", "script", "4da0o51axz"); 252</script>
252 253<!-- end MS Clarity script --> 254 255</head> 256 257<body class="layout"> 258 <nav class="skip-links"> 259 <h2 class="screen-reader-text">Skip links</h2> 260 <ul> 261 <li><a href="#site-nav" class="screen-reader-shortcut">Skip to primary navigation</a></li> 262 <li><a href="#main" class="screen-reader-shortcut">Skip to content</a></li> 263 <li><a href="#footer" class="screen-reader-shortcut">Skip to footer</a></li> 264 </ul> 265</nav> 266 267 <!--[if lt IE 9]> 268<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience.</div> 269<![endif]--> 270 271 272 273<div class="masthead" id='masthead'> 274 <div class="masthead__inner-wrap"> 275 <div class="masthead__menu dropdown-menu"> 276 <nav id="site-nav" class="greedy-nav"> 277 278 <a class="site-logo" href="https://www.moesif.com"><img src="https://blog.moesif.com/images/moesif-logo-lockup-branded-mixed.svg" 279 alt="moesif"></a> 280 281 <span class="masthead__divider"></span> 282 283 <a class="site-title" href="/blog/">Blog</a> 284 285 286 287 <ul class="visible-links"> 288 289 290 291 <li class="masthead__menu-item "> 292 <a href="https://www.moesif.com/features/api-analytics?utm_source=blog&utm_medium=header&utm_content=home" >API Observability</a> 293 294 <ul class=""> 295 296 297 <li class="masthead__dropdown-menu__item"> 298 <a href="https://www.moesif.com/features/api-analytics?utm_source=blog&utm_medium=header&utm_content=home" >API Product Analytics</a> 299 </li> 300 301 302 <li class="masthead__dropdown-menu__item"> 303 <a href="https://www.moesif.com/features/api-logs?utm_source=blog&utm_medium=header&utm_content=home" >API Logs and Metrics</a> 304 </li> 305 306 307 <li class="masthead__dropdown-menu__item"> 308 <a href="https://www.moesif.com/features/api-monitoring?utm_source=blog&utm_medium=header&utm_content=home" >API Monitoring</a> 309 </li> 310 311 312 <li class="masthead__dropdown-menu__item"> 313 <a href="https://www.moesif.com/features/api-dashboards?utm_source=blog&utm_medium=header&utm_content=home" >Custom Dashboard</a> 314 </li> 315 316 317 <li class="masthead__dropdown-menu__item"> 318 <a href="https://www.moesif.com/features/embedded-api-logs?utm_source=blog&utm_medium=header&utm_content=home" >Embedded Metrics</a> 319 </li> 320 321 </ul> 322 323 </li> 324 325 326 <li class="masthead__menu-item "> 327 <a href="https://www.moesif.com/solutions/metered-api-billing?utm_source=blog&utm_medium=header&utm_content=home" >API Monetization</a> 328 329 <ul class=""> 330 331 332 <li class="masthead__dropdown-menu__item"> 333 <a href="https://www.moesif.com/solutions/metered-api-billing?utm_source=blog&utm_medium=header&utm_content=home" >Usage Based Billing</a> 334 </li> 335 336 337 <li class="masthead__dropdown-menu__item"> 338 <a href="https://www.moesif.com/features/product-catalog?utm_source=blog&utm_medium=header&utm_content=home" >Product Catalog</a> 339 </li> 340 341 342 <li class="masthead__dropdown-menu__item"> 343 <a href="https://www.moesif.com/features/api-governance-rules?utm_source=blog&utm_medium=header&utm_content=home" >Quotas and Governance</a> 344 </li> 345 346 347 <li class="masthead__dropdown-menu__item"> 348 <a href="https://www.moesif.com/solutions/developer-portal?utm_source=blog&utm_medium=header&utm_content=home" >Developer Portal</a> 349 </li> 350 351 </ul> 352 353 </li> 354 355 356 <li class="masthead__menu-item "> 357 <a href="/blog/changelog/?utm_campaign=Int-site&utm_source=blog&utm_medium=header&utm_content=changelog" >Changelog</a> 358 359 </li> 360 361 362 <li class="masthead__menu-item "> 363 <a href="/blog/ebooks/?utm_campaign=Int-site&utm_source=blog&utm_medium=header&utm_content=resources" >Resources</a> 364 365 <ul class=""> 366 367 368 <li class="masthead__dropdown-menu__item"> 369 <a href="/blog/hubs/api-monetization/?utm_campaign=Int-site&utm_source=blog&utm_medium=header&utm_content=how-to-monetize#api-monetization" >How to Monetize</a> 370 </li> 371 372 373 <li class="masthead__dropdown-menu__item"> 374 <a href="/blog/ebooks/?utm_campaign=Int-site&utm_source=blog&utm_medium=header&utm_content=resources" >Ebooks</a> 375 </li> 376 377 378 <li class="masthead__dropdown-menu__item"> 379 <a href="/blog/categories/?utm_campaign=Int-site&utm_source=blog&utm_medium=header&utm_content=resources" >Categories</a> 380 </li> 381 382 383 <li class="masthead__dropdown-menu__item"> 384 <a href="/blog/tags/?utm_campaign=Int-site&utm_source=blog&utm_medium=header&utm_content=resources" >Tags</a> 385 </li> 386 387 388 <li class="masthead__dropdown-menu__item"> 389 <a href="/blog/api-guide/?utm_campaign=Int-site&utm_source=blog&utm_medium=header&utm_content=resources" >API Guide For Best Practices</a> 390 </li> 391 392 393 <li class="masthead__dropdown-menu__item"> 394 <a href="/blog/write-for-us/" >Guest Post Submission</a> 395 </li> 396 397 </ul> 398 399 </li> 400 401 402 403 404 <li> 405 <button class="search__toggle" type="button">
406 <span 407 class="visually-hidden">Toggle search</span> 408 <svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> 409 <path 410 d="M13.89,12.47a6,6,0,0,0,.95-4.87,6,6,0,1,0-2.37,6.29L18.58,20A1,1,0,0,0,20,20h0a1,1,0,0,0,0-1.42ZM9,13a4,4,0,1,1,4-4A4,4,0,0,1,9,13Z" /> 411 </svg> 412 </button> 413 </li> 414 415 </ul> 416 417 <a 418 id="blog-header-signup" 419 href="https://www.moesif.com/wrap?onboard=true&utm_source=blog" 420 class="btn btn--inverse-primary btn--small" 421 type="button" 422 > 423 Sign Up/Login 424 </a> 425 426 <button class="greedy-nav__toggle hidden" type="button"> 427 <span class="visually-hidden">Toggle Menu</span> 428 <svg class='icon' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> 429 <path d="M18,8H6A1,1,0,0,1,6,6H18a1,1,0,0,1,0,2Z" /> 430 <path d="M18,18H6a1,1,0,0,1,0-2H18a1,1,0,0,1,0,2Z" /> 431 <path d="M18,13H6a1,1,0,0,1,0-2H18a1,1,0,0,1,0,2Z" /> 432 </svg> 433 </button> 434 <ul class="hidden-links hidden"></ul> 435 </nav> 436 </div> 437 </div> 438</div>
439<script> 440 $(document).ready(function () { 441 $("nav div").click(function () { 442 $("ul").slideToggle(); 443 $("ul ul").css("display", "none"); 444 }); 445 $("ul li").click(function () { 446 $(this).siblings().find("ul").slideUp(); 447 $(this).find("ul").slideToggle(); 448 }); 449 450 $(window).resize(function () { 451 if ($(window).width() > 768) { 452 $("ul").removeAttr("style"); 453 } 454 }); 455 }); 456</script>
456 457 458 459 460 <div class="search-content"> 461 <div class="search-content__inner-wrap"><div class="search-searchbar"></div> 462 <div class="search-hits"></div></div> 463 464 </div> 465 466 467 <div class="content"> 468 469 470 471<div class="carousel"> 472 <a class="carousel__prev" onclick="window.CAROUSEL.onClickPrevious()">❮</a> 473 <div class="carousel__items"> 474 475 <a class="carousel-item" href=/blog/monitoring/model-context-protocol/How-to-Setup-Observability-For-Your-MCP-Server-with-Moesif/> 476 477 <img class="carousel-item__image" width="976" height="600" src=https://blog.moesif.com/images/landing/How-to-Setup-Observability-for-Your-MCP-Server-with-Moesif.png alt=How to Setup Observability for your MCP Server with Moesif"> 478 479 480 <div class="carousel-item__text"> 481 <p class="carousel-item__header">Featured Post</p> 482 <h3 class="carousel-item__title"> How to Setup Observability for your MCP Server with Moesif</h3> 483 <p class="carousel-item__excerpt"> Keep a pulse on your MCP server's health. Learn how to set up Moesif for deep observability into your Model Context Protocol traffic. </p> 484 485 </div> 486 </a> 487 488 <a class="carousel-item" href=/blog/technical/api-development/Achieving-API-Traceability-With-OpenTelemetry-And-Moesif/> 489 490 <img class="carousel-item__image blur-up lazyload" width="976" height="600" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src=https://blog.moesif.com/images/landing/Achieving-API-Traceability-With-OpenTelemetry-And-Moesif.png alt=Achieving API Traceability with OpenTelemetry and Moesif"> 491 492 493 <div class="carousel-item__text"> 494 <p class="carousel-item__header">Featured Post</p> 495 <h3 class="carousel-item__title"> Achieving API Traceability with OpenTelemetry and Moesif</h3> 496 <p class="carousel-item__excerpt"> APIs are complex. Moesif's OpenTelemetry integration helps you get a clear picture of what's happening in your system, with unified API analytics and granular trace data. </p> 497 498 </div> 499 </a> 500 501 <a class="carousel-item" href=/blog/technical/api-development/Monetizing-AI-APIs-with-Billing-Meters-in-Moesif/> 502 503 <img class="carousel-item__image blur-up lazyload" width="976" height="600" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src=https://blog.moesif.com/images/landing/ai-apis-with-billing-meters.png alt=Monetizing AI APIs with Billing Meters in Moesif"> 504 505 506 <div class="carousel-item__text"> 507 <p class="carousel-item__header">Featured Post</p> 508 <h3 class="carousel-item__title"> Monetizing AI APIs with Billing Meters in Moesif</h3> 509 <p class="carousel-item__excerpt"> Don't just charge per API call. Learn how Moesif's Billing Meters let you monetize AI APIs by tracking metrics like token usage and more, seamlessly integrating with billing providers like Stripe. </p> 510 511 </div> 512 </a> 513 514 <a class="carousel-item" href=/blog/api-product-management/stripe/Using-Moesif-And-Stripe-For-Pay-As-You-Go-API-Billing/> 515 516 <img class="carousel-item__image blur-up lazyload" width="976" height="600" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src=https://blog.moesif.com/images/landing/PAYG.png alt=Moesif and Stripe for Pay-As-You-Go API Billing"> 517 518 519 <div class="carousel-item__text"> 520 <p class="carousel-item__header">Featured Post</p> 521 <h3 class="carousel-item__title"> Moesif and Stripe for Pay-As-You-Go API Billing</h3> 522 <p class="carousel-item__excerpt"> Offering customers a pay-as-you-go (PAYG) option with Moesif and Stripe is straightforward. By integrating both platforms, you can track API usage, automatically block access when credits run out, and notify users via email to top up their accounts. </p> 523 524 </div> 525 </a> 526 527 <a class="carousel-item" href=/blog/monitoring/Monetizing-Proprietary-Data-Through-APIs/> 528 529 <img class="carousel-item__image blur-up lazyload" width="976" height="600" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src=https://blog.moesif.com/images/landing/Monetizing-Proprietary-Data-Through-APIs.png alt=Monetizing Proprietary Data Through APIs: How to Unlock New Revenue in the AI World"> 530 531 532 <div class="carousel-item__text"> 533 <p class="carousel-item__header">Featured Post</p> 534 <h3 class="carousel-item__title"> Monetizing Proprietary Data Through APIs: How to Unlock New Revenue in the AI World</h3> 535 <p class="carousel-item__excerpt"> Data is the new gold, and your proprietary data could be your most valuable asset. Learn how to monetize it through APIs with strategies like pay-as-you-go billing, and discover how to meter consumption based on data value, not just API calls. </p> 536 537 </div> 538 </a> 539 540 <a class="carousel-item" href=/blog/api-analytics/api-strategy/API-Analytics/> 541 542 <img class="carousel-item__image blur-up lazyload" width="976" height="600" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src=https://blog.moesif.com/images/landing/APIAnalytics.png alt=What is API Analytics? - The Ultimate Guide"> 543 544 545 <div class="carousel-item__text"> 546 <p class="carousel-item__header">Featured Post</p> 547 <h3 class="carousel-item__title"> What is API Analytics? - The Ultimate Guide</h3> 548 <p class="carousel-item__excerpt"> Move beyond simple monitoring with API Analytics. This guide shows you how to turn raw API data into strategic insights about user behavior, security, and performance. </p> 549 550 </div> 551 </a> 552 553 <div style="text-align:center"> 554 555 <!-- formatter throw a temper tantrum here, but it works. -->
556 <span class="dot" onclick=window.CAROUSEL.onClickDot(1)></span> 557 558 <!-- formatter throw a temper tantrum here, but it works. --> 559 <span class="dot" onclick=window.CAROUSEL.onClickDot(2)></span> 560 561 <!-- formatter throw a temper tantrum here, but it works. --> 562 <span class="dot" onclick=window.CAROUSEL.onClickDot(3)></span> 563 564 <!-- formatter throw a temper tantrum here, but it works. --> 565 <span class="dot" onclick=window.CAROUSEL.onClickDot(4)></span> 566 567 <!-- formatter throw a temper tantrum here, but it works. --> 568 <span class="dot" onclick=window.CAROUSEL.onClickDot(5)></span> 569 570 <!-- formatter throw a temper tantrum here, but it works. --> 571 <span class="dot" onclick=window.CAROUSEL.onClickDot(6)></span> 572 573 </div> 574 </div> 575 <a class="carousel__next" onclick="window.CAROUSEL.onClickAdvance()">❯</a> 576</div> 577 578 579 580<nav class="secondary-nav" id="secondary-nav"> 581 <a class="secondary-nav__link" href="/blog/api-guide/"> 582 API Guide 583 </a> 584 <a class="secondary-nav__link" href="/blog/categories/api-development/"> 585 API Development 586 </a> 587 <a class="secondary-nav__link" href="/blog/categories/api-security/"> 588 API Security 589 </a> 590 <a class="secondary-nav__link" href="/blog/categories/api-analytics/"> 591 API Analytics 592 </a> 593 <a class="secondary-nav__link" href="/blog/categories/api-product-management/"> 594 API Product Management 595 </a> 596 <a class="secondary-nav__link" href="/blog/categories/developer-relations/"> 597 Developer Relations and Marketing 598 </a> 599 <a class="secondary-nav__link" href="/blog/categories/api-strategy/"> 600 API Strategy 601 </a> 602 <a class="secondary-nav__link" href="/blog/categories/company/"> 603 Company 604 </a> 605 <a class="secondary-nav__link" href="/blog/podcasts/"> 606 Podcasts 607 </a> 608</nav> 609 610<div class="archive-card-grid"> 611 612 613 614 615 616 617 618 619 620 621 622 623 624<a href="/blog/api-strategy/api-development/Leveraging-AI-For-a-Better-API-Strategy/" rel="permalink" class="archive-card "> 625 <div class="archive-card__teaser"> 626 627 628 629 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/api-strategy.svg' alt=Leveraging AI For a Better API Strategy 630> 631 632 </div> 633 <div class="archive-card__text"> 634 <div class="archive-card__categories"> 635 636 <p> 637 API Strategy 638 </p> 639 </div> 640 641 <h2 class="archive-card__title no-anchor" itemprop="headline"> 642 643 Leveraging AI For a Better API Strategy 644 645 646 </h2> 647 648 649 <p class="archive-card__excerpt" itemprop="description"> 650 Learn how to leverage AI to build and fortify your API strategy. Improve design, governance, documentation, and align APIs with business outcomes. 651 652 </p> 653 654 655 656 <p class="page__meta archive-card__date"> 657 <time datetime=" 2026-03-18">March 18, 2026 658 659 </div> 660</a> 661 662 663
664 665 666 667 668 669 670 671 672 673 674 675 676<a href="/blog/api-strategy/The-5-Best-Mixpanel-Alternatives-of-2025/" rel="permalink" class="archive-card "> 677 <div class="archive-card__teaser"> 678 679 680 681 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/api-strategy.svg' alt=The 5 Best Mixpanel Alternatives of 2025 682> 683 684 </div> 685 <div class="archive-card__text"> 686 <div class="archive-card__categories"> 687 688 <p> 689 API Strategy 690 </p> 691 </div> 692 693 <h2 class="archive-card__title no-anchor" itemprop="headline"> 694 695 The 5 Best Mixpanel Alternatives of 2025 696 697 698 </h2> 699 700 701 <p class="archive-card__excerpt" itemprop="description"> 702 Learn about the best Mixpanel alternatives to determine the right analytics solution for your use case. 703 704 </p> 705 706 707 708 <p class="page__meta archive-card__date"> 709 <time datetime=" 2025-11-28">November 28, 2025 710 711 </div> 712</a> 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728<a href="/blog/technical/api-development/How-to-Leverage-Moesif-Effectively-for-API-Observability/" rel="permalink" class="archive-card "> 729 <div class="archive-card__teaser"> 730 731 732 733 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/technical.svg' alt=How to Leverage Moesif Effectively for API Observability 734> 735 736 </div> 737 <div class="archive-card__text"> 738 <div class="archive-card__categories"> 739 740 <p> 741 API Development 742 </p> 743 </div> 744 745 <h2 class="archive-card__title no-anchor" itemprop="headline"> 746 747 How to Leverage Moesif Effectively for API Observability 748 749 750 </h2> 751 752 753 <p class="archive-card__excerpt" itemprop="description"> 754 Effectively leverage Moesif for API observability through best practices for integration, event enrichment, custom actions, and engineering workflow integrat... 755 </p> 756 757 758 759 <p class="page__meta archive-card__date"> 760 <time datetime=" 2025-12-02">December 02, 2025 761 762 </div> 763</a> 764 765 766
767 768 769 770 771 772 773 774 775 776 777 778 779<a href="/blog/api-strategy/api-monetization/How-to-Build-an-Internal-Chargeback-Model-for-Your-API-and-AI-Usage-Using-Moesif/" rel="permalink" class="archive-card "> 780 <div class="archive-card__teaser"> 781 782 783 784 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/api-strategy.svg' alt=How to Build an Internal Chargeback Model for Your API and AI Usage Using Moesif 785> 786 787 </div> 788 <div class="archive-card__text"> 789 <div class="archive-card__categories"> 790 791 <p> 792 API Strategy 793 </p> 794 </div> 795 796 <h2 class="archive-card__title no-anchor" itemprop="headline"> 797 798 How to Build an Internal Chargeback Model for Your API and AI Usage Using Moesif 799 800 801 </h2> 802 803 804 <p class="archive-card__excerpt" itemprop="description"> 805 Use Moesif to implement internal chargebacks and enable precise API and AI cost attribution for better transparency and resource optimization. 806 807 </p> 808 809 810 811 <p class="page__meta archive-card__date"> 812 <time datetime=" 2025-12-02">December 02, 2025 813 814 </div> 815</a> 816 817 818
819 820 821 822 823 824 825 826 827 828 829 830 831<a href="/blog/technical/api-development/Introducing-Moesif-Basic-Insights-for-WSO2-API-Manager-APIM-and-Bijira/" rel="permalink" class="archive-card "> 832 <div class="archive-card__teaser"> 833 834 835 836 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/technical.svg' alt=Introducing Moesif Basic Insights for WSO2 API Manager (APIM) and Bijira 837> 838 839 </div> 840 <div class="archive-card__text"> 841 <div class="archive-card__categories"> 842 843 <p> 844 API Development 845 </p> 846 </div> 847 848 <h2 class="archive-card__title no-anchor" itemprop="headline"> 849 850 Introducing Moesif Basic Insights for WSO2 API Manager (APIM) and Bijira 851 852 853 </h2> 854 855 856 <p class="archive-card__excerpt" itemprop="description"> 857 Announcing Moesif Basic Insights for WSO2 API Manager and Bijiraâa free, integrated, and AI-ready API analytics solution in WSO2. 858 859 </p> 860 861 862 863 <p class="page__meta archive-card__date"> 864 <time datetime=" 2025-10-13">October 13, 2025 865 866 </div> 867</a> 868 869 870
871 872 873 874 875 876 877 878 879 880 881 882 883<a href="/blog/api-monetization/api-strategy/How-To-Best-Plan-Usage-Based-Pricing-For-AI-Agents/" rel="permalink" class="archive-card "> 884 <div class="archive-card__teaser"> 885 886 887 888 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/api-monetization.svg' alt=How to Best Plan Usage-Based Pricing For AI Agents 889> 890 891 </div> 892 <div class="archive-card__text"> 893 <div class="archive-card__categories"> 894 895 <p> 896 API Strategy 897 </p> 898 </div> 899 900 <h2 class="archive-card__title no-anchor" itemprop="headline"> 901 902 How to Best Plan Usage-Based Pricing For AI Agents 903 904 905 </h2> 906 907 908 <p class="archive-card__excerpt" itemprop="description"> 909 A strategic guide to usage-based pricing for AI agents using Moesif. It covers challenges, billing meter design, and strategies for fairness and predictabili... 910 </p> 911 912 913 914 <p class="page__meta archive-card__date"> 915 <time datetime=" 2025-10-01">October 01, 2025 916 917 </div> 918</a> 919 920 921
922 923 924 925 926 927 928 929 930 931 932 933 934<a href="/blog/api-strategy/api-monetization/Monetizing-Content-Through-API-For-LLM-Training/" rel="permalink" class="archive-card "> 935 <div class="archive-card__teaser"> 936 937 938 939 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/api-strategy.svg' alt=Monetizing Content Through API for LLM Training 940> 941 942 </div> 943 <div class="archive-card__text"> 944 <div class="archive-card__categories"> 945 946 <p> 947 API Strategy 948 </p> 949 </div> 950 951 <h2 class="archive-card__title no-anchor" itemprop="headline"> 952 953 Monetizing Content Through API for LLM Training 954 955 956 </h2> 957 958 959 <p class="archive-card__excerpt" itemprop="description"> 960 Monetize content through APIs for LLM training. Learn about pricing models, metering, and how Moesif enables content monetization at scale. 961 962 </p> 963 964 965 966 <p class="page__meta archive-card__date"> 967 <time datetime=" 2025-10-01">October 01, 2025 968 969 </div> 970</a> 971 972 973
974 975 976 977 978 979 980 981 982 983 984 985 986<a href="/blog/monitoring/model-context-protocol/Comparing-MCP-Model-Context-Protocol-Gateways/" rel="permalink" class="archive-card "> 987 <div class="archive-card__teaser"> 988 989 990 991 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/monitoring.svg' alt=Comparing MCP (Model Context Protocol) Gateways 992> 993 994 </div> 995 <div class="archive-card__text"> 996 <div class="archive-card__categories"> 997 998 <p> 999 API Analytics and Monitoring 1000 </p> 1001 </div> 1002 1003 <h2 class="archive-card__title no-anchor" itemprop="headline"> 1004 1005 Comparing MCP (Model Context Protocol) Gateways 1006 1007 1008 </h2> 1009 1010 1011 <p class="archive-card__excerpt" itemprop="description"> 1012 Learn about the top Model Context Protocol (MCP) gateways in 2025 and how Moesif adds analytics and observability on top for your AI infrastructure. 1013 1014 </p> 1015 1016 1017 1018 <p class="page__meta archive-card__date"> 1019 <time datetime=" 2025-09-03">September 03, 2025 1020 1021 </div> 1022</a> 1023 1024 1025
1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038<a href="/blog/technical/gloo/Moesif-Gloo-Gateway-Deep-API-Analytics-and-Observability-at-the-Edge/" rel="permalink" class="archive-card "> 1039 <div class="archive-card__teaser"> 1040 1041 1042 1043 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/technical.svg' alt=Moesif + Gloo Gateway: Deep API Analytics and Observability at the Edge 1044> 1045 1046 </div> 1047 <div class="archive-card__text"> 1048 <div class="archive-card__categories"> 1049 1050 <p> 1051 API Development 1052 </p> 1053 </div> 1054 1055 <h2 class="archive-card__title no-anchor" itemprop="headline"> 1056 1057 Moesif + Gloo Gateway: Deep API Analytics and Observability at the Edge 1058 1059 1060 </h2> 1061 1062 1063 <p class="archive-card__excerpt" itemprop="description"> 1064 Enhance Gloo Gateway with Moesif for deep API analytics, monitoring, and insights to boost performance and adoption. 1065 1066 </p> 1067 1068 1069 1070 <p class="page__meta archive-card__date"> 1071 <time datetime=" 2025-09-03">September 03, 2025 1072 1073 </div> 1074</a> 1075 1076 1077
1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090<a href="/blog/technical/api-development/Analyzing-OpenTelemetry-Logs-in-Moesif-For-Operational-And-Business-Insights/" rel="permalink" class="archive-card "> 1091 <div class="archive-card__teaser"> 1092 1093 1094 1095 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/technical.svg' alt=Analyzing OpenTelemetry Logs in Moesif for Operational and Business Insights 1096> 1097 1098 </div> 1099 <div class="archive-card__text"> 1100 <div class="archive-card__categories"> 1101 1102 <p> 1103 API Development 1104 </p> 1105 </div> 1106 1107 <h2 class="archive-card__title no-anchor" itemprop="headline"> 1108 1109 Analyzing OpenTelemetry Logs in Moesif for Operational and Business Insights 1110 1111 1112 </h2> 1113 1114 1115 <p class="archive-card__excerpt" itemprop="description"> 1116 Capture and analyze OpenTelemetry logs in Moesif to surface business and operational insights using advanced API analytics. 1117 1118 </p> 1119 1120 1121 1122 <p class="page__meta archive-card__date"> 1123 <time datetime=" 2025-08-19">August 19, 2025 1124 1125 </div> 1126</a> 1127 1128 1129
1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142<a href="/blog/monitoring/model-context-protocol/Monitoring-MCP-Security-And-Agent-Behavior-With-Moesif/" rel="permalink" class="archive-card "> 1143 <div class="archive-card__teaser"> 1144 1145 1146 1147 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/monitoring.svg' alt=Monitoring MCP Security and Agent Behavior with Moesif 1148> 1149 1150 </div> 1151 <div class="archive-card__text"> 1152 <div class="archive-card__categories"> 1153 1154 <p> 1155 API Analytics and Monitoring 1156 </p> 1157 </div> 1158 1159 <h2 class="archive-card__title no-anchor" itemprop="headline"> 1160 1161 Monitoring MCP Security and Agent Behavior with Moesif 1162 1163 1164 </h2> 1165 1166 1167 <p class="archive-card__excerpt" itemprop="description"> 1168 Monitor MCP server security and agent behavior with Moesif. Detect misuse, set alerts, and gain visibility into Model Context Protocol traffic. 1169 1170 </p> 1171 1172 1173 1174 <p class="page__meta archive-card__date"> 1175 <time datetime=" 2025-07-16">July 16, 2025 1176 1177 </div> 1178</a> 1179 1180 1181
1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194<a href="/blog/api-strategy/model-context-protocol/Monetizing-MCP-Model-Context-Protocol-Servers-With-Moesif/" rel="permalink" class="archive-card "> 1195 <div class="archive-card__teaser"> 1196 1197 1198 1199 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/api-strategy.svg' alt=Monetizing MCP (Model Context Protocol) Servers with Moesif 1200> 1201 1202 </div> 1203 <div class="archive-card__text"> 1204 <div class="archive-card__categories"> 1205 1206 <p> 1207 API Strategy 1208 </p> 1209 </div> 1210 1211 <h2 class="archive-card__title no-anchor" itemprop="headline"> 1212 1213 Monetizing MCP (Model Context Protocol) Servers with Moesif 1214 1215 1216 </h2> 1217 1218 1219 <p class="archive-card__excerpt" itemprop="description"> 1220 Learn how to monetize MCP server usage with Moesif. Track tool calls, enforce usage-based pricing, and meter agent access with full visibility. 1221 1222 </p> 1223 1224 1225 1226 <p class="page__meta archive-card__date"> 1227 <time datetime=" 2025-07-15">July 15, 2025 1228 1229 </div> 1230</a> 1231 1232 1233
1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246<a href="/blog/technical/nginx/Using-Moesif-for-API-Observability-and-Analytics-in-NGINX-One/" rel="permalink" class="archive-card "> 1247 <div class="archive-card__teaser"> 1248 1249 1250 1251 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/technical.svg' alt=Using Moesif for API Observability and Analytics in NGINX One 1252> 1253 1254 </div> 1255 <div class="archive-card__text"> 1256 <div class="archive-card__categories"> 1257 1258 <p> 1259 API Development 1260 </p> 1261 </div> 1262 1263 <h2 class="archive-card__title no-anchor" itemprop="headline"> 1264 1265 Using Moesif for API Observability and Analytics in NGINX One 1266 1267 1268 </h2> 1269 1270 1271 <p class="archive-card__excerpt" itemprop="description"> 1272 Enable API observability in NGINX One with Moesif to track latency, errors, and usage patterns through powerful API analytics and user-aware monitoring. 1273 1274 </p> 1275 1276 1277 1278 <p class="page__meta archive-card__date"> 1279 <time datetime=" 2025-11-27">November 27, 2025 1280 1281 </div> 1282</a> 1283 1284 1285
1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298<a href="/blog/podcasts/developers/Podcast-APIs-Over-IPAs-API-Product-Management-With-Emmanuel-Paraskakis-Level-250/" rel="permalink" class="archive-card "> 1299 <div class="archive-card__teaser"> 1300 1301 1302 1303 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/podcasts.svg' alt=APIs Over IPAs 19: API Product Management with Emmanuel Paraskakis, Level 250 1304> 1305 1306 </div> 1307 <div class="archive-card__text"> 1308 <div class="archive-card__categories"> 1309 1310 <p> 1311 Podcasts 1312 </p> 1313 </div> 1314 1315 <h2 class="archive-card__title no-anchor" itemprop="headline"> 1316 1317 APIs Over IPAs 19: API Product Management with Emmanuel Paraskakis, Level 250 1318 1319 1320 </h2> 1321 1322 1323 <p class="archive-card__excerpt" itemprop="description"> 1324 In this episode, Emmanuel Paraskakis of Level 250 joins to discuss the role and responsibilities of API product managers. 1325 1326 </p> 1327 1328 1329 1330 <p class="page__meta archive-card__date"> 1331 <time datetime=" 2025-06-18">June 18, 2025 1332 1333 </div> 1334</a> 1335 1336 1337
1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350<a href="/blog/api-strategy/api-engineering/How-Engineering-Teams-Should-Monitor-Customer-Health-and-API-Usage/" rel="permalink" class="archive-card "> 1351 <div class="archive-card__teaser"> 1352 1353 1354 1355 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/api-strategy.svg' alt=How Engineering Teams Should Monitor Customer Health and API Usage 1356> 1357 1358 </div> 1359 <div class="archive-card__text"> 1360 <div class="archive-card__categories"> 1361 1362 <p> 1363 API Strategy 1364 </p> 1365 </div> 1366 1367 <h2 class="archive-card__title no-anchor" itemprop="headline"> 1368 1369 How Engineering Teams Should Monitor Customer Health and API Usage 1370 1371 1372 </h2> 1373 1374 1375 <p class="archive-card__excerpt" itemprop="description"> 1376 Learn how engineering teams can monitor API usage, debug production issues, and track account health with Moesif for better API observability. 1377 1378 </p> 1379 1380 1381 1382 <p class="page__meta archive-card__date"> 1383 <time datetime=" 2025-11-27">November 27, 2025 1384 1385 </div> 1386</a> 1387 1388 1389
1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402<a href="/blog/technical/nginx/Moesif-for-API-Observability-and-Analytics-in-NGINX-OpenResty/" rel="permalink" class="archive-card "> 1403 <div class="archive-card__teaser"> 1404 1405 1406 1407 <img src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" class="lazyload" width="150" height="150" data-src='https://blog.moesif.com/images/landing/technical.svg' alt=Moesif for API Observability and Analytics in NGINX OpenResty 1408> 1409 1410 </div> 1411 <div class="archive-card__text"> 1412 <div class="archive-card__categories"> 1413 1414 <p> 1415 API Development 1416 </p> 1417 </div> 1418 1419 <h2 class="archive-card__title no-anchor" itemprop="headline"> 1420 1421 Moesif for API Observability and Analytics in NGINX OpenResty 1422 1423 1424 </h2> 1425 1426 1427 <p class="archive-card__excerpt" itemprop="description"> 1428 Set up API observability in NGINX OpenResty with Moesif to track performance, monitor errors, and gain real-time insights into your API traffic and users. 1429 1430 </p> 1431 1432 1433 1434 <p class="page__meta archive-card__date"> 1435 <time datetime=" 2025-08-06">August 06, 2025 1436 1437 </div> 1438</a> 1439 1440 1441
1442</div> 1443 1444<div class='landing-subscription'> 1445 1446 1447<div id="email-landing"></div>
1448<script> 1449 var _run_landing = false; 1450 1451 function createEmailForm_landing() { 1452 if (!_run_landing) { 1453 window.hbspt.forms.create({ 1454 portalId: "2503070", 1455 formId: "7145f36e-31b3-4b6e-89eb-5483d83387cd", 1456 css: "", 1457 target: "#email-landing", 1458 inlineMessage: "Thank you for subscribing", 1459 onFormSubmit: function ($form) { 1460 if (typeof logUxEvent !== "undefined") { 1461 logUxEvent("Blog-Email-Subscribe"); 1462 } 1463 }, 1464 }); 1465 } 1466 _run_landing = true; 1467 } 1468 function loadHubspotFormShellScript(cb) { 1469 if (!window.hhspt || !window.hbspot.forms) { 1470 $.getScript("//js.hsforms.net/forms/shell.js", function () { 1471 cb(); 1472 }); 1473 } else { 1474 cb(); 1475 } 1476 } 1477 window.addEventListener("scroll", function () { 1478 loadHubspotFormShellScript(createEmailForm_landing); 1479 }); 1480</script>
1480 1481 1482</div> 1483 1484 1485<nav class="pagination"> 1486 1487 <ul> 1488 1489 1490 <li><a href="#" class="disabled"><span aria-hidden="true">Previous</span></a></li> 1491 1492 1493 1494 1495 <li><a href="#" class="disabled current">1</a></li> 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 <li><a href="/blog/page2/#recent-post">2</a></li> 1511 1512 1513 1514 1515 1516 1517 <li><a href="/blog/page3/#recent-post">3</a></li> 1518 1519 1520 1521 1522 1523 <li><a href="#" class="disabled">…</a></li> 1524 1525 1526 1527 <li><a href="/blog/page31/#recent-post">31</a></li> 1528 1529 1530 1531 1532 <li><a href="/blog/page2/#recent-post">Next</a></li> 1533 1534 </ul> 1535</nav> 1536 1537 1538
1539<script> 1540 window.addEventListener('load', function () { 1541 if (typeof logUxEvent !== 'undefined') { 1542 logUxEvent('Blog-Viewed-Home'); 1543 } 1544 }); 1545 1546 if (window.location.hostname === 'blog.moesif.com') { 1547 window.location.href = "https://www.moesif.com/blog"; 1548 } 1549</script>
1549 1550 1551 1552 1553 1554 1555 </div> 1556 1557 <div id="footer" class="page__footer"> 1558 <footer> 1559 <!-- start custom footer snippets --> 1560 1561 1562<div class="page__footer-copyright"> 1563 <a href="https://www.moesif.com/terms">Terms</a> | 1564 <a href="https://www.moesif.com/privacy">Privacy</a> | 1565 <a href="https://www.moesif.com/security">Security</a> | 1566 <a href="https://moesif.workable.com" target="_blank" rel="noreferrer noopener">Careers</a> | 1567 <a href="https://www.moesif.com/blog">Blog</a> | 1568 <a href="https://www.moesif.com/docs">Docs</a> | 1569 <a href="https://status.moesif.com">Status</a> | 1570 <a href="https://www.moesif.com/blog/write-for-us/">Guest Post</a> 1571 </br> 1572 © 2026 <a href="https://www.moesif.com">Moesif</a> 1573</div> 1574 1575<!-- end custom footer snippets --> 1576 1577 </footer> 1578 </div> 1579 1580 1581
1581<script src="https://blog.moesif.com/assets/js/main.min.js"></script>
1581 1582 1583
1583<script async src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/js/all.min.js" integrity="sha384-DsXFqEUf3HnCU8om0zbXN58DxV7Bo8/z7AbHBGd2XxkeNpdLrygNiGFr/03W0Xmt" crossorigin="anonymous"></script>
1583 1584 1585 1586 1587 1588 1589 <!-- Including InstantSearch.js library and styling --> 1590
1591<script> 1592window.loadSearch = function (callback) { 1593 if (!window._search) { 1594 $('head').append('<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/instantsearch.min.css">'); 1595 $('head').append('<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/instantsearch-theme-algolia.min.css">'); 1596 $.getScript('https://cdn.jsdelivr.net/npm/[email protected]/dist/instantsearch.min.js', function () { 1597 const search = instantsearch({ 1598 appId: 'TS2B00F77M', 1599 apiKey: '07b6bb75d0e13de668e0ddaf2ae15260', 1600 indexName: 'Blog', 1601 searchParameters: { 1602 restrictSearchableAttributes: [ 1603 'title', 1604 'content' 1605 ] 1606 } 1607 }); 1608 1609 const hitTemplate = function(hit) { 1610 const url = hit.url; 1611 const title = hit._highlightResult.title.value; 1612 const content = hit._highlightResult.html.value; 1613 1614 return ` 1615 <div class="list__item"> 1616 <article class="archive__item" itemscope itemtype="https://schema.org/CreativeWork"> 1617 <h2 class="archive__item-title" itemprop="headline"><a href="/blog${url}">${title}</a></h2> 1618 <div class="archive__item-excerpt" itemprop="description">${content}</div> 1619 </article> 1620 </div> 1621 `; 1622 } 1623 1624 // Adding searchbar and results widgets 1625 search.addWidget( 1626 instantsearch.widgets.searchBox({ 1627 container: '.search-searchbar', 1628 placeholder: 'Search blog articles...' 1629 }) 1630 ); 1631 search.addWidget( 1632 instantsearch.widgets.hits({ 1633 container: '.search-hits', 1634 templates: { 1635 item: hitTemplate 1636 } 1637 }) 1638 ); 1639 1640 window._search = search; 1641 if (callback) { 1642 callback(); 1643 } 1644 }); 1645 } 1646} 1647// Instanciating InstantSearch.js with Algolia credentials 1648</script>
1648 1649 1650 1651 1652 1653 1654 1655 1656 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 68 bytes, lines 1656-1659
1656 1657<script 1658 async 1659 src="https://www.googletagmanager.com/gtag/js?id=
1659G-Q03C285919
vendor: 13 bytes, lines 1659-1660
1659" 1660></script>
1661<script> 1662
vendor: 142 bytes, lines 1662-1667
1662window.dataLayer = window.dataLayer || []; 1663 function gtag() { 1664 dataLayer.push(arguments); 1665 } 1666 gtag("js", new Date()); 1667 gtag("config", "
1667G-Q03C285919
vendor: 38 bytes, lines 1667-1669
1667", { 1668 anonymize_ip: "false", 1669 });
1670</script>
1670 1671 1672 1673 1674<!-- start custom analytics snippet --> 1675
1676<script> 1677 window.logUxEvent = function (event, metadata) { 1678 if (typeof gtag !== 'undefined') { 1679 gtag('event', event, metadata); 1680 } 1681 if (typeof moesif !== 'undefined') { 1682 moesif.track(event, metadata); 1683 } 1684 } 1685</script>
1685 1686 1687 1688 1689 1690<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 1690-1691
1690 1691<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1691GTM-WXWPX6T
vendor: 85 bytes, lines 1691-1692
1691" 1692 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1693<!-- End Google Tag Manager (noscript) --> 1694 1695<!-- Facebook Pixel Code (noscript) --> 1696<noscript><img height="1" width="1" style="display:none" 1697 src="https://www.facebook.com/tr?id=258723467888184&ev=PageView&noscript=1" 1698 /> 1699</noscript> 1700<!-- End Facebook Pixel Code (noscript) --> 1701 1702<!-- Start of HubSpot Embed Code -->
1703<script type="text/javascript" id="hs-script-loader"> 1704 ! function(e, t) { 1705 if (!document.getElementById(e)) { 1706 var c = document.createElement("script"); 1707 c.src = "https://www.moesif.com/js/tags/hs/2503070.js", c.type = "text/javascript", c.id = e; 1708 var n = document.getElementsByTagName("script")[0]; 1709 n.parentNode.insertBefore(c, n) 1710 } 1711}("hs-analytics"); 1712var _hsp = window._hsp = window._hsp || []; 1713_hsp.push(['addEnabledFeatureGates', []]); 1714! function(t, e, r) { 1715 if (!document.getElementById(t)) { 1716 var n = document.createElement("script"); 1717 for (var a in n.src = "https://www.moesif.com/js/tags/hs/hs-banner.js", n.type = "text/javascript", n.id = t, r) r.hasOwnProperty(a) && n.setAttribute(a, r[a]); 1718 var i = document.getElementsByTagName("script")[0]; 1719 i.parentNode.insertBefore(n, i) 1720 } 1721}("cookieBanner-2503070", 0, { 1722 "data-cookieconsent": "ignore", 1723 "data-loader": "hs-scriptloader", 1724 "data-hsjs-portal": 2503070, 1725 "data-hsjs-env": "prod", 1726 "data-hsjs-hublet": "na1" 1727}); 1728! function(t, e, r) { 1729 if (!document.getElementById(t)) { 1730 var n = document.createElement("script"); 1731 for (var a in n.src = "https://www.moesif.com/js/tags/hs/conversations-embed.js", n.type = "text/javascript", n.id = t, r) r.hasOwnProperty(a) && n.setAttribute(a, r[a]); 1732 var i = document.getElementsByTagName("script")[0]; 1733 i.parentNode.insertBefore(n, i) 1734 } 1735}("hubspot-messages-loader", 0, { 1736 "data-loader": "hs-scriptloader", 1737 "data-hsjs-portal": 2503070, 1738 "data-hsjs-env": "prod", 1739 "data-hsjs-hublet": "na1" 1740}); 1741! function(t, e, r) { 1742 if (!document.getElementById(t)) { 1743 var n = document.createElement("script"); 1744 for (var a in n.src = "https://www.moesif.com/js/tags/hs/leadflows.js", n.type = "text/javascript", n.id = t, r) r.hasOwnProperty(a) && n.setAttribute(a, r[a]); 1745 var i = document.getElementsByTagName("script")[0]; 1746 i.parentNode.insertBefore(n, i) 1747 } 1748}("LeadFlows-2503070", 0, { 1749 "crossorigin": "anonymous", 1750 "data-leadin-portal-id": 2503070, 1751 "data-leadin-env": "prod", 1752 "data-loader": "hs-scriptloader", 1753 "data-hsjs-portal": 2503070, 1754 "data-hsjs-env": "prod", 1755 "data-hsjs-hublet": "na1" 1756}); 1757</script>
1757 1758 1759<!-- Start of Moesif Embed Code -->
1760<script src="//unpkg.com/moesif-browser-js@^1/moesif.min.js"></script>
vendor: 1 bytes, line 1760
1760
1761<script type="text/javascript"> 1762 moesif.init({ 1763 applicationId: 'eyJhcHAiOiIyMjM6MjUiLCJ2ZXIiOiIyLjAiLCJvcmciOiIxMTY6MjEiLCJpYXQiOjE2NjcyNjA4MDB9.sZMgYN5hKSnWAm_T8u_xeazNQ47vfAhpzTaVZupVIrQ', 1764 // applicationId: 'eyJhcHAiOiIyMjM6MjUiLCJ2ZXIiOiIyLjAiLCJvcmciOiIxMTY6MjEiLCJpYXQiOjE2NjcyNjA4MDB9.sZMgYN5hKSnWAm_T8u_xeazNQ47vfAhpzTaVZupVIrQ', 1765 batchEnabled: true, 1766 persistenceKeyPrefix: 'collector', 1767 }); 1768</script>
1768 1769<!-- end custom analytics snippet --> 1770
1771<script> 1772 var experimentsToProcess = [ 1773 // example data needed for an experiment 1774 // { 1775 // // same as feature flag key (all experiments are based on feature flag key) 1776 // key: "test-sticky-cta", 1777 // variants: { 1778 // // test and control are variant names defined in posthog, and any name can work. 1779 // test: { 1780 // // elements to to modify. 1781 // elements: [ 1782 // { 1783 // element_id: "sticky_cta_anchor", 1784 // // different attributes of element to override: 1785 // attributes: { 1786 // textContent: "Test Random CTA", 1787 // // if there is query params, I will take original query params 1788 // // and merge with new query params. 1789 // // any old query params from original url will be preserved 1790 // // if they are not overwritten. 1791 // href: "http://www.moesif.com/?utm_source=experiment", 1792 // // you can use inline style for quick edits. 1793 // style: "background-color: blue; color: white;" 1794 // // hide component by set style to "display: none;" 1795 // }, 1796 // // optional: add event listener to send to event to moesif/google analytics 1797 // event: { 1798 // // please be one of the official html dom events, "click", "submit" for forms is most common. 1799 // type: "click", 1800 // name: "Blog-Clicked-Sticky-Cta" 1801 // } 1802 // }, 1803 // // you can modify more than one elements for the same variant if you like. 1804 // { 1805 // element_id: "sticky_cta_message", 1806 // attributes: { 1807 // textContent: "Some special message" 1808 // } 1809 // } 1810 // ] 1811 // }, 1812 // control: { 1813 // elements: [ 1814 // { 1815 // element_id: "sticky_cta_anchor", 1816 // // usually for control we don't need do modification of attributes 1817 // // this is needed so that on control we also send an event on click. 1818 // event: { 1819 // type: "click", // please be one of the official events. 1820 // name: "Blog-Clicked-Sticky-Cta" 1821 // } 1822 // } 1823 // ] 1824 // } 1825 // } 1826 // } 1827]; 1828
1829// TO SEE HOW YOUR VARIANT LOOKS 1830// for testing different variants, you can override the feature flags to a specific variant like this: 1831// posthog.featureFlags.override({ "test-sticky-cta": "test" }); 1832// Please comment above out after testing 1833 1834// boolean feature flags below for future. 1835var featureFlagsToProcess = [ 1836 // { 1837 // key: "test-xing-name", 1838 // // optional, if not defined. 1839 // element_id: "test-xing-name", 1840 // attributes: { 1841 // textContent: "Test CTA" 1842 // } 1843 // } 1844]; 1845 1846function createEventListener(eventName, attributes) { 1847 return function (evt) { 1848 // uncomment this if you want to debug 1849 // we don't follow the link 1850 // evt.preventDefault(); 1851 var target = evt.target; 1852 1853 var metadata = { 1854 cta_text: target.textContent, 1855 experiment_key: target.dataset.experiment_key, 1856 variant_key: target.dataset.variant_key, 1857 href: target.getAttribute("href"), 1858 id: target.getAttribute("id"), 1859 style: target.getAttribute("style"), 1860 }; 1861 // console.log("final metadata on click sticky cta"); 1862 // console.log(metadata); 1863 window.logUxEvent(eventName, metadata); 1864 }; 1865} 1866 1867function handleOneFeatureFlag(entry) { 1868 if (posthog.isFeatureEnabled(entry.key)) { 1869 var element = document.getElementById(entry.element_id || entry.key); 1870 if (element) { 1871 element.dataset.experiment_key = entry.key; 1872 element.addEventListener("click", onCtaClick); 1873 // if we don't find element we don't do anything. 1874 if (entry.override_text) { 1875 element.textContent = entry.override_text; 1876 } else { 1877 // try to get text from payload 1878 posthog.getFeatureFlagPayload(entry.key).then((payload) => { 1879 if (payload && payload.text) { 1880 element.textContent = payload.text; 1881 } 1882 }); 1883 } 1884 } 1885 } 1886} 1887 1888function mergeQueryParams(oldHref, newHref) { 1889 if (!oldHref) { 1890 return newHref; 1891 } 1892 try { 1893 var parsedUrlOld = new URL(oldHref, window.location.origin); 1894 var parsedUrlNew = new URL(newHref, window.location.origin); 1895 1896 var paramsOld = new URLSearchParams(parsedUrlOld.search); 1897 var paramsNew = new URLSearchParams(parsedUrlNew.search); 1898 1899 // Merge query parameters, giving priority to params from B 1900 paramsOld.forEach((value, key) => { 1901 if (!paramsNew.has(key)) { 1902 paramsNew.set(key, value); 1903 } 1904 }); 1905 1906 var mergedUrl = new URL(newHref); 1907 mergedUrl.search = paramsNew.toString(); 1908 return mergedUrl.toString(); 1909 } catch (err) { 1910 return newHref; 1911 } 1912} 1913 1914function handleModifyOneElement(elementModifyData, experimentKey, variantKey) { 1915 var element = document.getElementById(elementModifyData.element_id); 1916 if (element) { 1917 element.dataset.experiment_key = experimentKey; 1918 element.dataset.variant_key = variantKey; 1919 1920 if (elementModifyData.event) { 1921 element.addEventListener( 1922 elementModifyData.event.type, 1923 createEventListener(elementModifyData.event.name) 1924 ); 1925 } 1926 1927 var newAttributes = elementModifyData.attributes; 1928 if (newAttributes) { 1929 Object.entries(newAttributes).forEach(([key, value]) => { 1930 if (key === "textContent") { 1931 element.textContent = value; 1932 } 1933 if (key === "href") { 1934 var currentHref = element.getAttribute(key); 1935 var newHref = mergeQueryParams(currentHref, value); 1936 element.setAttribute("href", newHref); 1937 } else { 1938 element.setAttribute(key, value); 1939 } 1940 }); 1941 } 1942 } 1943} 1944 1945function handleOneExperiment(entry) { 1946 // console.log("handling one experiment"); 1947 var variantKey = posthog.getFeatureFlag(entry.key); 1948 // console.log(JSON.stringify({ variantKey, entry })); 1949 1950 var elementsToModify = 1951 entry.variants[variantKey] && entry.variants[variantKey].elements; 1952 1953 if (elementsToModify) { 1954 elementsToModify.forEach((elementModifyData) => { 1955 handleModifyOneElement(elementModifyData, entry.key, variantKey); 1956 }); 1957 } 1958} 1959 1960posthog.onFeatureFlags(function () { 1961 // feature flags should be available at this point 1962 featureFlagsToProcess.forEach((entry) => { 1963 try { 1964 handleOneFeatureFlag(entry); 1965 } catch (err) { 1966 console.log("error processing " + entry.key); 1967 console.error(err); 1968 } 1969 }); 1970 1971 experimentsToProcess.forEach((entry) => { 1972 try { 1973 handleOneExperiment(entry); 1974 } catch (err) { 1975 console.log("error processing " + entry.key); 1976 console.error(err); 1977 } 1978 }); 1979}); 1980 1981</script>
1981 1982 1983 1984 1985 1986 1987 1988 1989 1990</body> 1991 1992</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.