CINXE.COM
Homepage - Building Productive
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8" /> <!-- Responsive --> <meta content="width=device-width, initial-scale=1.0" name="viewport"> <!-- Remove IE's ability to use compatibility mode --> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <!-- Correct type --> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <!-- Disable phone formatting on safari --> <meta name="format-detection" content="telephone=no"> <!-- Speed up fetching of external assets --> <link rel="dns-prefetch" href="//fonts.googleapis.com"> <link rel="dns-prefetch" href="//ajax.googleapis.com"> <link rel="dns-prefetch" href="//www.google-analytics.com"> <!-- Win phone Meta --> <meta name="application-name" content="Building Productive"/> <!-- Apple --> <meta name="apple-mobile-web-app-title" content="Building Productive"> <meta name="apple-mobile-web-app-capable" content="yes"> <link rel="apple-touch-startup-image" href="/wp-content/themes/productive/public/logo.svg"> <!-- Favicon --> <link rel="icon" type="image/svg+xml" href="/wp-content/themes/productive/public/favicon.svg"> <link rel="alternate icon" href="/wp-content/themes/productive/public/favicon.ico"> <style id='esCssVariables-global'>:root {--global-custom-blocks-name: eightshift-block; --global-main-content-width: 12; --global-easing: cubic-bezier(0.55, 0, 0.45, 1); --global-base-font: InterVariable; --global-breakpoints-mobile: 479; --global-breakpoints-tablet: 1279; --global-breakpoints-desktop: 2159; --global-breakpoints-large: 2160; --global-grid-gutter: 2.78vw; --global-grid-side-padding: 5.56vw; --global-grid-max-content-width: 120rem; --global-section-spacing-min: -600; --global-section-spacing-max: 600; --global-section-spacing-step: 1; --global-section-in-spacing-min: 0; --global-section-in-spacing-max: 600; --global-section-in-spacing-step: 1; --global-z-index-compact-header: 101; --global-z-index-header: 102; --global-z-index-drawer-cta: 100; --global-z-index-drawer: 99; --global-z-index-overlay: 98; --global-z-index-cookie-modal: 95; --global-z-index-featured-price-item: 1; --global-z-index-progress-bar: 101; --global-z-index-small: 2; --global-colors-primary: #C3151B; --global-colors-primary-values: 195 21 27; --global-colors-black: #111111; --global-colors-black-values: 17 17 17; --global-colors-white: #FFFFFF; --global-colors-white-values: 255 255 255; --global-colors-light: #CCCCCC; --global-colors-light-values: 204 204 204; --global-colors-indigo: #5D2BFF; --global-colors-indigo-values: 93 43 255; --global-colors-indigoLight: #A79EFA; --global-colors-indigoLight-values: 167 158 250; --global-colors-indigoDark: #2D00AD; --global-colors-indigoDark-values: 45 0 173; --global-colors-indigo100: #ECE5FF; --global-colors-indigo100-values: 236 229 255; --global-colors-indigo700: #5000E5; --global-colors-indigo700-values: 80 0 229; --global-colors-indigo800: #20007A; --global-colors-indigo800-values: 32 0 122; --global-colors-indigo900: #130047; --global-colors-indigo900-values: 19 0 71; --global-colors-violet: #AB40FF; --global-colors-violet-values: 171 64 255; --global-colors-violetLight: #D6DDFF; --global-colors-violetLight-values: 214 221 255; --global-colors-violetDark: #5D2BFF; --global-colors-violetDark-values: 93 43 255; --global-colors-grey50: #F7F9FC; --global-colors-grey50-values: 247 249 252; --global-colors-grey100: #F2F5FF; --global-colors-grey100-values: 242 245 255; --global-colors-grey200: #DFE5F5; --global-colors-grey200-values: 223 229 245; --global-colors-grey300: #BABDD8; --global-colors-grey300-values: 186 189 216; --global-colors-grey400: #7F82A4; --global-colors-grey400-values: 127 130 164; --global-colors-grey500: #3C3F58; --global-colors-grey500-values: 60 63 88; --global-colors-red100: #FAF1ED; --global-colors-red100-values: 250 241 237; --global-colors-red200: #FFCCCB; --global-colors-red200-values: 255 204 203; --global-colors-red300: #FF6666; --global-colors-red300-values: 255 102 102; --global-colors-red400: #E45353; --global-colors-red400-values: 228 83 83; --global-colors-red500: #A52828; --global-colors-red500-values: 165 40 40; --global-colors-green100: #E6F9ED; --global-colors-green100-values: 230 249 237; --global-colors-green200: #8CEAB7; --global-colors-green200-values: 140 234 183; --global-colors-green300: #21D191; --global-colors-green300-values: 33 209 145; --global-colors-green400: #00AA6C; --global-colors-green400-values: 0 170 108; --global-colors-green500: #004F32; --global-colors-green500-values: 0 79 50; --global-colors-yellow100: #FFF6DD; --global-colors-yellow100-values: 255 246 221; --global-colors-yellow200: #FFE194; --global-colors-yellow200-values: 255 225 148; --global-colors-yellow300: #FFC837; --global-colors-yellow300-values: 255 200 55; --global-colors-yellow400: #F1B203; --global-colors-yellow400-values: 241 178 3; --global-colors-yellow500: #B86300; --global-colors-yellow500-values: 184 99 0; --global-colors-orange100: #FFEEE9; --global-colors-orange100-values: 255 238 233; --global-colors-orange200: #FFBDA7; --global-colors-orange200-values: 255 189 167; --global-colors-orange300: #FF784B; --global-colors-orange300-values: 255 120 75; --global-colors-orange350: #FF9875; --global-colors-orange350-values: 255 152 117; --global-colors-orange400: #ED5D2D; --global-colors-orange400-values: 237 93 45; --global-colors-orange500: #C53506; --global-colors-orange500-values: 197 53 6; --global-colors-blue100: #E0F6FF; --global-colors-blue100-values: 224 246 255; --global-colors-blue200: #96DFFF; --global-colors-blue200-values: 150 223 255; --global-colors-blue300: #55C9FB; --global-colors-blue300-values: 85 201 251; --global-colors-blue400: #0699EC; --global-colors-blue400-values: 6 153 236; --global-colors-blue500: #0062BD; --global-colors-blue500-values: 0 98 189; --global-colors-burgundy100: #FFF0F4; --global-colors-burgundy100-values: 255 240 244; --global-colors-burgundy200: #ECA7C8; --global-colors-burgundy200-values: 236 167 200; --global-colors-burgundy300: #CA6696; --global-colors-burgundy300-values: 202 102 150; --global-colors-burgundy400: #AC366F; --global-colors-burgundy400-values: 172 54 111; --global-colors-burgundy500: #850442; --global-colors-burgundy500-values: 133 4 66; --global-colors-turquoise100: #D2FFFA; --global-colors-turquoise100-values: 210 255 250; --global-colors-turquoise200: #6DEDE5; --global-colors-turquoise200-values: 109 237 229; --global-colors-turquoise300: #42DAD1; --global-colors-turquoise300-values: 66 218 209; --global-colors-turquoise400: #07B2A8; --global-colors-turquoise400-values: 7 178 168; --global-colors-turquoise500: #006B6B; --global-colors-turquoise500-values: 0 107 107; --global-colors-limegreen100: #F3FCE8; --global-colors-limegreen100-values: 243 252 232; --global-colors-limegreen200: #CFF5A3; --global-colors-limegreen200-values: 207 245 163; --global-colors-limegreen300: #9EE250; --global-colors-limegreen300-values: 158 226 80; --global-colors-limegreen400: #7FB540; --global-colors-limegreen400-values: 127 181 64; --global-colors-limegreen500: #4F7128; --global-colors-limegreen500-values: 79 113 40; --global-colors-celticBlue300: #B3BFFF; --global-colors-celticBlue300-values: 179 191 255; --global-colors-celticBlue500: #4F6BF8; --global-colors-celticBlue500-values: 79 107 248; --global-gradients-gradient-1: linear-gradient(90deg, #AB40FF 0%, #5D2BFF 100%); }</style><script> // Define dataLayer and the gtag function. window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} // Set default consent to 'denied' as a placeholder gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied' }); </script> <!-- Google Tag Manager --> <script id="google-tag-manager-script">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-56RMXVV');</script> <!-- END Google Tag Manager --> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-56RMXVV" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> <!-- This site is optimized with the Yoast SEO Premium plugin v23.7 (Yoast SEO v23.7) - https://yoast.com/wordpress/plugins/seo/ --> <title>Homepage - Building Productive</title><link rel="preload" data-rocket-preload as="image" href="https://productive.io/engineering/wp-content/uploads/sites/2/2022/11/Header-image-1-scaled-1.jpeg" fetchpriority="high"> <link rel="canonical" href="https://productive.io/engineering/" /> <meta property="og:locale" content="en_US" /> <meta property="og:type" content="website" /> <meta property="og:title" content="Homepage" /> <meta property="og:url" content="https://productive.io/engineering/" /> <meta property="og:site_name" content="Building Productive" /> <meta property="article:modified_time" content="2024-09-11T07:44:49+00:00" /> <meta name="twitter:card" content="summary_large_image" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://productive.io/engineering/","url":"https://productive.io/engineering/","name":"Homepage - Building Productive","isPartOf":{"@id":"https://productive.io/engineering/#website"},"datePublished":"2024-01-16T14:44:39+00:00","dateModified":"2024-09-11T07:44:49+00:00","breadcrumb":{"@id":"https://productive.io/engineering/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://productive.io/engineering/"]}]},{"@type":"BreadcrumbList","@id":"https://productive.io/engineering/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https://productive.io/engineering/#website","url":"https://productive.io/engineering/","name":"Building Productive","description":"Just another Productive Sites site","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://productive.io/engineering/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script> <!-- / Yoast SEO Premium plugin. --> <link rel='dns-prefetch' href='//js.chilipiper.com' /> <link rel='dns-prefetch' href='//website-assets.productive.io' /> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='Productive-block-style-css' href='https://productive.io/engineering/wp-content/themes/productive/public/applicationBlocks-32dd51df9af718b07bc4.css?ver=20241121151712.11956160953' media='all' /> <link rel='stylesheet' id='Productive-theme-styles-css' href='https://productive.io/engineering/wp-content/themes/productive/public/application-254597429f580bc12780.css?ver=20241121151712.11956160953' media='all' /> <link rel='stylesheet' id='eightshift-forms-block-frontend-mandatory-style-css' href='https://productive.io/engineering/wp-content/plugins/eightshift-forms/public/applicationBlocksFrontendMandatory-ba98b730b52f609c16db.css?ver=5.1.8' media='all' /> <link rel='stylesheet' id='eightshift-forms-block-frontend-style-css' href='https://productive.io/engineering/wp-content/plugins/eightshift-forms/public/applicationBlocksFrontend-bc136984875f746cf206.css?ver=5.1.8' media='all' /> <link rel='stylesheet' id='Productive-block-frontend-style-css' href='https://productive.io/engineering/wp-content/themes/productive/public/applicationBlocksFrontend-d74e1f17959c7c66139a.css?ver=20241121151712.11956160953' media='all' /> <link rel="https://api.w.org/" href="https://productive.io/engineering/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://productive.io/engineering/wp-json/wp/v2/pages/863" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://productive.io/engineering/xmlrpc.php?rsd" /> <link rel='shortlink' href='https://productive.io/engineering/' /> <link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://productive.io/engineering/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fproductive.io%2Fengineering%2F" /> <link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://productive.io/engineering/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fproductive.io%2Fengineering%2F&format=xml" /> <style id="rocket-lazyrender-inline-css">[data-wpr-lazyrender] {content-visibility: auto;}</style><meta name="generator" content="WP Rocket 3.17.2" data-wpr-features="wpr_automatic_lazy_rendering wpr_oci wpr_desktop wpr_preload_links" /></head> <body class="home page-template-default page page-id-863 theme-engineering"> <div class="block-navbar js-block-navbar navbar-bp block-navbar--theme-light"> <a class="logo block-navbar__logo" href="https://productive.io" aria-label="Homepage" > <img src="https://website-assets.productive.io/uploads/sites/2/2022/11/logo-white.svg" alt="Building Productive" title="Building Productive" class="logo__img" width=180 height=36 /> </a> <div class="block-navbar-left js-block-navbar-left"> <a class="block-navbar-item js-block-navbar-item" href="https://productive.io/engineering/"> <div class="block-navbar-item__link"> <span>Building Productive</span> </div> </a> <a class="block-navbar-item js-block-navbar-item" href="https://productive.io/about-us/"> <div class="block-navbar-item__link"> <span>Company</span> </div> </a> </div> <div class="block-navbar-cta js-navbar-cta"> <style id='esFormsCssVariables-global'>:root {--global-custom-blocks-name: eightshift-block;--global-es-max-cols: 12;--global-esf-spacing-xs: 0.25rem;--global-esf-spacing-s: 0.5rem;--global-esf-spacing-m: 1rem;--global-esf-spacing-l: 1.5rem;--global-esf-spacing-xl: 2rem;--global-esf-ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);--global-esf-box-shadow: 0 0 0.5rem rgb(0 0 0 / 0.04);--global-esf-box-shadow-l: 0 0 0.125rem rgb(0 0 0 / 0.16), 0 0 0.5rem rgb(0 0 0 / 0.16);--global-esf-max-width: 36rem;--global-esf-input-height: 2.625rem;--global-breakpoints-mobile: 480;--global-breakpoints-tablet: 960;--global-breakpoints-desktop: 1920;--global-breakpoints-large: 1921;--global-colors-esf-admin-accent: #29A3A3;--global-colors-esf-admin-accent-values: 41 163 163;--global-colors-esf-admin-accent-50: #29A3A380;--global-colors-esf-admin-accent-50-values: 0 0 0;--global-colors-esf-admin-accent-30: #29a3a333;--global-colors-esf-admin-accent-30-values: 0 0 0;--global-colors-esf-admin-accent-10: #29A3A31A;--global-colors-esf-admin-accent-10-values: 0 0 0;--global-colors-esf-admin-accent-05: #29A3A30D;--global-colors-esf-admin-accent-05-values: 0 0 0;--global-colors-esf-admin-accent-dark: #218282;--global-colors-esf-admin-accent-dark-values: 33 130 130;--global-colors-esf-border: #DEDEDE;--global-colors-esf-border-values: 222 222 222;--global-colors-esf-black: #181818;--global-colors-esf-black-values: 24 24 24;--global-colors-esf-white: #FFFFFF;--global-colors-esf-white-values: 255 255 255;--global-colors-esf-gray: #484848;--global-colors-esf-gray-values: 72 72 72;--global-colors-esf-yellow-50: #FFFBEB;--global-colors-esf-yellow-50-values: 255 251 235;--global-colors-esf-yellow-100: #FEF3C7;--global-colors-esf-yellow-100-values: 254 243 199;--global-colors-esf-yellow-200: #FDE68A;--global-colors-esf-yellow-200-values: 253 230 138;--global-colors-esf-yellow-500: #EAB308;--global-colors-esf-yellow-500-values: 234 179 8;--global-colors-esf-yellow-950: #451A03;--global-colors-esf-yellow-950-values: 69 26 3;--global-colors-esf-sky-50: #F0F9FF;--global-colors-esf-sky-50-values: 240 249 255;--global-colors-esf-sky-100: #E0F2FE;--global-colors-esf-sky-100-values: 224 242 254;--global-colors-esf-sky-200: #BAE6FD;--global-colors-esf-sky-200-values: 186 230 253;--global-colors-esf-sky-500: #0EA5E9;--global-colors-esf-sky-500-values: 14 165 233;--global-colors-esf-sky-950: #082F49;--global-colors-esf-sky-950-values: 8 47 73;--global-colors-esf-gray-50: #F9FAFB;--global-colors-esf-gray-50-values: 249 250 251;--global-colors-esf-gray-100: #F3F4F6;--global-colors-esf-gray-100-values: 243 244 246;--global-colors-esf-gray-200: #E5E7EB;--global-colors-esf-gray-200-values: 229 231 235;--global-colors-esf-gray-300: #D1D5DB;--global-colors-esf-gray-300-values: 209 213 219;--global-colors-esf-gray-400: #9CA3AF;--global-colors-esf-gray-400-values: 156 163 175;--global-colors-esf-gray-500: #6B7280;--global-colors-esf-gray-500-values: 107 114 128;--global-colors-esf-gray-600: #4B5563;--global-colors-esf-gray-600-values: 75 85 99;--global-colors-esf-gray-950: #030712;--global-colors-esf-gray-950-values: 3 7 18;--global-colors-esf-red-50: #FEF2F2;--global-colors-esf-red-50-values: 254 242 242;--global-colors-esf-red-100: #FEE2E2;--global-colors-esf-red-100-values: 254 226 226;--global-colors-esf-red-200: #FECACA;--global-colors-esf-red-200-values: 254 202 202;--global-colors-esf-red-500: #EF4444;--global-colors-esf-red-500-values: 239 68 68;--global-colors-esf-red-400: #F87171;--global-colors-esf-red-400-values: 248 113 113;--global-colors-esf-red-600: #DC2626;--global-colors-esf-red-600-values: 220 38 38;--global-colors-esf-red-800: #991B1B;--global-colors-esf-red-800-values: 153 27 27;--global-colors-esf-red-950: #450A0A;--global-colors-esf-red-950-values: 69 10 10;--global-colors-esf-green-50: #F0FDF4;--global-colors-esf-green-50-values: 240 253 244;--global-colors-esf-green-100: #DCFCE7;--global-colors-esf-green-100-values: 220 252 231;--global-colors-esf-green-200: #BBF7D0;--global-colors-esf-green-200-values: 187 247 208;--global-colors-esf-green-500: #22C55E;--global-colors-esf-green-500-values: 34 197 94;--global-colors-esf-green-950: #052E16;--global-colors-esf-green-950-values: 5 46 22;}</style> <div class="es-block-forms js-es-block-forms" > <form class="es-form js-es-block-form" data-phone-sync='1' data-form-id='17' data-post-id='863' data-form-type='hubspot' data-conditional-tags='[]' method='post' data-block-ssr='false' data-disabled-default-styles='false' novalidate onsubmit="event.preventDefault();" > <div class="es-global-msg js-es-block-global-msg" > </div> <div class="es-form__fields"> <div class="es-field es-field--input js-es-block-field" data-id="8e855714" data-hubspot-type-id='0-1' data-field-name='email' data-field-type='input' data-type-custom='email' data-tracking='email'> <div class="es-field__inner"> <div class="es-field__content"> <div class="es-field__content-wrap"> <input class="es-input" name="email" id="email" type="email" placeholder='Your email, please' /> </div> </div> <div class="es-error es-field__es-error js-es-block-error" data-id="email" ></div> </div> </div><div class="es-field es-field--submit js-es-block-field" data-id="7e5af315" data-field-type='submit'> <div class="es-field__inner"> <div class="es-field__content"> <div class="es-field__content-wrap"> <button class="es-submit es-submit--default" ><span class="es-submit__inner"> Get Engineering Updates</span></button> </div> </div> </div> </div> </div> <div class="es-loader js-es-block-loader es-loader__form"> <svg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 44 44'><g fill='none' fill-rule='evenodd' stroke-width='2'><circle cx='22' cy='22' r='1' stroke='var(--loader-color-1, currentColor)'><animate attributeName='r' begin='0s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='0s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle><circle cx='22' cy='22' r='1' stroke='var(--loader-color-2, currentColor)'><animate attributeName='r' begin='-0.9s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='-0.9s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle></g></svg></div></form><div class="es-loader js-es-block-loader es-loader__geolocation"> <svg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 44 44'><g fill='none' fill-rule='evenodd' stroke-width='2'><circle cx='22' cy='22' r='1' stroke='var(--loader-color-1, currentColor)'><animate attributeName='r' begin='0s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='0s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle><circle cx='22' cy='22' r='1' stroke='var(--loader-color-2, currentColor)'><animate attributeName='r' begin='-0.9s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='-0.9s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle></g></svg></div></div> <style id='esFormsCssVariables'>.es-field[data-id='8e855714']{--es-field-width: calc((12 / 12) * 100%);} .es-field[data-id='7e5af315']{--es-field-width: calc((12 / 12) * 100%);} </style> </div> <button class="hamburger js-hamburger" style="--hamburger-background: var(--global-colors-grey100); --hamburger-foreground: var(--global-colors-black);" > <div class="hamburger__icon-line hamburger__icon-line--1"></div> <div class="hamburger__icon-line hamburger__icon-line--2"></div> </button> <div class="block-navbar__flyout js-block-navbar-flyout"> <div class="block-navbar-left js-block-navbar-left"> <a class="block-navbar-item js-block-navbar-item" href="https://productive.io/engineering/"> <div class="block-navbar-item__link"> <span>Building Productive</span> </div> </a> <a class="block-navbar-item js-block-navbar-item" href="https://productive.io/about-us/"> <div class="block-navbar-item__link"> <span>Company</span> </div> </a> </div> <div class="block-navbar-cta js-navbar-cta"> <style id='esFormsCssVariables-global'>:root {--global-custom-blocks-name: eightshift-block;--global-es-max-cols: 12;--global-esf-spacing-xs: 0.25rem;--global-esf-spacing-s: 0.5rem;--global-esf-spacing-m: 1rem;--global-esf-spacing-l: 1.5rem;--global-esf-spacing-xl: 2rem;--global-esf-ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);--global-esf-box-shadow: 0 0 0.5rem rgb(0 0 0 / 0.04);--global-esf-box-shadow-l: 0 0 0.125rem rgb(0 0 0 / 0.16), 0 0 0.5rem rgb(0 0 0 / 0.16);--global-esf-max-width: 36rem;--global-esf-input-height: 2.625rem;--global-breakpoints-mobile: 480;--global-breakpoints-tablet: 960;--global-breakpoints-desktop: 1920;--global-breakpoints-large: 1921;--global-colors-esf-admin-accent: #29A3A3;--global-colors-esf-admin-accent-values: 41 163 163;--global-colors-esf-admin-accent-50: #29A3A380;--global-colors-esf-admin-accent-50-values: 0 0 0;--global-colors-esf-admin-accent-30: #29a3a333;--global-colors-esf-admin-accent-30-values: 0 0 0;--global-colors-esf-admin-accent-10: #29A3A31A;--global-colors-esf-admin-accent-10-values: 0 0 0;--global-colors-esf-admin-accent-05: #29A3A30D;--global-colors-esf-admin-accent-05-values: 0 0 0;--global-colors-esf-admin-accent-dark: #218282;--global-colors-esf-admin-accent-dark-values: 33 130 130;--global-colors-esf-border: #DEDEDE;--global-colors-esf-border-values: 222 222 222;--global-colors-esf-black: #181818;--global-colors-esf-black-values: 24 24 24;--global-colors-esf-white: #FFFFFF;--global-colors-esf-white-values: 255 255 255;--global-colors-esf-gray: #484848;--global-colors-esf-gray-values: 72 72 72;--global-colors-esf-yellow-50: #FFFBEB;--global-colors-esf-yellow-50-values: 255 251 235;--global-colors-esf-yellow-100: #FEF3C7;--global-colors-esf-yellow-100-values: 254 243 199;--global-colors-esf-yellow-200: #FDE68A;--global-colors-esf-yellow-200-values: 253 230 138;--global-colors-esf-yellow-500: #EAB308;--global-colors-esf-yellow-500-values: 234 179 8;--global-colors-esf-yellow-950: #451A03;--global-colors-esf-yellow-950-values: 69 26 3;--global-colors-esf-sky-50: #F0F9FF;--global-colors-esf-sky-50-values: 240 249 255;--global-colors-esf-sky-100: #E0F2FE;--global-colors-esf-sky-100-values: 224 242 254;--global-colors-esf-sky-200: #BAE6FD;--global-colors-esf-sky-200-values: 186 230 253;--global-colors-esf-sky-500: #0EA5E9;--global-colors-esf-sky-500-values: 14 165 233;--global-colors-esf-sky-950: #082F49;--global-colors-esf-sky-950-values: 8 47 73;--global-colors-esf-gray-50: #F9FAFB;--global-colors-esf-gray-50-values: 249 250 251;--global-colors-esf-gray-100: #F3F4F6;--global-colors-esf-gray-100-values: 243 244 246;--global-colors-esf-gray-200: #E5E7EB;--global-colors-esf-gray-200-values: 229 231 235;--global-colors-esf-gray-300: #D1D5DB;--global-colors-esf-gray-300-values: 209 213 219;--global-colors-esf-gray-400: #9CA3AF;--global-colors-esf-gray-400-values: 156 163 175;--global-colors-esf-gray-500: #6B7280;--global-colors-esf-gray-500-values: 107 114 128;--global-colors-esf-gray-600: #4B5563;--global-colors-esf-gray-600-values: 75 85 99;--global-colors-esf-gray-950: #030712;--global-colors-esf-gray-950-values: 3 7 18;--global-colors-esf-red-50: #FEF2F2;--global-colors-esf-red-50-values: 254 242 242;--global-colors-esf-red-100: #FEE2E2;--global-colors-esf-red-100-values: 254 226 226;--global-colors-esf-red-200: #FECACA;--global-colors-esf-red-200-values: 254 202 202;--global-colors-esf-red-500: #EF4444;--global-colors-esf-red-500-values: 239 68 68;--global-colors-esf-red-400: #F87171;--global-colors-esf-red-400-values: 248 113 113;--global-colors-esf-red-600: #DC2626;--global-colors-esf-red-600-values: 220 38 38;--global-colors-esf-red-800: #991B1B;--global-colors-esf-red-800-values: 153 27 27;--global-colors-esf-red-950: #450A0A;--global-colors-esf-red-950-values: 69 10 10;--global-colors-esf-green-50: #F0FDF4;--global-colors-esf-green-50-values: 240 253 244;--global-colors-esf-green-100: #DCFCE7;--global-colors-esf-green-100-values: 220 252 231;--global-colors-esf-green-200: #BBF7D0;--global-colors-esf-green-200-values: 187 247 208;--global-colors-esf-green-500: #22C55E;--global-colors-esf-green-500-values: 34 197 94;--global-colors-esf-green-950: #052E16;--global-colors-esf-green-950-values: 5 46 22;}</style> <div class="es-block-forms js-es-block-forms" > <form class="es-form js-es-block-form" data-phone-sync='1' data-form-id='17' data-post-id='863' data-form-type='hubspot' data-conditional-tags='[]' method='post' data-block-ssr='false' data-disabled-default-styles='false' novalidate onsubmit="event.preventDefault();" > <div class="es-global-msg js-es-block-global-msg" > </div> <div class="es-form__fields"> <div class="es-field es-field--input js-es-block-field" data-id="8e855714" data-hubspot-type-id='0-1' data-field-name='email' data-field-type='input' data-type-custom='email' data-tracking='email'> <div class="es-field__inner"> <div class="es-field__content"> <div class="es-field__content-wrap"> <input class="es-input" name="email" id="email" type="email" placeholder='Your email, please' /> </div> </div> <div class="es-error es-field__es-error js-es-block-error" data-id="email" ></div> </div> </div><div class="es-field es-field--submit js-es-block-field" data-id="7e5af315" data-field-type='submit'> <div class="es-field__inner"> <div class="es-field__content"> <div class="es-field__content-wrap"> <button class="es-submit es-submit--default" ><span class="es-submit__inner"> Get Engineering Updates</span></button> </div> </div> </div> </div> </div> <div class="es-loader js-es-block-loader es-loader__form"> <svg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 44 44'><g fill='none' fill-rule='evenodd' stroke-width='2'><circle cx='22' cy='22' r='1' stroke='var(--loader-color-1, currentColor)'><animate attributeName='r' begin='0s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='0s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle><circle cx='22' cy='22' r='1' stroke='var(--loader-color-2, currentColor)'><animate attributeName='r' begin='-0.9s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='-0.9s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle></g></svg></div></form><div class="es-loader js-es-block-loader es-loader__geolocation"> <svg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 44 44'><g fill='none' fill-rule='evenodd' stroke-width='2'><circle cx='22' cy='22' r='1' stroke='var(--loader-color-1, currentColor)'><animate attributeName='r' begin='0s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='0s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle><circle cx='22' cy='22' r='1' stroke='var(--loader-color-2, currentColor)'><animate attributeName='r' begin='-0.9s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='-0.9s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle></g></svg></div></div> <style id='esFormsCssVariables'>.es-field[data-id='8e855714']{--es-field-width: calc((12 / 12) * 100%);} .es-field[data-id='7e5af315']{--es-field-width: calc((12 / 12) * 100%);} </style> </div> </div> </div><svg class="icon-defs" aria-hidden="true" viewBox="0 0 0 0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <defs> <linearGradient id='icon-business__b' x1='26.5' y1='12.5' x2='22.5' y2='16.5' gradientUnits='userSpaceOnUse'> <stop stop-color='#FFC837' /> <stop offset='1' stop-color='#F1B203' /> </linearGradient> <linearGradient id='icon-business__c' x1='9' y1='29.5' x2='24' y2='17' gradientUnits='userSpaceOnUse'> <stop stop-color='#F1B203' /> <stop offset='1' stop-color='#FFC837' /> </linearGradient> <clipPath id='icon-business__a'> <path fill='#fff' transform='translate(6 4)' d='M0 0h29.6v29.6H0z' /> </clipPath> <linearGradient id='icon-project-management__a' x1='22.175' y1='22.297' x2='28.276' y2='26.18' gradientUnits='userSpaceOnUse'> <stop stop-color='#0062BD' /> <stop offset='1' stop-color='#0699EC' /> </linearGradient> <linearGradient id='icon-project-management__b' x1='22.73' y1='18.97' x2='13.856' y2='27.289' gradientUnits='userSpaceOnUse'> <stop stop-color='#0062BD' /> <stop offset='1' stop-color='#0699EC' /> </linearGradient> <linearGradient id='icon-billing__a' x1='34.15' y1='1.797' x2='11.361' y2='29.92' gradientUnits='userSpaceOnUse'> <stop stop-color='#FF784B' /> <stop offset='1' stop-color='#ED5D2D' /> </linearGradient> <linearGradient id='icon-sales__b' x1='32' y1='26' x2='24.5' y2='33.5' gradientUnits='userSpaceOnUse'> <stop stop-color='#21D191' /> <stop offset='1' stop-color='#00AA6C' /> </linearGradient> <clipPath id='icon-sales__a'> <path fill='#fff' transform='translate(4 5)' d='M0 0h31.33v29.67H0z' /> </clipPath> <linearGradient id='icon-resource-planning__a' x1='20.5' y1='16' x2='35' y2='16' gradientUnits='userSpaceOnUse'> <stop stop-color='#E45353' /> <stop offset='1' stop-color='#F66' /> </linearGradient> <linearGradient id='icon-resource-planning__b' x1='21' y1='27' x2='31' y2='27' gradientUnits='userSpaceOnUse'> <stop stop-color='#E45353' /> <stop offset='1' stop-color='#F66' /> </linearGradient> <clipPath id="icon-youtube-play-button__clip-path"> <rect width="98" height="69" fill="white"/> </clipPath> <linearGradient id="reporting_icon_gradient_1" x1="33.4027" y1="19.7828" x2="5.59725" y2="19.7828" gradientUnits="userSpaceOnUse"> <stop stop-color="#CA6696"/> <stop offset="1" stop-color="#AC366F"/> </linearGradient> <linearGradient id="reporting_icon_gradient_2" x1="22.2805" y1="6.12167" x2="22.2805" y2="28.366" gradientUnits="userSpaceOnUse"> <stop stop-color="#CA6696"/> <stop offset="1" stop-color="#AC366F"/> </linearGradient> <clipPath id="reporting_icon_clip"> <rect width="27.8055" height="28.4345" fill="white" transform="translate(5.59726 5.56555)"/> </clipPath> <linearGradient id='c-billing-40-a' x1='34.15' y1='1.797' x2='11.361' y2='29.92' gradientUnits='userSpaceOnUse'><stop stop-color='#FF784B' fill='none'/><stop offset='1' stop-color='#ED5D2D' fill='none'/></linearGradient> <clipPath id='c-budgeting-40-a'><path fill='#fff' transform='translate(6 4)' d='M0 0h29.6v29.6H0z'/></clipPath> <linearGradient id='c-budgeting-40-b' x1='26.5' y1='12.5' x2='22.5' y2='16.5' gradientUnits='userSpaceOnUse'><stop stop-color='#FFC837'/><stop offset='1' stop-color='#F1B203'/></linearGradient> <linearGradient id='c-budgeting-40-c' x1='9' y1='29.5' x2='24' y2='17' gradientUnits='userSpaceOnUse'><stop stop-color='#F1B203'/><stop offset='1' stop-color='#FFC837'/></linearGradient> <clipPath id='c-crm-40-a'><path fill='#fff' transform='translate(4 5)' d='M0 0h31.33v29.67H0z'/></clipPath> <linearGradient id='c-crm-40-b' x1='32' y1='26' x2='24.5' y2='33.5' gradientUnits='userSpaceOnUse'><stop stop-color='#21D191'/><stop offset='1' stop-color='#00AA6C'/></linearGradient> <linearGradient id='c-project-management-40-a' x1='22.175' y1='22.298' x2='28.276' y2='26.18' gradientUnits='userSpaceOnUse'><stop stop-color='#0062BD'/><stop offset='1' stop-color='#0699EC'/></linearGradient> <linearGradient id='c-project-management-40-b' x1='22.73' y1='18.97' x2='13.856' y2='27.289' gradientUnits='userSpaceOnUse'><stop stop-color='#0062BD' fill='none'/><stop offset='1' stop-color='#0699EC' fill='none'/></linearGradient> <linearGradient id='c-resource-planning-40-a' x1='20.5' y1='16' x2='35' y2='16' gradientUnits='userSpaceOnUse'><stop stop-color='#E45353'/><stop offset='1' stop-color='#F66'/></linearGradient> <linearGradient id='c-resource-planning-40-b' x1='21' y1='27' x2='31' y2='27' gradientUnits='userSpaceOnUse'><stop stop-color='#E45353' fill='none'/><stop offset='1' stop-color='#F66' fill='none'/></linearGradient> <clipPath id='c-time-tracking-40-a'><path fill='#fff' transform='translate(9 5)' d='M0 0h22.49v29.4H0z'/></clipPath> <linearGradient id='c-time-tracking-40-b' x1='23.5' y1='21.5' x2='16' y2='8' gradientUnits='userSpaceOnUse'><stop stop-color='#42DAD1'/><stop offset='1' stop-color='#07B2A8'/></linearGradient> <clipPath id='c-reporting-40-a'><path fill='#fff' transform='translate(5.597 5.566)' d='M0 0h27.805v28.434H0z'/></clipPath> <linearGradient id='c-reporting-40-b' x1='33.403' y1='19.783' x2='5.597' y2='19.783' gradientUnits='userSpaceOnUse'><stop stop-color='#CA6696'/><stop offset='1' stop-color='#AC366F'/></linearGradient> <linearGradient id='c-reporting-40-c' x1='22.28' y1='6.122' x2='22.28' y2='28.366' gradientUnits='userSpaceOnUse'><stop stop-color='#CA6696'/><stop offset='1' stop-color='#AC366F'/></linearGradient> </defs> </svg> <main class="main-content"> <div class="wrapper" data-id="935a4c8f" > <div class="wrapper__inner"> <style> [data-id="483ad8d1"] { --group-background-image-gradient: linear-gradient(0deg, rgb(var(--global-colors-black-values) / 0.8), rgb(var(--global-colors-black-values) / 0.8)); --group-background-image-large: url('https://productive.io/engineering/wp-content/uploads/sites/2/2022/11/Header-image-1-scaled-1.jpeg'); } </style> <div class="block-group__outer-wrapper" data-id="483ad8d1"> <div class="block-group" data-id="483ad8d1"> <div class="wrapper wrapper--simple" data-id="178ababd" > <div class="wrapper__skip-dom"> <div class="block-columns" data-id="8cb43bc8"> <div class="block-column" data-id="a75b2db4"> <div class="wrapper wrapper--simple" data-id="27ddb43c" > <div class="wrapper__skip-dom"> <div class="block-heading" data-id="0834a263"> <h2 class="typography block-heading__heading" data-id="11af0a3f" > Building Productive</h2></div> </div> </div> <div class="wrapper wrapper--simple" data-id="e985dd26" > <div class="wrapper__skip-dom"> <div class="block-paragraph" data-id="71c1b4e4" > <p class="typography block-paragraph__paragraph" data-id="f87224fd" > What goes on behind building a globally recognized product? Here’s a peek into how we steer <br>Productive’s path—straight from our engineers.</p></div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div class="wrapper wrapper--simple" data-id="b0527d79" > <div class="wrapper__skip-dom"> <div class="block-columns" data-id="dce50919"> <div class="block-column" data-id="64de2b43"> <div class="wrapper wrapper--simple" data-id="07fed296" > <div class="wrapper__skip-dom"> <div class="block-category-filter js-block-category-filter" data-id="91692159"> <button class="block-category-filter__item js-block-category-filter-item is-active" data-id="-1" > All </button> <button class="block-category-filter__item js-block-category-filter-item" data-id="7" > Engineering </button> <button class="block-category-filter__item js-block-category-filter-item" data-id="12" > Frontend </button> <button class="block-category-filter__item js-block-category-filter-item" data-id="11" > Backend </button> <button class="block-category-filter__item js-block-category-filter-item" data-id="14" > Workflow </button> <button class="block-category-filter__item js-block-category-filter-item" data-id="13" > Testing </button> </div> </div> </div> </div> <div class="block-column" data-id="7694d97f"> <div class="wrapper wrapper--simple" data-id="6e9fe2c1" > <div class="wrapper__skip-dom"> <div class="search-input-field js-search-input-field es-form"> <input type="text" class="search-input-field__input es-input pill-inputs js-search-input" placeholder="Enter a search query"> <button type="button" class="search-input-field__button js-search-button"> <svg class="search-icon" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> <ellipse class="search-icon__loupe" rx="5.90741" ry="5.86667" cx="8.5" cy="8.5" stroke="currentColor" stroke-width="1.5" stroke-dasharray="500"/> <path class="search-icon__cross-1" d="M2 10H18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="500"/> <path class="search-icon__cross-2" d="M2 10H18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="500"/> </svg> </button> </div> </div> </div> </div> </div> </div> </div> <div class="wrapper" data-id="4dfb9f49" > <div class="wrapper__inner"> <div class="search js-search es-form" data-per-page="3" data-resource="posts" data-active-site-slug="engineering" data-search-label="Search" data-cancel-label="Cancel" data-input-selector=".js-search-input" > <h2 class="search__results-heading js-result-heading"> Search results for “<span class="search__results-query js-result-query"></span>” </h2> <div class="search__results-description js-result-description"> We found <span class="js-result-number"></span> article<span class="js-result-number-plural">s</span> containing the word “<span class="js-result-query-description"></span>” </div> <div class="search__results js-search-results"></div> <template class="js-search-result-template"> <a href="{cardUrl}" class="card-simple block-search__card-simple search__result js-search-result" data-id="36875e5c" > <picture class="image card-simple__image-picture" data-id="fbbd97f8" > <img src="http://featuredImage" class="image image__img card-simple__image-img search__result-image js-search-result-image" alt="" loading="lazy" /> </picture><p class="typography card-simple__intro search__result-intro js-search-result-category" data-id="a42c49ec" > {categories}</p><p class="typography card-simple__heading search__result-heading js-search-result-heading" data-id="6e4afada" > {title}</p> </a> </template> <div class="search__loader js-search-loader" aria-hidden="true"> <div class="loader"> <svg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 44 44'><g fill='none' fill-rule='evenodd' stroke-width='2'><circle cx='22' cy='22' r='1' stroke='var(--loader-color-1, currentColor)'><animate attributeName='r' begin='0s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='0s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle><circle cx='22' cy='22' r='1' stroke='var(--loader-color-2, currentColor)'><animate attributeName='r' begin='-0.9s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='-0.9s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle></g></svg></div> </div> <div class="search--nothing-found js-search-nothing-found"> <div class="wrapper" data-id="08e433b2"> <div class="wrapper__inner"> <div class="block-paragraph" data-id="62c030b8"> <p class="typography block-paragraph__paragraph" data-id="8e0b465c"> <strong>No results for now</strong></p></div> </div> </div> <div class="wrapper" data-id="80411fb2"> <div class="wrapper__inner"> <div class="media block-media__media media__aspect-ratio--auto" data-id="12f114b5"> <picture class="image media__image-picture" data-id="b209cb4e"> <img decoding="async" src="https://staging.productive.io/engineering/wp-content/uploads/sites/3/2022/10/No_search_results_illustration.svg" class="image image__img media__image-img" alt="" loading="lazy" /> </picture> </div> </div> </div> </div> <div class="search__more-wrapper"> <button name="" class="btn btn__type--primary search__load-more-button js-search-button-more" id="" aria-label="" data-id="b75fd4d6" > <p class="typography btn__label js-search-button-more js-button-label" data-id="c96a31dd" > Show more</p> </button></div> </div> </div> </div> <div class="wrapper" data-id="bac7bea2" > <div class="wrapper__inner"> <div class="featured-posts js-featured-posts block-featured-posts js-featured-posts"> <a href="https://productive.io/engineering/integrations-series-authentication-and-connection/" class="card-simple featured-posts__card-simple" data-id="a639e496" > <picture class="image card-simple__image-picture" data-id="70aa9403" > <img src="https://website-assets.productive.io/uploads/sites/2/2024/01/Blog@3x-1536x644.webp" class="image image__img card-simple__image-img" alt="" loading="lazy" /> </picture><p class="typography card-simple__intro" data-id="f96772c6" > Engineering</p><h2 class="typography card-simple__heading" data-id="de1a3853" > Integrations Series: Authentication And Connection</h2><p class="typography card-simple__paragraph" data-id="644d93a4" > Integrations are a big part of any software, but they’re crucial to the functionality of a tool like Productive.</p><button name="" class="btn btn__type--primary card-simple__btn" id="" aria-label="" data-id="53051e27" > <p class="typography btn__label js-button-label" data-id="7516b0c8" > Read article</p> </button> </a><a href="https://productive.io/engineering/a-close-call-with-real-time-how-rethinking-pub-sub-saved-the-day/" class="card-simple featured-posts__card-simple" data-id="ff79fb9f" > <picture class="image card-simple__image-picture" data-id="d44f341a" > <img src="https://website-assets.productive.io/uploads/sites/2/2024/01/BP@2x-768x322.webp" class="image image__img card-simple__image-img" alt="" loading="lazy" /> </picture><p class="typography card-simple__intro" data-id="9388b11a" > Backend • Testing</p><h2 class="typography card-simple__heading" data-id="3f7b60b3" > A Close Call with Real-Time: How Rethinking Pub-Sub Saved the Day</h2> </a><a href="https://productive.io/engineering/decoupling-deployment-from-release-with-feature-toggles/" class="card-simple featured-posts__card-simple" data-id="0949dc65" > <picture class="image card-simple__image-picture" data-id="c2f8a602" > <img src="https://website-assets.productive.io/uploads/sites/2/2023/11/BP@2x-1-768x322.webp" class="image image__img card-simple__image-img" alt="" loading="lazy" /> </picture><p class="typography card-simple__intro" data-id="6b956399" > Frontend</p><h2 class="typography card-simple__heading" data-id="b318e070" > Decoupling Deployment From Release With Feature Toggles</h2> </a></div> </div> </div> <div class="wrapper" data-id="c61222d9" > <div class="wrapper__inner"> <div class="post-listing js-post-listing block-post-listing post-listing--default js-post-listing" data-blog-slug="/engineering/" data-id=6eabe140 data-per-page=3 data-display-as=card data-show-featured-img=true data-show-read-btn=false data-show-excerpt=true data-show-category=true data-read-btn-text=Read article data-block-class=post-listing data-nonce=6fe17acefb data-page=1 data-skip=0 data-card-caption-color=green500 data-card-heading-color=black data-card-heading-highlight-color=black data-card-heading-font-size=24-bold data-card-paragraph-color=black data-card-paragraph-font-size=18-regular data-card-image-left=false > <div class="post-listing__posts js-post-listing-posts"> <a href="https://productive.io/engineering/how-to-keep-your-project-from-stagnating/" class="card-simple post-listing__card-simple" data-id="52b87fec" > <picture class="image card-simple__image-picture" data-id="3242cd83" > <img src="https://website-assets.productive.io/uploads/sites/2/2023/05/Keep_from_stagnating-blog_post_2x-8-768x322.webp" class="image image__img card-simple__image-img" alt="" loading="lazy" /> </picture><p class="typography card-simple__intro" data-id="568a2970" > Workflow</p><h2 class="typography card-simple__heading" data-id="91488901" > How to Keep Your Project From Stagnating</h2><p class="typography card-simple__paragraph" data-id="2adb01e5" > </p> </a><a href="https://productive.io/engineering/keep-track-of-your-dependencies/" class="card-simple post-listing__card-simple" data-id="88431434" > <picture class="image card-simple__image-picture" data-id="097192c1" > <img src="https://website-assets.productive.io/uploads/sites/2/2023/03/keep-track-of-your-dependencies-768x322.webp" class="image image__img card-simple__image-img" alt="" loading="lazy" /> </picture><p class="typography card-simple__intro" data-id="76efe34b" > Frontend</p><h2 class="typography card-simple__heading" data-id="3012428d" > Keep Track of Your Software’s Third-Party Libraries</h2><p class="typography card-simple__paragraph" data-id="cce68572" > Did you ever get caught up with a lot of non-updated dependencies and when you began updating them, you realized you missed a lot of things? </p> </a><a href="https://productive.io/engineering/are-you-documenting-your-project-enough/" class="card-simple post-listing__card-simple" data-id="ff398447" > <picture class="image card-simple__image-picture" data-id="3808697a" > <img src="https://website-assets.productive.io/uploads/sites/2/2023/02/FI-768x322.webp" class="image image__img card-simple__image-img" alt="" loading="lazy" /> </picture><p class="typography card-simple__intro" data-id="6b4f2f8f" > Workflow</p><h2 class="typography card-simple__heading" data-id="56989066" > Are You Documenting Your Project Enough?</h2><p class="typography card-simple__paragraph" data-id="e2d72c7b" > Writing documentation is important but tedious. I don’t know how you feel about it, but when I do it, it hurts my brain.</p> </a> </div> <div class="post-listing__loader js-post-listing-loader"> <div class="loader"> <svg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 44 44'><g fill='none' fill-rule='evenodd' stroke-width='2'><circle cx='22' cy='22' r='1' stroke='var(--loader-color-1, currentColor)'><animate attributeName='r' begin='0s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='0s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle><circle cx='22' cy='22' r='1' stroke='var(--loader-color-2, currentColor)'><animate attributeName='r' begin='-0.9s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='-0.9s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle></g></svg></div> </div> </div> </div> </div> <div class="wrapper" data-id="724273fd" > <div class="wrapper__inner"> <div class="block-carousel js-block-carousel swiper" data-swiper-loop="" > <div class="block-carousel__top-bar"> <h2 class="typography block-carousel__heading" data-id="4ee073ac" > Past Events</h2> </div> <div class="swiper-wrapper"> <div class="block-carousel__item"> <div class="block-carousel__item-inner"><a href="https://productive.io/blog/employer-of-the-year-award-2022/" class="card-with-backplate block-card-with-backplate__card-with-backplate" data-id="ef184339" > <div class="card-with-backplate__hoverlay"></div> <h2 class="typography card-with-backplate__heading" data-id="f6d5bca7" > <strong>Employer of the Year Award</strong> </h2><p class="typography card-with-backplate__paragraph" data-id="d81a5324" > <strong>December 8, 2022</strong><br><br>Productive came in <strong>first</strong> in the category of small companies (20-50 employees) after winning 3rd place in the same category last year. </p> </a></div> </div> <div class="block-carousel__item"> <div class="block-carousel__item-inner"><div class="card-with-backplate block-card-with-backplate__card-with-backplate" data-id="67833c11"> <div class="card-with-backplate__hoverlay"></div> <h2 class="typography card-with-backplate__heading" data-id="f8c501e9" > <strong>Digital Labin</strong> </h2><p class="typography card-with-backplate__paragraph" data-id="c8945d18" > <strong>September 23-24, 2022</strong><br><br>Our <strong>VP of Engineering, Ivan Lučin</strong> talked about building Productive’s Docs and how we’re challenging Google. Yes, Google.</p> </div></div> </div> <div class="block-carousel__item"> <div class="block-carousel__item-inner"><div class="card-with-backplate block-card-with-backplate__card-with-backplate" data-id="064760d7"> <div class="card-with-backplate__hoverlay"></div> <h2 class="typography card-with-backplate__heading" data-id="4419508a" > <strong>Infobip Shift</strong></h2><p class="typography card-with-backplate__paragraph" data-id="b795a742" > <strong>September 19-20, 2022</strong><br><br>If you’re into cars, you couldn’t have missed us. Hint: DeLorean in indigo hues. We also gave out some awards to the fastest developers who took our quiz.</p> </div></div> </div> <div class="block-carousel__item"> <div class="block-carousel__item-inner"><div class="card-with-backplate block-card-with-backplate__card-with-backplate" data-id="e549a564"> <div class="card-with-backplate__hoverlay"></div> <h2 class="typography card-with-backplate__heading" data-id="cca16593" > <strong>.debug</strong></h2><p class="typography card-with-backplate__paragraph" data-id="440ec5ac" > <strong>June 2-3, 2022</strong><br><br>So how was it at .debug 2022? If you missed it, you missed a ton of good engineering chats and tons of ice cream. <br></p> </div></div> </div> <div class="block-carousel__item"> <div class="block-carousel__item-inner"><div class="card-with-backplate block-card-with-backplate__card-with-backplate" data-id="93b5f9c9"> <div class="card-with-backplate__hoverlay"></div> <h2 class="typography card-with-backplate__heading" data-id="1785adf0" > <strong>Job Fair</strong></h2><p class="typography card-with-backplate__paragraph" data-id="5ccc5856" > <strong>May 11-12, 2022</strong><br><br>We got to meet a ton of ambitious students at FER’s Job Fair. We’re still wondering where they stuck all the stickers we gave out.</p> </div></div> </div> </div> </div> </div> </div> <div class="wrapper" data-id="4900ee54" > <div class="wrapper__inner"> <div class="block-group" data-id="2eb1188d"> <div class="wrapper wrapper--simple" data-id="e7030ee5" > <div class="wrapper__skip-dom"> <div class="block-columns" data-id="ec40c13b"> <div class="block-column" data-id="946fa17d"> <div class="wrapper wrapper--simple" data-id="bd581589" > <div class="wrapper__skip-dom"> <div class="block-heading" data-id="ec47e543"> <h2 class="typography block-heading__heading" data-id="ad949e82" > From Engineers to Engineers</h2></div> </div> </div> <div class="wrapper wrapper--simple" data-id="11fc83d8" > <div class="wrapper__skip-dom"> <div class="block-paragraph" data-id="eedecd91" > <p class="typography block-paragraph__paragraph" data-id="20af6e70" > Get thoughts, news and job opportunity alerts and learn how we steer Productive’s path.</p></div> </div> </div> </div> <div class="block-column" data-id="0fd6e8a7"> <style id='esFormsCssVariables-global'>:root {--global-custom-blocks-name: eightshift-block;--global-es-max-cols: 12;--global-esf-spacing-xs: 0.25rem;--global-esf-spacing-s: 0.5rem;--global-esf-spacing-m: 1rem;--global-esf-spacing-l: 1.5rem;--global-esf-spacing-xl: 2rem;--global-esf-ease-out-cubic: cubic-bezier(0.215, 0.61, 0.355, 1);--global-esf-box-shadow: 0 0 0.5rem rgb(0 0 0 / 0.04);--global-esf-box-shadow-l: 0 0 0.125rem rgb(0 0 0 / 0.16), 0 0 0.5rem rgb(0 0 0 / 0.16);--global-esf-max-width: 36rem;--global-esf-input-height: 2.625rem;--global-breakpoints-mobile: 480;--global-breakpoints-tablet: 960;--global-breakpoints-desktop: 1920;--global-breakpoints-large: 1921;--global-colors-esf-admin-accent: #29A3A3;--global-colors-esf-admin-accent-values: 41 163 163;--global-colors-esf-admin-accent-50: #29A3A380;--global-colors-esf-admin-accent-50-values: 0 0 0;--global-colors-esf-admin-accent-30: #29a3a333;--global-colors-esf-admin-accent-30-values: 0 0 0;--global-colors-esf-admin-accent-10: #29A3A31A;--global-colors-esf-admin-accent-10-values: 0 0 0;--global-colors-esf-admin-accent-05: #29A3A30D;--global-colors-esf-admin-accent-05-values: 0 0 0;--global-colors-esf-admin-accent-dark: #218282;--global-colors-esf-admin-accent-dark-values: 33 130 130;--global-colors-esf-border: #DEDEDE;--global-colors-esf-border-values: 222 222 222;--global-colors-esf-black: #181818;--global-colors-esf-black-values: 24 24 24;--global-colors-esf-white: #FFFFFF;--global-colors-esf-white-values: 255 255 255;--global-colors-esf-gray: #484848;--global-colors-esf-gray-values: 72 72 72;--global-colors-esf-yellow-50: #FFFBEB;--global-colors-esf-yellow-50-values: 255 251 235;--global-colors-esf-yellow-100: #FEF3C7;--global-colors-esf-yellow-100-values: 254 243 199;--global-colors-esf-yellow-200: #FDE68A;--global-colors-esf-yellow-200-values: 253 230 138;--global-colors-esf-yellow-500: #EAB308;--global-colors-esf-yellow-500-values: 234 179 8;--global-colors-esf-yellow-950: #451A03;--global-colors-esf-yellow-950-values: 69 26 3;--global-colors-esf-sky-50: #F0F9FF;--global-colors-esf-sky-50-values: 240 249 255;--global-colors-esf-sky-100: #E0F2FE;--global-colors-esf-sky-100-values: 224 242 254;--global-colors-esf-sky-200: #BAE6FD;--global-colors-esf-sky-200-values: 186 230 253;--global-colors-esf-sky-500: #0EA5E9;--global-colors-esf-sky-500-values: 14 165 233;--global-colors-esf-sky-950: #082F49;--global-colors-esf-sky-950-values: 8 47 73;--global-colors-esf-gray-50: #F9FAFB;--global-colors-esf-gray-50-values: 249 250 251;--global-colors-esf-gray-100: #F3F4F6;--global-colors-esf-gray-100-values: 243 244 246;--global-colors-esf-gray-200: #E5E7EB;--global-colors-esf-gray-200-values: 229 231 235;--global-colors-esf-gray-300: #D1D5DB;--global-colors-esf-gray-300-values: 209 213 219;--global-colors-esf-gray-400: #9CA3AF;--global-colors-esf-gray-400-values: 156 163 175;--global-colors-esf-gray-500: #6B7280;--global-colors-esf-gray-500-values: 107 114 128;--global-colors-esf-gray-600: #4B5563;--global-colors-esf-gray-600-values: 75 85 99;--global-colors-esf-gray-950: #030712;--global-colors-esf-gray-950-values: 3 7 18;--global-colors-esf-red-50: #FEF2F2;--global-colors-esf-red-50-values: 254 242 242;--global-colors-esf-red-100: #FEE2E2;--global-colors-esf-red-100-values: 254 226 226;--global-colors-esf-red-200: #FECACA;--global-colors-esf-red-200-values: 254 202 202;--global-colors-esf-red-500: #EF4444;--global-colors-esf-red-500-values: 239 68 68;--global-colors-esf-red-400: #F87171;--global-colors-esf-red-400-values: 248 113 113;--global-colors-esf-red-600: #DC2626;--global-colors-esf-red-600-values: 220 38 38;--global-colors-esf-red-800: #991B1B;--global-colors-esf-red-800-values: 153 27 27;--global-colors-esf-red-950: #450A0A;--global-colors-esf-red-950-values: 69 10 10;--global-colors-esf-green-50: #F0FDF4;--global-colors-esf-green-50-values: 240 253 244;--global-colors-esf-green-100: #DCFCE7;--global-colors-esf-green-100-values: 220 252 231;--global-colors-esf-green-200: #BBF7D0;--global-colors-esf-green-200-values: 187 247 208;--global-colors-esf-green-500: #22C55E;--global-colors-esf-green-500-values: 34 197 94;--global-colors-esf-green-950: #052E16;--global-colors-esf-green-950-values: 5 46 22;}</style> <div class="es-block-forms js-es-block-forms cta-inner-form" > <form class="es-form js-es-block-form" data-phone-sync='1' data-form-id='17' data-post-id='863' data-form-type='hubspot' data-conditional-tags='[]' method='post' data-block-ssr='false' data-disabled-default-styles='false' novalidate onsubmit="event.preventDefault();" > <div class="es-global-msg js-es-block-global-msg" > </div> <div class="es-form__fields"> <div class="es-field es-field--input js-es-block-field" data-id="f47cda46" data-hubspot-type-id='0-1' data-field-name='email' data-field-type='input' data-type-custom='email' data-tracking='email'> <div class="es-field__inner"> <div class="es-field__content"> <div class="es-field__content-wrap"> <input class="es-input" name="email" id="email" type="email" placeholder='Your email, please' /> </div> </div> <div class="es-error es-field__es-error js-es-block-error" data-id="email" ></div> </div> </div><div class="es-field es-field--submit js-es-block-field" data-id="fdb34a5e" data-field-type='submit'> <div class="es-field__inner"> <div class="es-field__content"> <div class="es-field__content-wrap"> <button class="es-submit es-submit--default" ><span class="es-submit__inner"> Get Engineering Updates</span></button> </div> </div> </div> </div> </div> <div class="es-loader js-es-block-loader es-loader__form"> <svg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 44 44'><g fill='none' fill-rule='evenodd' stroke-width='2'><circle cx='22' cy='22' r='1' stroke='var(--loader-color-1, currentColor)'><animate attributeName='r' begin='0s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='0s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle><circle cx='22' cy='22' r='1' stroke='var(--loader-color-2, currentColor)'><animate attributeName='r' begin='-0.9s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='-0.9s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle></g></svg></div></form><div class="es-loader js-es-block-loader es-loader__geolocation"> <svg xmlns='http://www.w3.org/2000/svg' width='44' height='44' viewBox='0 0 44 44'><g fill='none' fill-rule='evenodd' stroke-width='2'><circle cx='22' cy='22' r='1' stroke='var(--loader-color-1, currentColor)'><animate attributeName='r' begin='0s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='0s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle><circle cx='22' cy='22' r='1' stroke='var(--loader-color-2, currentColor)'><animate attributeName='r' begin='-0.9s' dur='1.8s' values='1; 20' calcMode='spline' keyTimes='0; 1' keySplines='0.165, 0.84, 0.44, 1' repeatCount='indefinite'/><animate attributeName='stroke-opacity' begin='-0.9s' dur='1.8s' values='1; 0' calcMode='spline' keyTimes='0; 1' keySplines='0.3, 0.61, 0.355, 1' repeatCount='indefinite'/></circle></g></svg></div></div> <style id='esFormsCssVariables'>.es-field[data-id='8e855714']{--es-field-width: calc((12 / 12) * 100%);} .es-field[data-id='7e5af315']{--es-field-width: calc((12 / 12) * 100%);} .es-field[data-id='f47cda46']{--es-field-width: calc((12 / 12) * 100%);} .es-field[data-id='fdb34a5e']{--es-field-width: calc((12 / 12) * 100%);} </style> </div> </div> </div> </div> </div> </div> </div> </main> <div data-wpr-lazyrender="1" class="layout footer-partial"> <div class="layout__main footer-partial__main"> <div class="layout__main-inner footer-partial__main-inner"> <div class="block-footer-minimal"> <a href="https://productive.io"> <div class="block-footer-minimal__logo"> <picture class="image block-footer-minimal__logo-picture" data-id="d0db032b" > <img src="https://productive.io/engineering/wp-content/uploads/sites/2/2022/11/logo-white.svg" class="image image__img block-footer-minimal__logo-img" alt="" loading="lazy" /> </picture> </div> </a> <div class="block-footer-minimal__social"> <a aria-hidden="false" class="icon icon__link block-footer-minimal__icon" data-id="87392b91" href=https://www.facebook.com/productiveio/ target=_blank rel="noopener noreferrer" > <div class="icon__backplate" > <i class="block-footer-minimal__icon-elem" data-name="facebook-24"> <svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='m22 11.9941c0-5.52239-4.4776-9.99996-10-9.99996-5.52243 0-10 4.47757-10 9.99996 0 4.9909 3.65631 9.1282 8.4376 9.8791v-6.9878h-2.5397v-2.8913h2.5397v-2.20359c0-2.50597 1.4935-3.89115 3.7773-3.89115 1.0941 0 2.2388.19547 2.2388.19547v2.46098h-1.2615c-1.2417 0-1.6298.77063-1.6298 1.56239v1.8759h2.7731l-.4429 2.8913h-2.3302v6.9878c4.7813-.7495 8.4376-4.8868 8.4376-9.8791z' fill='currentColor'/></svg> </i> </div> </a><a aria-hidden="false" class="icon icon__link block-footer-minimal__icon" data-id="584bc1d7" href=https://www.linkedin.com/company/productive-io/ target=_blank rel="noopener noreferrer" > <div class="icon__backplate" > <i class="block-footer-minimal__icon-elem" data-name="linkedin-24"> <svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path clip-rule='evenodd' d='m21 5c0-1.10457-.8954-2-2-2h-14c-1.10457 0-2 .89543-2 2v14c0 1.1046.89543 2 2 2h14c1.1046 0 2-.8954 2-2zm-2.5 8.2v5.3h-2.79v-4.93c0-.7732-.6268-1.4-1.4-1.4-.77 0-1.39.63-1.39 1.4v4.93h-2.79v-8.37h2.79v1.11c.48-.78 1.47-1.3 2.32-1.3 1.8004 0 3.26 1.4596 3.26 3.26zm-11.62-4.64c.92784 0 1.68-.75216 1.68-1.68 0-.93-.75-1.69-1.68-1.69-.93336 0-1.69.75664-1.69 1.69 0 .93.76 1.68 1.69 1.68zm1.39 1.57v8.37h-2.77v-8.37z' fill='currentColor' fill-rule='evenodd'/></svg> </i> </div> </a><a aria-hidden="false" class="icon icon__link block-footer-minimal__icon" data-id="0915c13f" href=https://www.instagram.com/productive.io/ target=_blank rel="noopener noreferrer" > <div class="icon__backplate" > <i class="block-footer-minimal__icon-elem" data-name="instagram-24"> <svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path clip-rule='evenodd' d='m7.8 2h8.4c3.2 0 5.8 2.6 5.8 5.8v8.4c0 3.2033-2.5967 5.8-5.8 5.8h-8.4c-3.2 0-5.8-2.6-5.8-5.8v-8.4c0-3.20325 2.59675-5.8 5.8-5.8zm-.2 2c-1.98823 0-3.6 1.61177-3.6 3.6v8.8c0 1.99 1.61 3.6 3.6 3.6h8.8c1.9882 0 3.6-1.6118 3.6-3.6v-8.8c0-1.99-1.61-3.6-3.6-3.6zm10.9 2.75c0-.69036-.5596-1.25-1.25-1.25s-1.25.55964-1.25 1.25.5596 1.25 1.25 1.25 1.25-.55964 1.25-1.25zm-6.5.25c2.7614 0 5 2.23858 5 5 0 2.7614-2.2386 5-5 5-2.76142 0-5-2.2386-5-5 0-2.76142 2.23858-5 5-5zm-3 5c0-1.6569 1.3431-3 3-3s3 1.3431 3 3-1.3431 3-3 3-3-1.3431-3-3z' fill='currentColor' fill-rule='evenodd'/></svg> </i> </div> </a><a aria-hidden="false" class="icon icon__link block-footer-minimal__icon" data-id="5a5cca4a" href=https://twitter.com/productiveio target=_blank rel="noopener noreferrer" > <div class="icon__backplate" > <i class="block-footer-minimal__icon-elem" data-name="twitter-24"> <svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='m22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05-.79-.86-1.9-1.36-3.16-1.36-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98-3.55996-.18-6.72996-1.89-8.83996-4.48-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21-.36.1-.74.15-1.13.15-.27 0-.54-.03-.8-.08.54 1.69 2.11 2.95 4 2.98-1.46 1.16-3.31 1.84-5.33 1.84-.34 0-.68-.02-1.02-.06 1.9 1.22 4.16 1.93 6.58 1.93 7.87996 0 12.20996-6.54 12.20996-12.21 0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z' fill='currentColor'/></svg> </i> </div> </a> </div> </div> </div> </div> </div><div class="gdpr-modal__backdrop js-gdpr-modal-backdrop"></div> <div class="gdpr-modal js-gdpr-modal" data-modal="gdpr"> <div class="gdpr-modal__container"> <div class="gdpr-modal__content gdpr-modal__content--advance js-gdpr-modal-screen-advance"> <div class="gdpr-modal__header"> <p class="typography gdpr-modal__heading gdpr-modal__title" data-id="eeb1369a" > We need your consent to continue</p> <i class="gdpr-modal__close js-gdpr-modal-hide-advance"></i> </div> <div class="gdpr-modal__body"> <div class="gdpr-modal__level"> <div class="gdpr-modal__level-content"> <h3 class="typography gdpr-modal__heading gdpr-modal__selection-item-title" data-id="ec74f622" > Necessary cookies</h3><p class="typography gdpr-modal__paragraph gdpr-modal__selection-item-summary" data-id="1d5ea023" > Cookies for the basic functionality of the Productive website.</p> </div> <div class="gdpr-modal__toggle"> <p class="typography gdpr-modal__paragraph" data-id="27d479af" > Always on</p> </div> </div> <div class="gdpr-modal__level"> <div class="gdpr-modal__level-content"> <h3 class="typography gdpr-modal__heading gdpr-modal__selection-item-title" data-id="0aaae8a3" > Functional cookies</h3><p class="typography gdpr-modal__paragraph gdpr-modal__selection-item-summary" data-id="8bfe2f0c" > Cookies for additional functionality and increased website security.</p> </div> <div class="gdpr-modal__toggle"> <div class="toggle gdpr-modal__toggle js-gdpr-modal-toggle" data-id="db5d6443"> <label class="toggle__label"> <input name="" class="toggle__checkbox js-gdpr-modal-toggle-input js-gdpr-modal-toggle-input-functional" value="functional" type="checkbox" data-level=1 /> <span class="toggle__background"></span> <span class="toggle__toggle-circle"></span> <span class="toggle__hidden-label"></span> </label> </div> </div> </div> <div class="gdpr-modal__level"> <div class="gdpr-modal__level-content"> <h3 class="typography gdpr-modal__heading gdpr-modal__selection-item-title" data-id="15845607" > Targeting cookies</h3><p class="typography gdpr-modal__paragraph gdpr-modal__selection-item-summary" data-id="52d093b4" > Advertising and analytics service cookies that create day-to-day statistics and show ads on their site and on the advertiser’s partners websites.</p> </div> <div class="gdpr-modal__toggle"> <div class="toggle gdpr-modal__toggle js-gdpr-modal-toggle" data-id="c8b4e0d2"> <label class="toggle__label"> <input name="" class="toggle__checkbox js-gdpr-modal-toggle-input js-gdpr-modal-toggle-input-marketing" value="marketing" type="checkbox" data-level=2 /> <span class="toggle__background"></span> <span class="toggle__toggle-circle"></span> <span class="toggle__hidden-label"></span> </label> </div> </div> </div> </div> <div class="gdpr-modal__description"> <div class="gdpr-modal__btn-container"> <button name="" class="btn btn__type--primary gdpr-modal__btn js-gdpr-modal__btn-advance js-gdpr-modal-btn js-gdpr-modal-btn-advance" id="" aria-label="" data-id="17c2f54d" data-level=2 > <p class="typography btn__label js-gdpr-modal__btn-advance js-gdpr-modal-btn js-gdpr-modal-btn-advance js-button-label" data-id="dabf96a9" > Save changes</p> </button> </div> <div class="gdpr-modal__btn-container"> <button name="" class="btn btn__as-link btn__type--primary gdpr-modal__btn" id="" aria-label="" data-id="f51371fa" target=_blank rel="noopener noreferrer" > <p class="typography btn__label js-button-label" data-id="82112758" > Privacy Policy</p> </button> </div> </div> </div> <div class="gdpr-modal__content gdpr-modal__content--basic js-gdpr-modal-screen-basic"> <span class="gdpr-modal__intro"> <p class="typography gdpr-modal__paragraph gdpr-modal__selection-item-summary" data-id="38f9530e" > <a href="#" class="gdpr-modal__more-link js-gdpr-modal-show-advance"><strong>Manage cookies</strong></a> and help us deliver our services. By using our services, you agree to our use of cookies.</p> </span> <button name="" class="btn btn__type--primary gdpr-modal__btn js-gdpr-modal-btn" id="" aria-label="" data-id="2860ae80" data-level=2 > <p class="typography btn__label js-gdpr-modal-btn js-button-label" data-id="5ac2fbcb" > I agree</p> </button> </div> </div> </div><style id='esCssVariables'> .block-heading[data-id='0834a263']{ --heading-align: left; } .typography[data-id='11af0a3f']{ --typography-color: var(--typography-color-override, var(--global-colors-white)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-font-family: var(--global-font-family); --typography-letter-spacing: -3px; --es-ft-sm-font-size: 3; --es-ft-md-font-size: 4.375; --es-ft-lg-font-size: 5.625; --typography-line-height: 1.07; --typography-font-weight: bold; } .wrapper[data-id='27ddb43c']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: block; } .block-paragraph[data-id='71c1b4e4']{ --paragraph-align: left; } .typography[data-id='f87224fd']{ --typography-color: var(--typography-color-override, var(--global-colors-white)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .wrapper[data-id='e985dd26']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: block; } .block-column[data-id='a75b2db4']{ --column-horizontal-padding: calc(var(--base-font-size) * 0rem); --column-background-color: var(--global-colors-unset); --column-border-color-mobile: var(--global-colors-indigo); --column-border-color-desktop: var(--global-colors-indigo); } .block-column[data-id='a75b2db4']{ --wrapper-spacing-top: initial;; --wrapper-spacing-bottom: initial;; --wrapper-spacing-top-in: initial;; --wrapper-spacing-bottom-in: initial;; --wrapper-divider-top: initial; --wrapper-divider-bottom: initial;; --wrapper-display: initial;; --wrapper-is-full-width: initial;; --wrapper-grid-template-columns: initial;; --wrapper-display-type: initial; } .block-columns[data-id='8cb43bc8']{ --columns-grid-side-columns: var(--wrapper-grid-side-columns); } .wrapper[data-id='178ababd']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: block; } .block-group[data-id='483ad8d1']{ --group-border-radius: 0; } .wrapper[data-id='935a4c8f']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: grid; } .block-category-filter[data-id='91692159']{ --category-filter-button-border: var(--global-colors-green300); --category-filter-background-selected: var(--global-colors-green300); --category-filter-text-default: var(--global-colors-black); --category-filter-text-selected: var(--global-colors-black); } .wrapper[data-id='07fed296']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: block; } .block-column[data-id='64de2b43']{ --column-horizontal-padding: calc(var(--base-font-size) * 0rem); --column-background-color: var(--global-colors-unset); --column-border-color-mobile: var(--global-colors-indigo); --column-border-color-desktop: var(--global-colors-indigo); } .block-column[data-id='64de2b43']{ --wrapper-spacing-top: initial;; --wrapper-spacing-bottom: initial;; --wrapper-spacing-top-in: initial;; --wrapper-spacing-bottom-in: initial;; --wrapper-divider-top: initial; --wrapper-divider-bottom: initial;; --wrapper-display: initial;; --wrapper-is-full-width: initial;; --wrapper-grid-template-columns: initial;; --wrapper-display-type: initial; } .wrapper[data-id='6e9fe2c1']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: block; } .block-column[data-id='7694d97f']{ --column-horizontal-padding: calc(var(--base-font-size) * 0rem); --column-background-color: var(--global-colors-unset); --column-border-color-mobile: var(--global-colors-indigo); --column-border-color-desktop: var(--global-colors-indigo); } .block-column[data-id='7694d97f']{ --wrapper-spacing-top: initial;; --wrapper-spacing-bottom: initial;; --wrapper-spacing-top-in: initial;; --wrapper-spacing-bottom-in: initial;; --wrapper-divider-top: initial; --wrapper-divider-bottom: initial;; --wrapper-display: initial;; --wrapper-is-full-width: initial;; --wrapper-grid-template-columns: initial;; --wrapper-display-type: initial; } .block-columns[data-id='dce50919']{ --columns-grid-side-columns: var(--wrapper-grid-side-columns); } .wrapper[data-id='b0527d79']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: block; } .block-paragraph[data-id='62c030b8']{ --paragraph-align: left; } .typography[data-id='8e0b465c']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-letter-spacing: -1px; --es-ft-sm-font-size: 1.5; --es-ft-md-font-size: 2.25; --es-ft-lg-font-size: 3; --typography-line-height: 1.167; } .wrapper[data-id='08e433b2']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: grid; } .media[data-id='12f114b5']{ --media-align-horizontal: center; --media-align-vertical: center; --media-object-position: center center; --media-rounded-corners: calc(var(--base-font-size) * (calc(0 / 10) * 2rem)); } .image[data-id='b209cb4e']{ --image-scale: 1; --image-overflow: hidden; --image-object-fit: cover; --image-default-border-radius: 0; } .wrapper[data-id='80411fb2']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: grid; } .image[data-id='fbbd97f8']{ --image-default-border-radius: calc(var(--base-font-size) * 2rem); } .typography[data-id='a42c49ec']{ --typography-color: var(--typography-color-override, var(--global-colors-green500)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .typography[data-id='6e4afada']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .btn[data-id='b75fd4d6']{ --button-color: var(--bp-colors-button-green300, var(--global-colors-white)); --button-color-hover: var(--global-colors-white); --button-secondary-color: var(--global-colors-green300); --button-secondary-color-hover: var(--global-colors-white); --button-border-color: var(--global-colors-green300); --button-background-color: var(--global-colors-green300); --button-background-color-hover: var(--global-colors-green400); --button-color-is-link: var(--global-colors-green300); --button-color-is-link-hover: var(--global-colors-green400); --button-border-radius: calc(var(--base-font-size) * 3rem); --button-padding-vertical: calc(var(--base-font-size) * 1.3rem); --button-padding-horizontal: calc(var(--base-font-size) * 2.4rem); --button-display: inline-flex; --button-width: auto; --button-icon-left-space: calc(var(--base-font-size) * 1rem); --button-icon-right-space: 0; --button-flex-direction: row; } .typography[data-id='c96a31dd']{ --typography-color: var(--typography-color-override, var(--global-colors-white)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; --typography-font-weight: bold; } .wrapper[data-id='4dfb9f49']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: grid; } .card-simple[data-id='a639e496']{ --card-text-align: left; --card-content-align: flex-start; --card-media-align: flex-start; --card-intro-margin-top: 0; --card-intro-margin-bottom: calc(var(--base-font-size) * 1.25rem); --card-template-rows: repeat(7, max-content); --card-template-cols: 1fr; --card-template-areas: 'a' 'b' 'c' 'd' 'e' 'f' 'g'; --card-forced-background-color: var(--global-colors-initial); --card-forced-border-radius: initial; } .image[data-id='70aa9403']{ --image-width: 100%; --image-img-width: 100%; --image-height: 100%; --image-img-height: 100%; --image-img-max-width: 100%; --image-img-max-height: 100%; --image-scale: 1; --image-overflow: hidden; --image-object-fit: cover; --image-default-border-radius: calc(var(--base-font-size) * 2rem); } .typography[data-id='f96772c6']{ --typography-color: var(--typography-color-override, var(--global-colors-green500)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-uppercase: uppercase; --typography-letter-spacing: 0.4px; --es-ft-sm-font-size: 0.6875; --es-ft-md-font-size: 0.75; --es-ft-lg-font-size: 0.875; --typography-line-height: 1.33; --typography-font-weight: bold; } .typography[data-id='de1a3853']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-highlight-color: var(--global-colors-black); --typography-font-family: var(--global-font-family); --typography-letter-spacing: -2px; --es-ft-sm-font-size: 2.25; --es-ft-md-font-size: 3; --es-ft-lg-font-size: 4.125; --typography-line-height: 1.146; --typography-font-weight: bold; } .typography[data-id='644d93a4']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1.125; --es-ft-md-font-size: 1.25; --es-ft-lg-font-size: 1.625; --typography-line-height: 1.4; } .btn[data-id='53051e27']{ --button-color: var(--bp-colors-button-green300, var(--global-colors-white)); --button-color-hover: var(--global-colors-white); --button-secondary-color: var(--global-colors-green300); --button-secondary-color-hover: var(--global-colors-white); --button-border-color: var(--global-colors-green300); --button-background-color: var(--global-colors-green300); --button-background-color-hover: var(--global-colors-green400); --button-color-is-link: var(--global-colors-green300); --button-color-is-link-hover: var(--global-colors-green400); --button-border-radius: calc(var(--base-font-size) * 3rem); --button-padding-vertical: calc(var(--base-font-size) * 1.3rem); --button-padding-horizontal: calc(var(--base-font-size) * 2.4rem); --button-display: inline-flex; --button-width: auto; --button-icon-left-space: calc(var(--base-font-size) * 1rem); --button-icon-right-space: 0; --button-flex-direction: row; } .typography[data-id='7516b0c8']{ --typography-color: var(--typography-color-override, var(--global-colors-white)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; --typography-font-weight: bold; } .card-simple[data-id='ff79fb9f']{ --card-text-align: left; --card-content-align: flex-start; --card-media-align: flex-start; --card-intro-margin-top: 0; --card-intro-margin-bottom: calc(var(--base-font-size) * 1.25rem); --card-template-rows: repeat(6, max-content); --card-template-cols: auto 1fr; --card-template-areas: 'a b' 'a c' 'a d' 'a e' 'a f' 'a g'; --card-column-gap: calc(var(--base-font-size) * 4rem); --card-forced-background-color: var(--global-colors-initial); --card-forced-border-radius: initial; } .image[data-id='d44f341a']{ --image-width: 100%; --image-img-width: 100%; --image-height: 100%; --image-img-height: 100%; --image-img-max-width: 100%; --image-img-max-height: 100%; --image-scale: 1; --image-overflow: hidden; --image-object-fit: cover; --image-default-border-radius: calc(var(--base-font-size) * 2rem); } .typography[data-id='9388b11a']{ --typography-color: var(--typography-color-override, var(--global-colors-green500)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-uppercase: uppercase; --typography-letter-spacing: 0.4px; --es-ft-sm-font-size: 0.6875; --es-ft-md-font-size: 0.75; --es-ft-lg-font-size: 0.875; --typography-line-height: 1.33; --typography-font-weight: bold; } .typography[data-id='3f7b60b3']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-highlight-color: var(--global-colors-black); --es-ft-sm-font-size: 1.25; --es-ft-md-font-size: 1.5; --es-ft-lg-font-size: 1.875; --typography-letter-spacing: -0.5px; --typography-line-height: 1.33; --typography-font-weight: bold; } .card-simple[data-id='0949dc65']{ --card-text-align: left; --card-content-align: flex-start; --card-media-align: flex-start; --card-intro-margin-top: 0; --card-intro-margin-bottom: calc(var(--base-font-size) * 1.25rem); --card-template-rows: repeat(6, max-content); --card-template-cols: auto 1fr; --card-template-areas: 'a b' 'a c' 'a d' 'a e' 'a f' 'a g'; --card-column-gap: calc(var(--base-font-size) * 4rem); --card-forced-background-color: var(--global-colors-initial); --card-forced-border-radius: initial; } .image[data-id='c2f8a602']{ --image-width: 100%; --image-img-width: 100%; --image-height: 100%; --image-img-height: 100%; --image-img-max-width: 100%; --image-img-max-height: 100%; --image-scale: 1; --image-overflow: hidden; --image-object-fit: cover; --image-default-border-radius: calc(var(--base-font-size) * 2rem); } .typography[data-id='6b956399']{ --typography-color: var(--typography-color-override, var(--global-colors-green500)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-uppercase: uppercase; --typography-letter-spacing: 0.4px; --es-ft-sm-font-size: 0.6875; --es-ft-md-font-size: 0.75; --es-ft-lg-font-size: 0.875; --typography-line-height: 1.33; --typography-font-weight: bold; } .typography[data-id='b318e070']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-highlight-color: var(--global-colors-black); --es-ft-sm-font-size: 1.25; --es-ft-md-font-size: 1.5; --es-ft-lg-font-size: 1.875; --typography-letter-spacing: -0.5px; --typography-line-height: 1.33; --typography-font-weight: bold; } .wrapper[data-id='bac7bea2']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: grid; } .card-simple[data-id='52b87fec']{ --card-text-align: left; --card-content-align: flex-start; --card-media-align: flex-start; --card-intro-margin-top: 0; --card-intro-margin-bottom: calc(var(--base-font-size) * 1.25rem); --card-template-rows: repeat(7, max-content); --card-template-cols: 1fr; --card-template-areas: 'a' 'b' 'c' 'd' 'e' 'f' 'g'; --card-forced-background-color: var(--global-colors-initial); --card-forced-border-radius: initial; } .image[data-id='3242cd83']{ --image-width: 100%; --image-img-width: 100%; --image-height: 100%; --image-img-height: 100%; --image-img-max-width: 100%; --image-img-max-height: 100%; --image-scale: 1; --image-overflow: hidden; --image-object-fit: cover; --image-default-border-radius: calc(var(--base-font-size) * 2rem); } .typography[data-id='568a2970']{ --typography-color: var(--typography-color-override, var(--global-colors-green500)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-uppercase: uppercase; --typography-letter-spacing: 0.4px; --es-ft-sm-font-size: 0.6875; --es-ft-md-font-size: 0.75; --es-ft-lg-font-size: 0.875; --typography-line-height: 1.33; --typography-font-weight: bold; } .typography[data-id='91488901']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-highlight-color: var(--global-colors-black); --es-ft-sm-font-size: 1.25; --es-ft-md-font-size: 1.5; --es-ft-lg-font-size: 1.875; --typography-letter-spacing: -0.5px; --typography-line-height: 1.33; --typography-font-weight: bold; } .typography[data-id='2adb01e5']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1; --es-ft-md-font-size: 1.125; --es-ft-lg-font-size: 1.4375; --typography-line-height: 1.44; } .card-simple[data-id='88431434']{ --card-text-align: left; --card-content-align: flex-start; --card-media-align: flex-start; --card-intro-margin-top: 0; --card-intro-margin-bottom: calc(var(--base-font-size) * 1.25rem); --card-template-rows: repeat(7, max-content); --card-template-cols: 1fr; --card-template-areas: 'a' 'b' 'c' 'd' 'e' 'f' 'g'; --card-forced-background-color: var(--global-colors-initial); --card-forced-border-radius: initial; } .image[data-id='097192c1']{ --image-width: 100%; --image-img-width: 100%; --image-height: 100%; --image-img-height: 100%; --image-img-max-width: 100%; --image-img-max-height: 100%; --image-scale: 1; --image-overflow: hidden; --image-object-fit: cover; --image-default-border-radius: calc(var(--base-font-size) * 2rem); } .typography[data-id='76efe34b']{ --typography-color: var(--typography-color-override, var(--global-colors-green500)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-uppercase: uppercase; --typography-letter-spacing: 0.4px; --es-ft-sm-font-size: 0.6875; --es-ft-md-font-size: 0.75; --es-ft-lg-font-size: 0.875; --typography-line-height: 1.33; --typography-font-weight: bold; } .typography[data-id='3012428d']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-highlight-color: var(--global-colors-black); --es-ft-sm-font-size: 1.25; --es-ft-md-font-size: 1.5; --es-ft-lg-font-size: 1.875; --typography-letter-spacing: -0.5px; --typography-line-height: 1.33; --typography-font-weight: bold; } .typography[data-id='cce68572']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1; --es-ft-md-font-size: 1.125; --es-ft-lg-font-size: 1.4375; --typography-line-height: 1.44; } .card-simple[data-id='ff398447']{ --card-text-align: left; --card-content-align: flex-start; --card-media-align: flex-start; --card-intro-margin-top: 0; --card-intro-margin-bottom: calc(var(--base-font-size) * 1.25rem); --card-template-rows: repeat(7, max-content); --card-template-cols: 1fr; --card-template-areas: 'a' 'b' 'c' 'd' 'e' 'f' 'g'; --card-forced-background-color: var(--global-colors-initial); --card-forced-border-radius: initial; } .image[data-id='3808697a']{ --image-width: 100%; --image-img-width: 100%; --image-height: 100%; --image-img-height: 100%; --image-img-max-width: 100%; --image-img-max-height: 100%; --image-scale: 1; --image-overflow: hidden; --image-object-fit: cover; --image-default-border-radius: calc(var(--base-font-size) * 2rem); } .typography[data-id='6b4f2f8f']{ --typography-color: var(--typography-color-override, var(--global-colors-green500)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-uppercase: uppercase; --typography-letter-spacing: 0.4px; --es-ft-sm-font-size: 0.6875; --es-ft-md-font-size: 0.75; --es-ft-lg-font-size: 0.875; --typography-line-height: 1.33; --typography-font-weight: bold; } .typography[data-id='56989066']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-highlight-color: var(--global-colors-black); --es-ft-sm-font-size: 1.25; --es-ft-md-font-size: 1.5; --es-ft-lg-font-size: 1.875; --typography-letter-spacing: -0.5px; --typography-line-height: 1.33; --typography-font-weight: bold; } .typography[data-id='e2d72c7b']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1; --es-ft-md-font-size: 1.125; --es-ft-lg-font-size: 1.4375; --typography-line-height: 1.44; } .post-listing[data-id='6eabe140']{ --post-listing-title-max-lines: 2; --post-listing-excerpt-max-lines: 2; --post-listing-column-template: repeat(3, 1fr); --post-listing-columns-mobile: 2; } .wrapper[data-id='c61222d9']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: grid; } .card-with-backplate[data-id='ef184339']{ --card-with-backplate-text-filter: invert(0); --card-with-backplate-image-width: 100%; --card-with-backplate-image-top-left-inset: 0; --card-with-backplate-width: calc(9 * var(--single-column-width) + 8 * var(--global-grid-gutter)); --card-with-backplate-bg-color-project: var(--global-colors-green100); --card-with-backplate-bg-hover-color-project: var(--global-colors-green200); } .typography[data-id='f6d5bca7']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1.25; --es-ft-md-font-size: 1.5; --es-ft-lg-font-size: 1.875; --typography-letter-spacing: -0.5px; --typography-line-height: 1.33; } .typography[data-id='d81a5324']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .card-with-backplate[data-id='67833c11']{ --card-with-backplate-text-filter: invert(0); --card-with-backplate-image-width: 100%; --card-with-backplate-image-top-left-inset: 0; --card-with-backplate-width: calc(9 * var(--single-column-width) + 8 * var(--global-grid-gutter)); --card-with-backplate-bg-color-project: var(--global-colors-green100); --card-with-backplate-bg-hover-color-project: var(--global-colors-green200); } .typography[data-id='f8c501e9']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1.25; --es-ft-md-font-size: 1.5; --es-ft-lg-font-size: 1.875; --typography-letter-spacing: -0.5px; --typography-line-height: 1.33; } .typography[data-id='c8945d18']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .card-with-backplate[data-id='064760d7']{ --card-with-backplate-text-filter: invert(0); --card-with-backplate-image-width: 100%; --card-with-backplate-image-top-left-inset: 0; --card-with-backplate-width: calc(9 * var(--single-column-width) + 8 * var(--global-grid-gutter)); --card-with-backplate-bg-color-project: var(--global-colors-green100); --card-with-backplate-bg-hover-color-project: var(--global-colors-green200); } .typography[data-id='4419508a']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1.25; --es-ft-md-font-size: 1.5; --es-ft-lg-font-size: 1.875; --typography-letter-spacing: -0.5px; --typography-line-height: 1.33; } .typography[data-id='b795a742']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-highlight-color: var(--global-colors-black); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .card-with-backplate[data-id='e549a564']{ --card-with-backplate-text-filter: invert(0); --card-with-backplate-image-width: 100%; --card-with-backplate-image-top-left-inset: 0; --card-with-backplate-width: calc(9 * var(--single-column-width) + 8 * var(--global-grid-gutter)); --card-with-backplate-bg-color-project: var(--global-colors-green100); --card-with-backplate-bg-hover-color-project: var(--global-colors-green200); } .typography[data-id='cca16593']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1.25; --es-ft-md-font-size: 1.5; --es-ft-lg-font-size: 1.875; --typography-letter-spacing: -0.5px; --typography-line-height: 1.33; } .typography[data-id='440ec5ac']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-black)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .card-with-backplate[data-id='93b5f9c9']{ --card-with-backplate-text-filter: invert(0); --card-with-backplate-image-width: 100%; --card-with-backplate-image-top-left-inset: 0; --card-with-backplate-width: calc(9 * var(--single-column-width) + 8 * var(--global-grid-gutter)); --card-with-backplate-bg-color-project: var(--global-colors-green100); --card-with-backplate-bg-hover-color-project: var(--global-colors-green200); } .typography[data-id='1785adf0']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1.25; --es-ft-md-font-size: 1.5; --es-ft-lg-font-size: 1.875; --typography-letter-spacing: -0.5px; --typography-line-height: 1.33; } .typography[data-id='5ccc5856']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-black)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .typography[data-id='4ee073ac']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-letter-spacing: -1px; --es-ft-sm-font-size: 1.5; --es-ft-md-font-size: 2.25; --es-ft-lg-font-size: 3; --typography-line-height: 1.167; --typography-font-weight: bold; } .wrapper[data-id='724273fd']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: grid; --wrapper-xl-padding-right: 0; } .block-heading[data-id='ec47e543']{ --heading-align: left; } .typography[data-id='ad949e82']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-font-family: var(--global-font-family); --typography-letter-spacing: -2px; --es-ft-sm-font-size: 2.25; --es-ft-md-font-size: 3; --es-ft-lg-font-size: 4.125; --typography-line-height: 1.146; } .wrapper[data-id='bd581589']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: block; } .block-paragraph[data-id='eedecd91']{ --paragraph-align: left; } .typography[data-id='20af6e70']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .wrapper[data-id='11fc83d8']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: block; } .block-column[data-id='946fa17d']{ --column-horizontal-padding: calc(var(--base-font-size) * 0rem); --column-background-color: var(--global-colors-unset); --column-border-color-mobile: var(--global-colors-indigo); --column-border-color-desktop: var(--global-colors-indigo); } .block-column[data-id='946fa17d']{ --wrapper-spacing-top: initial;; --wrapper-spacing-bottom: initial;; --wrapper-spacing-top-in: initial;; --wrapper-spacing-bottom-in: initial;; --wrapper-divider-top: initial; --wrapper-divider-bottom: initial;; --wrapper-display: initial;; --wrapper-is-full-width: initial;; --wrapper-grid-template-columns: initial;; --wrapper-display-type: initial; } .block-column[data-id='0fd6e8a7']{ --column-horizontal-padding: calc(var(--base-font-size) * 0rem); --column-background-color: var(--global-colors-unset); --column-border-color-mobile: var(--global-colors-indigo); --column-border-color-desktop: var(--global-colors-indigo); } .block-column[data-id='0fd6e8a7']{ --wrapper-spacing-top: initial;; --wrapper-spacing-bottom: initial;; --wrapper-spacing-top-in: initial;; --wrapper-spacing-bottom-in: initial;; --wrapper-divider-top: initial; --wrapper-divider-bottom: initial;; --wrapper-display: initial;; --wrapper-is-full-width: initial;; --wrapper-grid-template-columns: initial;; --wrapper-display-type: initial; } .block-columns[data-id='ec40c13b']{ --columns-grid-side-columns: var(--wrapper-grid-side-columns); } .wrapper[data-id='e7030ee5']{ --wrapper-z-index: 1; --wrapper-bg-color-gradient: none; --wrapper-display-type: block; } .block-group[data-id='2eb1188d']{ --group-border-radius: 0; } .wrapper[data-id='4900ee54']{ --wrapper-z-index: 1; --wrapper-bg-color-solid: #f2f5ff; --wrapper-display-type: grid; } .image[data-id='d0db032b']{ --image-scale: 1; --image-overflow: hidden; --image-object-fit: cover; --image-default-border-radius: 0; } .icon[data-id='87392b91']{ --icon-backplate-color: var(--global-colors-indigo); --icon-color: var(--global-colors-indigo); --icon-on-backplate-color: var(--global-colors-white); --icon-size: calc(var(--base-font-size) * 4rem); } .icon[data-id='584bc1d7']{ --icon-backplate-color: var(--global-colors-indigo); --icon-color: var(--global-colors-indigo); --icon-on-backplate-color: var(--global-colors-white); --icon-size: calc(var(--base-font-size) * 4rem); } .icon[data-id='0915c13f']{ --icon-backplate-color: var(--global-colors-indigo); --icon-color: var(--global-colors-indigo); --icon-on-backplate-color: var(--global-colors-white); --icon-size: calc(var(--base-font-size) * 4rem); } .icon[data-id='5a5cca4a']{ --icon-backplate-color: var(--global-colors-indigo); --icon-color: var(--global-colors-indigo); --icon-on-backplate-color: var(--global-colors-white); --icon-size: calc(var(--base-font-size) * 4rem); } .typography[data-id='eeb1369a']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-letter-spacing: -1px; --es-ft-sm-font-size: 1.5; --es-ft-md-font-size: 2.25; --es-ft-lg-font-size: 3; --typography-line-height: 1.167; --typography-font-weight: bold; } .typography[data-id='ec74f622']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1; --es-ft-md-font-size: 1.125; --es-ft-lg-font-size: 1.4375; --typography-line-height: 1.44; --typography-font-weight: bold; } .typography[data-id='1d5ea023']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.75; --es-ft-md-font-size: 0.875; --es-ft-lg-font-size: 1.0625; --typography-letter-spacing: 0.2px; --typography-line-height: 1.43; } .typography[data-id='27d479af']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --typography-uppercase: uppercase; --typography-letter-spacing: 0.4px; --es-ft-md-font-size: 0.75; --es-ft-lg-font-size: 0.875; --typography-line-height: 1.33; } .typography[data-id='0aaae8a3']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1; --es-ft-md-font-size: 1.125; --es-ft-lg-font-size: 1.4375; --typography-line-height: 1.44; --typography-font-weight: bold; } .typography[data-id='8bfe2f0c']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.75; --es-ft-md-font-size: 0.875; --es-ft-lg-font-size: 1.0625; --typography-letter-spacing: 0.2px; --typography-line-height: 1.43; } .toggle[data-id='db5d6443']{ --toggle-color: var(--global-colors-indigo); } .typography[data-id='15845607']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 1; --es-ft-md-font-size: 1.125; --es-ft-lg-font-size: 1.4375; --typography-line-height: 1.44; --typography-font-weight: bold; } .typography[data-id='52d093b4']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.75; --es-ft-md-font-size: 0.875; --es-ft-lg-font-size: 1.0625; --typography-letter-spacing: 0.2px; --typography-line-height: 1.43; } .toggle[data-id='c8b4e0d2']{ --toggle-color: var(--global-colors-indigo); } .btn[data-id='17c2f54d']{ --button-color: var(--global-colors-white); --button-color-hover: var(--global-colors-white); --button-secondary-color: var(--global-colors-indigo); --button-secondary-color-hover: var(--global-colors-white); --button-border-color: var(--global-colors-indigo); --button-background-color: var(--global-colors-indigo); --button-background-color-hover: var(--global-gradients-gradient-1); --button-color-is-link: var(--global-colors-indigo); --button-color-is-link-hover: var(--global-colors-black); --button-border-radius: calc(var(--base-font-size) * 3rem); --button-padding-vertical: calc(var(--base-font-size) * 1.3rem); --button-padding-horizontal: calc(var(--base-font-size) * 2.4rem); --button-display: inline-flex; --button-width: auto; --button-icon-left-space: calc(var(--base-font-size) * 1rem); --button-icon-right-space: 0; --button-flex-direction: row; } .typography[data-id='dabf96a9']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .btn[data-id='f51371fa']{ --button-color: var(--global-colors-white); --button-color-hover: var(--global-colors-white); --button-secondary-color: var(--global-colors-indigo); --button-secondary-color-hover: var(--global-colors-white); --button-border-color: var(--global-colors-indigo); --button-background-color: var(--global-colors-indigo); --button-background-color-hover: var(--global-gradients-gradient-1); --button-color-is-link: var(--global-colors-indigo); --button-color-is-link-hover: var(--global-colors-black); --button-border-radius: calc(var(--base-font-size) * 3rem); --button-padding-vertical: calc(var(--base-font-size) * 1.3rem); --button-padding-horizontal: calc(var(--base-font-size) * 2.4rem); --button-display: inline-flex; --button-width: auto; --button-border-radius: 0; --button-background-color: transparent; --button-background-color-hover: transparent; --button-padding-vertical: 0; --button-padding-horizontal: 0; --button-color: var(--button-color-is-link); --button-color-hover: var(--button-color-is-link-hover); --button-display: inline; --button-icon-left-space: calc(var(--base-font-size) * 1rem); --button-icon-right-space: 0; --button-flex-direction: row; } .typography[data-id='82112758']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } .typography[data-id='38f9530e']{ --typography-color: var(--typography-color-override, var(--global-colors-black)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.75; --es-ft-md-font-size: 0.875; --es-ft-lg-font-size: 1.0625; --typography-letter-spacing: 0.2px; --typography-line-height: 1.43; } .btn[data-id='2860ae80']{ --button-color: var(--global-colors-white); --button-color-hover: var(--global-colors-white); --button-secondary-color: var(--global-colors-indigo); --button-secondary-color-hover: var(--global-colors-white); --button-border-color: var(--global-colors-indigo); --button-background-color: var(--global-colors-indigo); --button-background-color-hover: var(--global-gradients-gradient-1); --button-color-is-link: var(--global-colors-indigo); --button-color-is-link-hover: var(--global-colors-black); --button-border-radius: calc(var(--base-font-size) * 3rem); --button-padding-vertical: calc(var(--base-font-size) * 1.3rem); --button-padding-horizontal: calc(var(--base-font-size) * 2.4rem); --button-display: inline-flex; --button-width: auto; --button-icon-left-space: calc(var(--base-font-size) * 1rem); --button-icon-right-space: 0; --button-flex-direction: row; } .typography[data-id='5ac2fbcb']{ --typography-color: var(--typography-color-override, var(--global-colors-white)); --typography-link-color: var(--typography-link-color-override, var(--global-colors-indigo)); --es-ft-sm-font-size: 0.875; --es-ft-md-font-size: 1; --es-ft-lg-font-size: 1.25; --typography-line-height: 1.5; } @media (min-width:479px){ .card-with-backplate[data-id='ef184339']{ --card-with-backplate-width: calc(5 * var(--single-column-width) + 4 * var(--global-grid-gutter)); } .card-with-backplate[data-id='67833c11']{ --card-with-backplate-width: calc(5 * var(--single-column-width) + 4 * var(--global-grid-gutter)); } .card-with-backplate[data-id='064760d7']{ --card-with-backplate-width: calc(5 * var(--single-column-width) + 4 * var(--global-grid-gutter)); } .card-with-backplate[data-id='e549a564']{ --card-with-backplate-width: calc(5 * var(--single-column-width) + 4 * var(--global-grid-gutter)); } .card-with-backplate[data-id='93b5f9c9']{ --card-with-backplate-width: calc(5 * var(--single-column-width) + 4 * var(--global-grid-gutter)); } } @media (min-width:1279px){ .card-with-backplate[data-id='ef184339']{ --card-with-backplate-width: calc(3 * var(--single-column-width) + 2 * var(--global-grid-gutter)); } .card-with-backplate[data-id='67833c11']{ --card-with-backplate-width: calc(3 * var(--single-column-width) + 2 * var(--global-grid-gutter)); } .card-with-backplate[data-id='064760d7']{ --card-with-backplate-width: calc(3 * var(--single-column-width) + 2 * var(--global-grid-gutter)); } .card-with-backplate[data-id='e549a564']{ --card-with-backplate-width: calc(3 * var(--single-column-width) + 2 * var(--global-grid-gutter)); } .card-with-backplate[data-id='93b5f9c9']{ --card-with-backplate-width: calc(3 * var(--single-column-width) + 2 * var(--global-grid-gutter)); } } .wrapper[data-id='27ddb43c']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top-in: 0; --wrapper-spacing-bottom-in: 30; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .wrapper[data-id='e985dd26']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top-in: 0; --wrapper-spacing-bottom-in: 0; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .block-column[data-id='a75b2db4']{ --column-width: 10; --column-offset: 2; --column-hide: flex; --column-position: unset; --column-space-between: unset; } .block-columns[data-id='8cb43bc8']{ --columns-vertical-spacing: 0vw; } .wrapper[data-id='178ababd']{ --wrapper-width: 14; --wrapper-offset: 1; --wrapper-spacing-top-in: 100; --wrapper-spacing-bottom-in: 110; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .wrapper[data-id='935a4c8f']{ --wrapper-width: 14; --wrapper-offset: 1; --wrapper-spacing-top: 0; --wrapper-spacing-bottom: 0; --wrapper-spacing-top-in: 100; --wrapper-spacing-bottom-in: 0; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .wrapper[data-id='07fed296']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .block-column[data-id='64de2b43']{ --column-width: 9; --column-offset: 1; --column-hide: flex; --column-position: unset; --column-space-between: unset; } .wrapper[data-id='6e9fe2c1']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top: -3; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .block-column[data-id='7694d97f']{ --column-width: 5; --column-offset: 10; --column-hide: flex; --column-position: unset; --column-space-between: unset; } .block-columns[data-id='dce50919']{ --columns-vertical-spacing: 0vw; } .wrapper[data-id='b0527d79']{ --wrapper-width: 14; --wrapper-offset: 1; --wrapper-spacing-top: 20; --wrapper-spacing-bottom: -50; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 0; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .wrapper[data-id='08e433b2']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .wrapper[data-id='80411fb2']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-bottom: -80; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 0; --wrapper-grid-template-columns: repeat(var(--global-main-content-width), minmax(0, 1fr)); --wrapper-rounded-corners: 0; } .wrapper[data-id='4dfb9f49']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 0; --wrapper-grid-template-columns: repeat(var(--global-main-content-width), minmax(0, 1fr)); --wrapper-rounded-corners: 0; } .card-simple[data-id='a639e496']{ --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); } .card-simple[data-id='ff79fb9f']{ --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); } .card-simple[data-id='0949dc65']{ --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); } .wrapper[data-id='bac7bea2']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top: 0; --wrapper-spacing-bottom: 80; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 0; --wrapper-grid-template-columns: repeat(var(--global-main-content-width), minmax(0, 1fr)); --wrapper-rounded-corners: 0; } .card-simple[data-id='52b87fec']{ --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); } .card-simple[data-id='88431434']{ --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); } .card-simple[data-id='ff398447']{ --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); --card-media-inset: calc(var(--base-font-size) * 0rem); --card-content-inset: calc(var(--base-font-size) * 0rem); --card-media-inset: var(--card-content-inset); } .wrapper[data-id='c61222d9']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 0; --wrapper-grid-template-columns: repeat(var(--global-main-content-width), minmax(0, 1fr)); --wrapper-rounded-corners: 0; } .wrapper[data-id='724273fd']{ --wrapper-width: 14; --wrapper-offset: 1; --wrapper-spacing-top: -40; --wrapper-spacing-bottom: 80; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .wrapper[data-id='bd581589']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .wrapper[data-id='11fc83d8']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .block-column[data-id='946fa17d']{ --column-width: 6; --column-hide: flex; --column-position: unset; --column-space-between: unset; } .block-column[data-id='0fd6e8a7']{ --column-width: 6; --column-offset: 8; --column-vertical-align: center; --column-hide: flex; --column-position: unset; --column-space-between: unset; } .block-columns[data-id='ec40c13b']{ --columns-vertical-spacing: 0vw; } .wrapper[data-id='e7030ee5']{ --wrapper-width: 14; --wrapper-offset: 1; --wrapper-spacing-top-in: 20; --wrapper-spacing-bottom-in: 20; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 1; --wrapper-grid-template-columns: var(--wrapper-grid-side-columns) repeat(var(--global-main-content-width), minmax(0, 1fr)) var(--wrapper-grid-side-columns); --wrapper-rounded-corners: 0; } .wrapper[data-id='4900ee54']{ --wrapper-width: 12; --wrapper-offset: 1; --wrapper-spacing-top: 0; --wrapper-spacing-bottom: 0; --wrapper-spacing-top-in: 50; --wrapper-spacing-bottom-in: 50; --wrapper-divider-top: 0; --wrapper-divider-bottom: 0; --wrapper-display: var(--wrapper-display-type, grid); --wrapper-is-full-width: 0; --wrapper-grid-template-columns: repeat(var(--global-main-content-width), minmax(0, 1fr)); --wrapper-rounded-corners: 0; } @media (max-width:2159px){ .block-column[data-id='64de2b43']{ --column-width: 8; --column-offset: 2; } .block-column[data-id='7694d97f']{ --column-width: 4; } } @media (max-width:1279px){ .block-column[data-id='a75b2db4']{ --column-width: 12; --column-offset: 2; } .block-column[data-id='64de2b43']{ --column-width: 12; --column-offset: 2; } .block-column[data-id='7694d97f']{ --column-width: 12; --column-offset: 2; } .block-column[data-id='946fa17d']{ --column-width: 14; --column-offset: 1; } .block-column[data-id='0fd6e8a7']{ --column-width: 14; --column-offset: 1; } } @media (max-width:479px){ .wrapper[data-id='27ddb43c']{ --wrapper-width: 12; --wrapper-offset: 1; } .wrapper[data-id='e985dd26']{ --wrapper-width: 12; --wrapper-offset: 1; } .wrapper[data-id='178ababd']{ --wrapper-offset: 1; } .wrapper[data-id='935a4c8f']{ --wrapper-width: 14; --wrapper-offset: 1; } .wrapper[data-id='07fed296']{ --wrapper-width: 12; --wrapper-offset: 1; } .wrapper[data-id='6e9fe2c1']{ --wrapper-width: 12; --wrapper-offset: 1; } .wrapper[data-id='b0527d79']{ --wrapper-offset: 1; } .wrapper[data-id='08e433b2']{ --wrapper-width: 12; --wrapper-offset: 1; } .wrapper[data-id='80411fb2']{ --wrapper-width: 12; --wrapper-offset: 1; } .wrapper[data-id='4dfb9f49']{ --wrapper-width: 12; --wrapper-offset: 1; } .wrapper[data-id='bac7bea2']{ --wrapper-width: 12; --wrapper-offset: 1; } .wrapper[data-id='c61222d9']{ --wrapper-width: 12; --wrapper-offset: 1; } .wrapper[data-id='724273fd']{ --wrapper-width: 14; --wrapper-offset: 1; } .wrapper[data-id='bd581589']{ --wrapper-width: 12; --wrapper-offset: 1; } .wrapper[data-id='11fc83d8']{ --wrapper-width: 12; --wrapper-offset: 1; } .block-column[data-id='946fa17d']{ --column-offset: 1; } .block-column[data-id='0fd6e8a7']{ --column-offset: 1; } .wrapper[data-id='e7030ee5']{ --wrapper-offset: 1; } .wrapper[data-id='4900ee54']{ --wrapper-width: 12; --wrapper-offset: 1; } } :root {--es-loaded-opacity: 1;}</style><script src="https://js.chilipiper.com/marketing.js?ver=1.0.0" id="chili-piper-js"></script> <script id="rocket-browser-checker-js-after"> "use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}var RocketBrowserCompatibilityChecker=function(){function RocketBrowserCompatibilityChecker(options){_classCallCheck(this,RocketBrowserCompatibilityChecker),this.passiveSupported=!1,this._checkPassiveOption(this),this.options=!!this.passiveSupported&&options}return _createClass(RocketBrowserCompatibilityChecker,[{key:"_checkPassiveOption",value:function(self){try{var options={get passive(){return!(self.passiveSupported=!0)}};window.addEventListener("test",null,options),window.removeEventListener("test",null,options)}catch(err){self.passiveSupported=!1}}},{key:"initRequestIdleCallback",value:function(){!1 in window&&(window.requestIdleCallback=function(cb){var start=Date.now();return setTimeout(function(){cb({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-start))}})},1)}),!1 in window&&(window.cancelIdleCallback=function(id){return clearTimeout(id)})}},{key:"isDataSaverModeOn",value:function(){return"connection"in navigator&&!0===navigator.connection.saveData}},{key:"supportsLinkPrefetch",value:function(){var elem=document.createElement("link");return elem.relList&&elem.relList.supports&&elem.relList.supports("prefetch")&&window.IntersectionObserver&&"isIntersecting"in IntersectionObserverEntry.prototype}},{key:"isSlowConnection",value:function(){return"connection"in navigator&&"effectiveType"in navigator.connection&&("2g"===navigator.connection.effectiveType||"slow-2g"===navigator.connection.effectiveType)}}]),RocketBrowserCompatibilityChecker}(); </script> <script id="rocket-preload-links-js-extra"> var RocketPreloadLinksConfig = {"excludeUris":"\/(?:.+\/)?feed(?:\/(?:.+\/?)?)?$|\/(?:.+\/)?embed\/|\/(index.php\/)?(.*)wp-json(\/.*|$)|\/refer\/|\/go\/|\/recommend\/|\/recommends\/","usesTrailingSlash":"1","imageExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php","fileExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php|html|htm","siteUrl":"https:\/\/productive.io\/engineering","onHoverDelay":"100","rateThrottle":"3"}; </script> <script id="rocket-preload-links-js-after"> (function() { "use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e=function(){function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var t=function(){function n(e,t){i(this,n),this.browser=e,this.config=t,this.options=this.browser.options,this.prefetched=new Set,this.eventTime=null,this.threshold=1111,this.numOnHover=0}return e(n,[{key:"init",value:function(){!this.browser.supportsLinkPrefetch()||this.browser.isDataSaverModeOn()||this.browser.isSlowConnection()||(this.regex={excludeUris:RegExp(this.config.excludeUris,"i"),images:RegExp(".("+this.config.imageExt+")$","i"),fileExt:RegExp(".("+this.config.fileExt+")$","i")},this._initListeners(this))}},{key:"_initListeners",value:function(e){-1<this.config.onHoverDelay&&document.addEventListener("mouseover",e.listener.bind(e),e.listenerOptions),document.addEventListener("mousedown",e.listener.bind(e),e.listenerOptions),document.addEventListener("touchstart",e.listener.bind(e),e.listenerOptions)}},{key:"listener",value:function(e){var t=e.target.closest("a"),n=this._prepareUrl(t);if(null!==n)switch(e.type){case"mousedown":case"touchstart":this._addPrefetchLink(n);break;case"mouseover":this._earlyPrefetch(t,n,"mouseout")}}},{key:"_earlyPrefetch",value:function(t,e,n){var i=this,r=setTimeout(function(){if(r=null,0===i.numOnHover)setTimeout(function(){return i.numOnHover=0},1e3);else if(i.numOnHover>i.config.rateThrottle)return;i.numOnHover++,i._addPrefetchLink(e)},this.config.onHoverDelay);t.addEventListener(n,function e(){t.removeEventListener(n,e,{passive:!0}),null!==r&&(clearTimeout(r),r=null)},{passive:!0})}},{key:"_addPrefetchLink",value:function(i){return this.prefetched.add(i.href),new Promise(function(e,t){var n=document.createElement("link");n.rel="prefetch",n.href=i.href,n.onload=e,n.onerror=t,document.head.appendChild(n)}).catch(function(){})}},{key:"_prepareUrl",value:function(e){if(null===e||"object"!==(void 0===e?"undefined":r(e))||!1 in e||-1===["http:","https:"].indexOf(e.protocol))return null;var t=e.href.substring(0,this.config.siteUrl.length),n=this._getPathname(e.href,t),i={original:e.href,protocol:e.protocol,origin:t,pathname:n,href:t+n};return this._isLinkOk(i)?i:null}},{key:"_getPathname",value:function(e,t){var n=t?e.substring(this.config.siteUrl.length):e;return n.startsWith("/")||(n="/"+n),this._shouldAddTrailingSlash(n)?n+"/":n}},{key:"_shouldAddTrailingSlash",value:function(e){return this.config.usesTrailingSlash&&!e.endsWith("/")&&!this.regex.fileExt.test(e)}},{key:"_isLinkOk",value:function(e){return null!==e&&"object"===(void 0===e?"undefined":r(e))&&(!this.prefetched.has(e.href)&&e.origin===this.config.siteUrl&&-1===e.href.indexOf("?")&&-1===e.href.indexOf("#")&&!this.regex.excludeUris.test(e.href)&&!this.regex.images.test(e.href))}}],[{key:"run",value:function(){"undefined"!=typeof RocketPreloadLinksConfig&&new n(new RocketBrowserCompatibilityChecker({capture:!0,passive:!0}),RocketPreloadLinksConfig).init()}}]),n}();t.run(); }()); </script> <script id="Productive-block-frontend-scripts-js-extra"> var productiveBlocks = {"initialCookieLevelBasic":"2","initialCookieLevelAdvanced":"2"}; var registrationEndpoints = {"thankYouPagePath":"","registrationEndpointPagePath":""}; var bookADemoValues = {"Tier1CompanyValues":[],"Tier1RedirectUrl":"","Tier2CompanyValues":[],"Tier2RedirectUrl":"","Tier3CompanyValues":[],"Tier3RedirectUrl":"","Tier4CompanyValues":[],"Tier4RedirectUrl":"","Tier5CompanyValues":[],"Tier5RedirectUrl":"","Tier6CompanyValues":[],"Tier6RedirectUrl":""}; </script> <script src="https://productive.io/engineering/wp-content/themes/productive/public/applicationBlocksFrontend-9f8518e5de2e9481b36e.js?ver=20241121151712.11956160953" id="Productive-block-frontend-scripts-js"></script> <script id="eightshift-forms-block-frontend-scripts-js-before"> const esFormsLocalization = {"restRoutes":{"prefix":"https:\/\/productive.io\/engineering\/wp-json\/eightshift-forms\/v1","prefixProject":"eightshift-forms\/v1","prefixSubmit":"submit","prefixTestApi":"test-api","files":"files","captcha":"captcha","geolocation":"geolocation","validationStep":"validate-step"},"hideGlobalMessageTimeout":6000,"redirectionTimeout":300,"fileRemoveLabel":"<div \n\taria-hidden=\"true\"\n\tclass=\"icon\"\n\tdata-id=\"600b958b\"\n\t>\n\t\t\t<i class=\"\" data-name=\"remove-attachment-24\">\n\t\t\t<svg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><path fill-rule='evenodd' clip-rule='evenodd' d='M12 1C5.925 1 1 5.925 1 12s4.925 11 11 11 11-4.925 11-11S18.075 1 12 1zM3 12a9 9 0 1 1 18 0 9 9 0 0 1-18 0zm5 1h8v-2H8v2z' fill='currentColor'\/><\/svg>\t\t<\/i>\n\t<\/div>","formDisableScrollToFieldOnError":false,"formDisableScrollToGlobalMessageOnSuccess":false,"formDisableAutoInit":false,"formResetOnSuccess":true,"formServerErrorMsg":"A server error occurred while submitting your form. Please try again.","formCaptchaErrorMsg":"A ReCaptcha error has occured. Please try again.","formMisconfigured":"","enrichment":{"isUsed":false,"isUsedPrefill":false,"isUsedPrefillUrl":false},"geolocation":{"isUsed":false},"captcha":{"isUsed":false},"isAdmin":false} </script> <script src="https://productive.io/engineering/wp-content/plugins/eightshift-forms/public/applicationBlocksFrontend-7eb600a1824877250da2.js?ver=5.1.8" id="eightshift-forms-block-frontend-scripts-js"></script> <script src="https://productive.io/engineering/wp-content/themes/productive/public/application-4bdf92b622426c75c09b.js?ver=20241121151712.11956160953" id="Productive-scripts-js"></script> </body> </html> <!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me -->