PageSourceSearch

https://www.nylas.com/

html nylas.com collected 2026-09-24 08:39:32 UTC 263,823 bytes, 4,859 lines download raw bytes

1<!DOCTYPE html>
2
3<html class="no-js" lang="en-US">
4	<head>
5		<meta charset="UTF-8">
6		<meta name="viewport" content="width=device-width, initial-scale=1.0" >
7				<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
8	<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
9	
10	<!-- This site is optimized with the Yoast SEO plugin v26.1.1 - https://yoast.com/wordpress/plugins/seo/ -->
11	<title>Nylas: Email, Calendar, Meeting Intelligence API &amp; AI Agent Accounts</title>
12	<meta name="description" content="Nylas API lets you integrate with 250+ email, calendar and meeting providers (including Gmail, Microsoft, IMAP, Zoom and others) in 5 minutes. We also provide agent accounts for giving unique identities to your AI Agents under the same API platform." />
13	<link rel="canonical" href="https://www.nylas.com/" />
14	<meta property="og:locale" content="en_US" />
15	<meta property="og:type" content="website" />
16	<meta property="og:title" content="Nylas: Email, Calendar, Meeting Intelligence API &amp; AI Agent Accounts" />
17	<meta property="og:description" content="Nylas API lets you integrate with 250+ email, calendar and meeting providers (including Gmail, Microsoft, IMAP, Zoom and others) in 5 minutes. We also provide agent accounts for giving unique identities to your AI Agents under the same API platform." />
18	<meta property="og:url" content="https://www.nylas.com/" />
19	<meta property="og:site_name" content="Nylas" />
20	<meta property="article:modified_time" content="2026-09-22T17:32:42+00:00" />
21	<meta property="og:image" content="https://www.nylas.com/wp-content/uploads/nylas-1.png" />
22	<meta property="og:image:width" content="1920" />
23	<meta property="og:image:height" content="1005" />
24	<meta property="og:image:type" content="image/png" />
25	<meta name="twitter:card" content="summary_large_image" />
26	<meta name="twitter:site" content="@nylas" />
27	<!-- / Yoast SEO plugin. -->
28
29
30<link rel='dns-prefetch' href='//www.google.com' />
31<link rel='dns-prefetch' href='//fonts.googleapis.com' />
32<script type="text/javascript">
33/* <![CDATA[ */
34window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/16.0.1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/16.0.1\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.nylas.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.8.10"}};
35/*! This file is auto-generated */
36!function(s,n){var o,i,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),a=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===a[t]})}function u(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);for(var n=e.getImageData(16,16,1,1),a=0;a<n.data.length;a++)if(0!==n.data[a])return!1;return!0}function f(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\udedf")}return!1}function g(e,t,n,a){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):s.createElement("canvas"),o=r.getContext("2d",{willReadFrequently:!0}),i=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(function(e){i[e]=t(o,e,n,a)}),i}function t(e){var t=s.createElement("script");t.src=e,t.defer=!0,s.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",i=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){s.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+g.toString()+"("+[JSON.stringify(i),f.toString(),p.toString(),u.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"}),r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=function(e){c(n=e.data),r.terminate(),t(n)})}catch(e){}c(n=g(i,f,p,u))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
37/* ]]> */
38</script>
38
39<style id='wp-emoji-styles-inline-css' type='text/css'>
40
41	img.wp-smiley, img.emoji {
42		display: inline !important;
43		border: none !important;
44		box-shadow: none !important;
45		height: 1em !important;
46		width: 1em !important;
47		margin: 0 0.07em !important;
48		vertical-align: -0.1em !important;
49		background: none !important;
50		padding: 0 !important;
51	}
52</style>
53<link rel='stylesheet' id='wp-block-library-css' href='https://www.nylas.com/wp-includes/css/dist/block-library/style.min.css?ver=6.8.10' type='text/css' media='all' />
54<style id='classic-theme-styles-inline-css' type='text/css'>
55/*! This file is auto-generated */
56.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
57</style>
58<style id='acf-nylas-pricing-hero-style-inline-css' type='text/css'>
59.ny-pricing-hero {
60	--ny-pricing-black: #000000;
61	--ny-pricing-white: #ffffff;
62	--ny-pricing-teal: #0b9b8a;
63	--ny-pricing-teal-text: #16A392;
64	--ny-pricing-teal-bright: #39dac7;
65	--ny-pricing-card-border: #404040;
66	--ny-pricing-muted-dark: rgba(255, 255, 255, 0.7);
67	--ny-pricing-muted-light: rgba(0, 0, 0, 1);
68	--ny-pricing-heading: "Manrope", "Poppins", -apple-system, BlinkMacSystemFont, sans-serif;
69	--ny-pricing-body: "Inter", "Poppins", -apple-system, BlinkMacSystemFont, sans-serif;
70	position: relative;
71	isolation: isolate;
72	overflow: hidden;
73	background: var(--ny-pricing-black);
74	color: var(--ny-pricing-white);
75	font-family: var(--ny-pricing-body);
76	line-height: 1.45;
77	padding-block: clamp(28px, 4vw, 44px) clamp(72px, 8vw, 120px) !important;
78	-webkit-font-smoothing: antialiased;
79}
80
81.ny-pricing-hero *,
82.ny-pricing-hero *::before,
83.ny-pricing-hero *::after {
84	box-sizing: border-box;
85}
86
87
88.ny-pricing-hero::before{
89    content: "";
90    position: absolute;
91    top: -22%; left: -12%;
92    width: 70%; height: 95%;
93    background: radial-gradient(closest-side, rgba(57,218,199,.42), rgba(34,160,150,.16) 55%, transparent 78%);
94    filter: blur(10px);
95    pointer-events: none; z-index: 0;
96}
97.ny-pricing-hero::after{
98    content: "";
99    position: absolute;
100    top: -18%; right: -14%;
101    width: 60%; height: 80%;
102    background: radial-gradient(closest-side, rgba(36,110,140,.28), transparent 72%);
103    filter: blur(24px);
104    pointer-events: none; z-index: 0;
105}
106
107.ny-pricing-hero::before{animation: ny-pricing-hero-aurora 16s ease-in-out infinite;}
108@keyframes ny-pricing-hero-aurora { 0%, 100% { transform: translate3d(0,0,0) scale(1); opacity: .92; } 50% { transform: translate3d(4%, 3%, 0) scale(1.07); opacity: 1; } }
109
110
111.ny-pricing-hero :where(h1, h2, h3, p, ul) {
112	margin: 0;
113	padding: 0;
114}
115
116.ny-pricing-hero :where(ul) {
117	list-style: none;
118}
119
120.ny-pricing-hero :where(a) {
121	color: inherit;
122	text-decoration: none;
123}
124
125.ny-pricing-hero :where(button) {
126	border: 0;
127	font: inherit;
128}
129
130.ny-pricing-hero__container {
131	width: min(100% - clamp(32px, 8vw, 80px), 1280px);
132	margin-inline: auto;
133}
134
135.ny-pricing-hero__back {
136	display: inline-flex;
137	align-items: center;
138	gap: 8px;
139	min-height: 42px;
140	aspect-ratio: 1 / 1;
141	padding: 8px 12px 8px 8px;
142	border-radius: 999px;
143	color: rgba(255, 255, 255, 0.82);
144	font-size: 0.875rem;
145	font-weight: 500;
146	transition: color 180ms ease, background-color 180ms ease, transform 180ms ease;
147}
148
149.ny-pricing-hero__back svg {
150	width: 28px;
151	height: 28px;
152}
153
154.ny-pricing-hero__back:hover,
155.ny-pricing-hero__back:focus-visible {
156	background: rgba(255, 255, 255, 0.09);
157	color: var(--ny-pricing-white);
158	transform: translateX(-3px);
159}
160
161.ny-pricing-hero__back:focus-visible,
162.ny-pricing-card__cta:focus-visible,
163.ny-pricing-card__help:focus-visible,
164.ny-pricing-hero .ny-pricing-switch__option:focus-visible {
165	outline: 2px solid var(--ny-pricing-teal-bright);
166	outline-offset: 3px;
167}
168
169.ny-pricing-hero__header {
170	max-width: 860px;
171	margin: 0 auto clamp(42px, 6vw, 50px);
172	text-align: center;
173
174	animation: ny-pricing-hero-fade-up .6s cubic-bezier(.22, .61, .36, 1) backwards;
175}
176
177.ny-pricing-hero__title {
178	color: var(--ny-pricing-white);
179	font-family: var(--ny-pricing-heading);
180	font-size: clamp(1.9rem, 4.4vw, 3.125rem);
181	font-weight: 500;
182	letter-spacing: 0;
183	line-height: 1.25;
184}
185
186.ny-pricing-hero__subtitle {
187	margin: 6px auto 0;
188	color: var(--ny-pricing-white);
189	font-size: 1rem;
190	line-height: 1.5;
191}
192
193.ny-pricing-hero__cards {
194	display: grid;
195	grid-template-columns: repeat(auto-fit, minmax(min(100%, 265px), 1fr));
196	align-items: stretch;
197	gap: 15px;
198}
199
200.ny-pricing-card {
201	position: relative;
202	display: flex;
203	min-width: 0;
204	min-height: 100%;
205	flex-direction: column;
206	padding: clamp(20px, 2.4vw, 28px);
207	border: 1px solid var(--ny-pricing-card-border);
208	border-radius: 6px;
209	background: rgba(0, 0, 0, 0.78);
210	color: var(--ny-pricing-white);
211	box-shadow: 0 18px 44px -32px rgba(57, 218, 199, 0.5);
212	transition: transform 220ms ease, border-color 220ms ease, box-shadow 220ms ease;
213
214	animation: ny-pricing-hero-fade-up .5s cubic-bezier(.22, .61, .36, 1) backwards;
215}
216
217.ny-pricing-card:nth-child(1){ animation-delay: .14s; }
218.ny-pricing-card:nth-child(2){ animation-delay: .21s; }
219.ny-pricing-card:nth-child(3){ animation-delay: .28s; }
220.ny-pricing-card:nth-child(4){ animation-delay: .35s; }
221
222.ny-pricing-card:hover {
223	transform: translateY(-5px);
224	border-color: rgba(57, 218, 199, 0.62);
225	box-shadow: 0 26px 52px -30px rgba(57, 218, 199, 0.66);
226}
227
228.ny-pricing-card.is-enterprise {
229	border-color: #d8d8d8;
230	background: #fafafa;
231	color: #000000;
232	box-shadow: 0 20px 44px -30px rgba(0, 0, 0, 0.42);
233}
234
235.ny-pricing-card.has-badge {
236	position: relative;
237}
238
239.ny-pricing-card.has-badge::before {
240	content: '';
241    position: absolute;
242    z-index: 0;
243    inset: 0px;
244    border-radius: inherit;
245    padding: 1px;
246
247    background: linear-gradient(13.89deg, #404040 -2.04%, #0b9b8a 86.59%);
248    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
249    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
250    -webkit-mask-composite: xor;
251    mask-composite: exclude;
252    pointer-events: none;
253
254	/* border: 1px solid transparent;
255	border-image: linear-gradient(13.89deg, #404040 -2.04%, #0b9b8a 86.59%) 1; */
256}
257
258.ny-pricing-card__badge {
259	position: absolute;
260	z-index: 2;
261	top: -12px;
262	left: 10%;
263	max-width: calc(100% - 24px);
264	min-width: 120px;
265	/* transform: translateX(-50%); */
266	border-radius: 4px;
267	background: #0b9b8a;
268	color: #ffffff;
269	font-size: 0.75rem;
270	font-weight: 600;
271	line-height: 1.25;
272	padding: 3px 12px;
273	text-align: center;
274}
275
276.ny-pricing-card__head {
277	min-height: 64px;
278}
279
280.ny-pricing-card__title-wrap {
281    display: flex;
282    flex-direction: row;
283    justify-content: space-between;
284    align-items: center;
285    flex-wrap: wrap;
286}
287
288.ny-pricing-card__title,
289.ny-pricing-card__head h2 {
290	color: inherit;
291	font-family: var(--ny-pricing-heading);
292	font-size: 1.625rem;
293	font-weight: 600;
294	letter-spacing: 0;
295	line-height: 1.2;
296}
297
298.ny-pricing-card__description {
299	margin-top: 16px !important;
300	color: var(--ny-pricing-white);
301	font-size: 0.875rem;
302	line-height: 1.25;
303}
304
305.ny-pricing-card.is-enterprise .ny-pricing-card__description {
306	color: var(--ny-pricing-muted-light);
307}
308
309.ny-pricing-card__billing {
310	display: flex;
311	flex-direction: column;
312	align-items: flex-end;
313	justify-content: flex-end;
314	gap: 7px;
315
316	position: relative;
317	margin-left: auto;
318}
319
320.ny-pricing-card__annual-badge {
321	display: inline-flex;
322	max-width: 100%;
323	border-radius: 4px;
324	background: #0b9b8acc;
325	color: #ffffff;
326	font-size: 0.625rem;
327	font-weight: 500;
328	line-height: 1.25;
329	padding: 4px 4px;
330	text-align: right;
331
332	position: absolute;
333    z-index: 5;
334    top: -16px;
335    right: -10px;
336}
337
338.ny-pricing-hero .ny-pricing-switch {
339	position: relative;
340	display: inline-grid;
341	grid-template-columns: 1fr 1fr;
342	gap: 0;
343	min-width: 130px;
344	padding: 3px;
345	border-radius: 30px;
346	background: #484848;
347	color: #ffffff;
348	cursor: pointer;
349	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05);
350}
351
352.ny-pricing-hero .ny-pricing-switch__option {
353	font-family: var(--ny-pricing-body);
354	position: relative;
355	z-index: 1;
356	min-width: 0;
357	width: 100%;
358	min-height: 26px;
359	padding: 5px 7px;
360	border-radius: 30px;
361	background: transparent;
362	color: #ffffff;
363	cursor: pointer;
364	font-size: 0.75rem;
365	font-weight: 500;
366	line-height: 1;
367	transition: color 220ms ease, transform 180ms ease;
368}
369
370.ny-pricing-hero .ny-pricing-switch__option:not(.is-active):hover {
371	background: rgba(255, 255, 255, 0.11);
372}
373
374.ny-pricing-hero .ny-pricing-switch__option.is-active {
375	color: #0a0a0a;
376}
377
378.ny-pricing-hero .ny-pricing-switch::before {
379	position: absolute;
380	z-index: 0;
381	top: 3px;
382	left: 3px;
383	width: calc(50% - 3px);
384	height: calc(100% - 6px);
385	border-radius: 30px;
386	background: #ffffff;
387	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.22);
388	content: "";
389	transform: translateX(0);
390	transition: transform 300ms cubic-bezier(0.22, 0.61, 0.36, 1);
391}
392
393.ny-pricing-hero .ny-pricing-switch[data-active-period="annual"]::before {
394	transform: translateX(100%);
395}
396
397.ny-pricing-hero .ny-pricing-switch__option:active {
398	transform: scale(0.97);
399}
400
401.ny-pricing-card__price {
402	min-height: 56px;
403	margin-top: 24px !important;
404	font-family: var(--ny-pricing-heading);
405	line-height: 1;
406}
407
408.ny-pricing-card__price > span {
409	display: inline-flex;
410	align-items: baseline;
411	gap: 5px;
412}
413
414.ny-pricing-card__price-value {
415	font-family: var(--ny-pricing-body);
416	font-size: 2.25rem;
417	font-weight: 600;
418	letter-spacing: 0;
419}
420
421.ny-pricing-card__price-period {
422	color: var(--ny-pricing-muted-dark);
423	font-family: var(--ny-pricing-body);
424	font-size: 1rem;
425}
426
427.ny-pricing-card__price-description {
428	min-height: 20px;
429	margin-top: 8px;
430	color: var(--ny-pricing-muted-dark);
431	font-size: 0.75rem;
432	line-height: 1.45;
433}
434
435.ny-pricing-card.is-enterprise .ny-pricing-card__price-description {
436	color: var(--ny-pricing-muted-light);
437}
438
439.ny-pricing-card.is-enterprise .ny-pricing-card__price-period {
440	color: var(--ny-pricing-muted-light);
441}
442
443.ny-pricing-card__cta-wrap {
444	margin-top: 22px;
445	min-height: 76px;
446}
447
448.ny-pricing-card__cta {
449	position: relative;
450	display: flex;
451	min-height: 48px;
452	align-items: center;
453	justify-content: center;
454	overflow: hidden;
455	width: 100%;
456	border: 1px solid #535353;
457	border-radius: 999px;
458	background: #ffffff;
459	color: #000000 !important;
460	font-size: 0.9375rem;
461	font-weight: 600 !important;
462	padding: 12px 18px;
463	text-align: center;
464	transition: transform 180ms ease, box-shadow 180ms ease, opacity 180ms ease;
465}
466
467.ny-pricing-card.is-enterprise .ny-pricing-card__cta {
468	background: #000000;
469	color: #ffffff !important;
470}
471
472.ny-pricing-card__cta::after {
473	position: absolute;
474	inset: 0 auto 0 -70%;
475	width: 55%;
476	background: linear-gradient(100deg, transparent, rgba(57, 218, 199, 0.48), transparent);
477	content: "";
478	transform: skewX(-18deg);
479	transition: left 620ms cubic-bezier(0.22, 0.61, 0.36, 1);
480}
481
482.ny-pricing-card__cta:hover {
483	transform: translateY(-2px);
484	box-shadow: 0 10px 20px -12px rgba(0, 0, 0, 0.8);
485}
486
487.ny-pricing-card__cta:hover::after {
488	left: 125%;
489}
490
491.ny-pricing-card__cta.is-disabled {
492	cursor: not-allowed;
493	opacity: 0.58;
494}
495
496.ny-pricing-card__cta-description {
497	margin-top: 8px;
498	color: var(--ny-pricing-muted-dark);
499	font-size: 0.75rem;
500	line-height: 1.5;
501	text-align: center;
502}
503
504.ny-pricing-card.is-enterprise .ny-pricing-card__cta-description {
505	color: var(--ny-pricing-muted-light);
506}
507
508.ny-pricing-card__features {
509	display: flex;
510	flex-direction: column;
511	gap: 2px;
512	margin-top: 8px;
513}
514
515.ny-pricing-card.is-enterprise .ny-pricing-card__features {
516	border-top-color: rgba(0, 0, 0, 0.12);
517}
518
519.ny-pricing-card__features-label,
520.ny-pricing-card__feature-title {
521	color: inherit;
522	font-size: 0.875rem;
523	font-weight: 500;
524}
525
526.ny-pricing-card__features-label {
527	margin-bottom: .4rem;
528}
529
530.ny-pricing-card.is-enterprise .ny-pricing-card__features-label {
531	margin-bottom: 0rem;
532}
533
534
535.ny-pricing-card__feature-title {
536	color: var(--ny-pricing-teal-text);
537	line-height: 1.25;
538}
539
540.ny-pricing-card__feature-group {
541	display: flex;
542	flex-direction: column;
543	gap: 4px;
544}
545
546.ny-pricing-card__feature-description {
547	color: var(--ny-pricing-muted-dark);
548	font-size: 0.75rem;
549	line-height: 1.45;
550}
551
552.ny-pricing-card.is-enterprise .ny-pricing-card__feature-description {
553	color: var(--ny-pricing-muted-light);
554}
555
556.ny-pricing-card__feature-list {
557	display: flex;
558	flex-direction: column;
559	gap: 11px;
560	margin: 5px 0;
561}
562
563.ny-pricing-card__feature-item {
564	display: flex;
565	align-items: flex-start;
566	gap: 10px;
567	color: var(--ny-pricing-white);
568	font-size: 0.875rem;
569	line-height: 1.45;
570	/* text-wrap-style: pretty; */
571}
572
573.ny-pricing-card.is-enterprise .ny-pricing-card__feature-item {
574	color: var(--ny-pricing-muted-light);
575}
576
577.ny-pricing-card__feature-icon {
578	display: inline-flex;
579	width: 20px;
580	height: 20px;
581	flex: 0 0 20px;
582	align-items: center;
583	justify-content: center;
584	color: var(--ny-pricing-white);
585}
586
587.ny-pricing-card.is-enterprise .ny-pricing-card__feature-icon {
588	color: #000000;
589}
590
591.ny-pricing-card__feature-icon svg,
592.ny-pricing-card__feature-image {
593	display: block;
594	width: 20px;
595	height: 20px;
596	object-fit: contain;
597}
598
599.ny-pricing-card__feature-text {
600	display: inline;
601}
602
603.ny-pricing-card__help {
604	display: inline-flex;
605	width: 15px;
606	height: 15px;
607	flex: 0 0 auto;
608	align-items: center;
609	justify-content: center;
610	margin-left: 4px;
611	border: 1px solid rgba(255, 255, 255, 0.45);
612	border-radius: 50%;
613	background: transparent;
614	color: rgba(255, 255, 255, 0.72);
615	cursor: help;
616	font-size: 0.625rem;
617	font-weight: 700;
618	line-height: 1;
619	vertical-align: 1px;
620	transition: color 160ms ease, border-color 160ms ease, transform 160ms ease;
621}
622
623.ny-pricing-card.is-enterprise .ny-pricing-card__help {
624	border-color: #b8bec5;
625	color: #8b949e;
626}
627
628.ny-pricing-card__help:hover,
629.ny-pricing-card__help[aria-expanded="true"] {
630	border-color: var(--ny-pricing-teal-bright);
631	color: var(--ny-pricing-teal-bright);
632	transform: scale(1.08);
633}
634
635.ny-pricing-card.is-enterprise .ny-pricing-card__help:hover,
636.ny-pricing-card.is-enterprise .ny-pricing-card__help[aria-expanded="true"] {
637	border-color: var(--ny-pricing-teal);
638	color: var(--ny-pricing-teal);
639}
640
641.ny-pricing-tooltip {
642	position: fixed;
643	z-index: 100000;
644	max-width: min(300px, calc(100vw - 24px));
645	padding: 10px 12px;
646	border-radius: 8px;
647	background: #111418;
648	box-shadow: 0 12px 30px rgba(0, 0, 0, 0.26);
649	color: #ffffff;
650	font-family: "Inter", "Poppins", -apple-system, BlinkMacSystemFont, sans-serif;
651	font-size: 0.8125rem;
652	font-weight: 400;
653	line-height: 1.5;
654	opacity: 0;
655	pointer-events: none;
656	transform: translateY(4px) scale(0.98);
657	transition: opacity 140ms ease, transform 140ms ease;
658	visibility: hidden;
659}
660
661.ny-pricing-tooltip.is-visible {
662	opacity: 1;
663	transform: translateY(0) scale(1);
664	visibility: visible;
665}
666
667.ny-pricing-tooltip::after {
668	position: absolute;
669	left: var(--ny-pricing-tooltip-arrow, 50%);
670	border: 6px solid transparent;
671	content: "";
672	transform: translateX(-50%);
673}
674
675.ny-pricing-tooltip.is-above::after {
676	top: 100%;
677	border-top-color: #111418;
678}
679
680.ny-pricing-tooltip.is-below::after {
681	bottom: 100%;
682	border-bottom-color: #111418;
683}
684
685.ny-pricing-block-notice {
686	margin: 16px 0;
687	padding: 14px 16px;
688	border-left: 4px solid #0b9b8a;
689	background: #ffffff;
690	color: #0a0a0a;
691}
692
693@media (max-width: 720px) {
694	.ny-pricing-hero__container {
695		width: min(100% - 32px, 1280px);
696	}
697
698	.ny-pricing-hero__back span {
699		position: absolute;
700		width: 1px;
701		height: 1px;
702		overflow: hidden;
703		clip: rect(0 0 0 0);
704		clip-path: inset(50%);
705		white-space: nowrap;
706	}
707
708	.ny-pricing-card__head {
709		min-height: 0;
710	}
711
712	.ny-pricing-hero__title {
713		font-size: 2.5rem;
714	}
715
716	.ny-pricing-hero__subtitle {
717		font-size: 1rem;
718	}
719
720	.ny-pricing-card__title,
721	.ny-pricing-card__head h2 {
722		font-size: 1.35rem;
723	}
724
725	.ny-pricing-card__price-value {
726		font-size: 2.15rem;
727	}
728}
729
730@media (prefers-reduced-motion: reduce) {
731	.ny-pricing-hero::before,
732	.ny-pricing-hero::after,
733	.ny-pricing-hero *,
734	.ny-pricing-hero *::before,
735	.ny-pricing-hero *::after,
736	.ny-pricing-tooltip {
737		animation-duration: 0.01ms !important;
738		animation-iteration-count: 1 !important;
739		scroll-behavior: auto !important;
740		transition-duration: 0.01ms !important;
741	}
742}
743
744.ny-pricing-hero *[hidden] {
745	display: none !important;
746}
747
748
749@keyframes ny-pricing-hero-fade-up { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
750</style>
751<link rel='stylesheet' id='acf-nylas-pricing-comparison-style-css' href='https://www.nylas.com/wp-content/themes/nylas/template-parts/blocks/pricing-comparison/style.css?ver=1.0.2' type='text/css' media='all' />
752<link rel='stylesheet' id='podcast-archive-css' href='https://www.nylas.com/wp-content/plugins/nylas-podcasts/blocks/podcast-archive/style.css?ver=1747071323' type='text/css' media='all' />
753<style id='global-styles-inline-css' type='text/css'>
754:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
754--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
754.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
755:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
756:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
757:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
758</style>
759<link rel='stylesheet' id='tabs-css' href='https://www.nylas.com/wp-content/themes/nylas/assets/css/tabs.css?ver=6.8.10' type='text/css' media='all' />
760<link rel='stylesheet' id='aos-css' href='https://www.nylas.com/wp-content/themes/nylas/assets/css/aos.css?ver=6.8.10' type='text/css' media='all' />
761<link rel='stylesheet' id='style-css' href='https://www.nylas.com/wp-content/themes/nylas/assets/build/css/styles.css?ver=1781049796.1234114' type='text/css' media='all' />
762<link rel='stylesheet' id='google-fonts-inter-poppins-css' href='https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&#038;family=Poppins:wght@400;500;600&#038;display=swap' type='text/css' media='all' />
763<link rel='stylesheet' id='header-figma-css' href='https://www.nylas.com/wp-content/themes/nylas/assets/css/header-figma.css?ver=1781220009.31174' type='text/css' media='all' />
764<link rel='stylesheet' id='google-fonts-manrope-css' href='https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&#038;display=swap' type='text/css' media='all' />
765<link rel='stylesheet' id='homepage-2025-css' href='https://www.nylas.com/wp-content/themes/nylas/assets/css/homepage-2025.css?ver=1781015735.58744' type='text/css' media='all' />
766<link rel='stylesheet' id='tablepress-default-css' href='https://www.nylas.com/wp-content/tablepress-combined.min.css?ver=9' type='text/css' media='all' />
767<link rel='stylesheet' id='enlighterjs-css' href='https://www.nylas.com/wp-content/plugins/enlighter/cache/enlighterjs.min.css?ver=nBGpNqTfHqCvwcY' type='text/css' media='all' />
768<script type="text/javascript" src="https://www.nylas.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
vendor: 1 bytes, line 768
768
769<script type="text/javascript" src="https://www.nylas.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
769
770<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.nylas.com/xmlrpc.php?rsd" />
771<meta name="generator" content="WordPress 6.8.10" />
772<link rel='shortlink' href='https://www.nylas.com/' />
773<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.nylas.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.nylas.com%2F" />
774<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.nylas.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.nylas.com%2F&#038;format=xml" />
775<meta name="generator" content="Redux 4.5.15" /><!-- HubSpot WordPress Plugin v11.3.75: embed JS disabled as a portalId has not yet been configured -->	
776<link rel="preconnect" href="https://fonts.googleapis.com" crossorigin />
777<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
778<link rel="preconnect" href="https://www.googletagmanager.com" crossorigin />
779<meta name="generator" content="Elementor 4.3.1; features: e_font_icon_svg, additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-swap">
780
781<!-- Schema & Structured Data For WP v1.66 - -->
782<script type="application/ld+json" class="saswp-schema-markup-output">
783[{"@context":"https:\/\/schema.org\/","@type":"WebSite","@id":"https:\/\/www.nylas.com#website","headline":"Nylas","name":"Nylas","url":"https:\/\/www.nylas.com","description":"Nylas API lets you integrate with 250+ email, calendar and meeting providers (including Gmail, Microsoft, IMAP, Zoom and others) in 5 minutes. We also provide agent accounts for giving unique identities to your AI Agents under the same API platform.","potentialAction":{"@type":"SearchAction","target":"https:\/\/www.nylas.com?s={search_term_string}","query-input":"required name=search_term_string"}},
784
785{"@context":"https:\/\/schema.org\/","@type":"Organization","@id":"https:\/\/www.nylas.com#Organization","name":"Nylas","url":"https:\/\/www.nylas.com","sameAs":[]}]
786</script>
786
787
788			<style>
789				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
790				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * {
791					background-image: none !important;
792				}
793				@media screen and (max-height: 1024px) {
794					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),
795					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * {
796						background-image: none !important;
797					}
798				}
799				@media screen and (max-height: 640px) {
800					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),
801					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * {
802						background-image: none !important;
803					}
804				}
805			</style>
806			<link rel="icon" href="https://www.nylas.com/wp-content/uploads/favicon-1-150x150.png" sizes="32x32" />
807<link rel="icon" href="https://www.nylas.com/wp-content/uploads/favicon-1-300x300.png" sizes="192x192" />
808<link rel="apple-touch-icon" href="https://www.nylas.com/wp-content/uploads/favicon-1-300x300.png" />
809<meta name="msapplication-TileImage" content="https://www.nylas.com/wp-content/uploads/favicon-1-300x300.png" />
810		<style type="text/css" id="wp-custom-css">
811			@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;600;700;800&display=swap');
812
813
814/*Temp styles for phase 1a*/
815.page-template-template-casestudy h6 {
816  color:white;
817}
818#blog-subscribe-container .mktoForm #Email::-webkit-input-placeholder {
819    color:white;
820}
821#blog-subscribe-container .mktoForm #Email::-moz-placeholder {
822    color:white;
823}
824#blog-subscribe-container .mktoForm #Email:-ms-input-placeholder {
825    color:white;
826}
827#blog-subscribe-container .mktoForm #Email::-ms-input-placeholder {
828    color:white;
829}
830#blog-subscribe-container .mktoForm #Email::placeholder {
831    color:white;
832}
833
834#blog-subscribe-container .mktoForm #Email{
835	color:white;
836}
837#blog-subscribe-container .mktoForm .mktoError .mktoErrorMsg {
838	color:white!important;
839}
840
841.page-template-template-solutions{
842	margin-top:50px;
843	border-top:solid thin transparent;
844}
845
846.page-template-template-form-gated .form-header {
847	background:white!important;
848}
849
850.press-release-single {
851	background-color:#f7f7f7;
852}
853
854
855
856@media screen and (max-width:700px){
857	
858    .page-template-template-roi .company_sizes__ul {
859			margin-top:15px!important;
860        flex-direction:row!important;
861        flex-wrap:wrap!important;
862    }
863    .page-template-template-roi .company_sizes__ul li{
864        margin:15px!important;
865    }
866    .page-template-template-roi .roi-calculator__button{
867        margin-bottom:50px!important;
868    }
869
870	.main-nav #menu-item-10434 .main-menu-drop {
871	width: 100%
872}
873
874}
875
876/*Stycky TOC for Evergreen Template */
877
878.page-template-template-everngreen .sticky-element-inner {
879    position:sticky;
880		top:66px;
881}
882
883.page-template-template-everngreen .sticky-element { 
884
885    align-self:stretch;
886
887}
888
889.page-template-template-everngreen .sticky-element-wrap-css {
890
891position:relative;
892
893}
894
895.page-template-template-everngreen .main--no-padding, .page-template-template-everngreen .wrapper  { 
896	
897	overflow:visible;
898} 
899
900 .no-touch .main-header-links .menu-item-12073 a:not(.button-link):hover {
901	
902	color:#fff;
903}
904
905li#menu-item-12073 {
906	padding: 10px 0px;
907}
908
909.menu-item-12073 a{
910	
911padding: 10px 30px;
912
913}
914
915.section-light-blue {
916	
917	background-color: #f6f8fd;
918}
919
920.page-id-9569 .newsroom-liked-section .wave, .page-id-9962 .newsroom-liked-section .wave {
921	
922	display:none;
923}
924
925section.use-case-product--module .heading-wrap small {
926	font-size: 16px;
927}
928
929@media screen and (min-width: 1200px) {
930section.hero-section .breadcrumbs-wrap {
931    top: 100px;
932	
933}
934}
935
936.hs-button:hover {
937background: #fff !important;
938border: 1px solid #4169e1 !important;
939color: #4169e1 !important;
940cursor: pointer;
941}
942.hs-button {
943border: 1px solid #4169e1 !important;
944}
945
946/* API Guide */
947
948.apig-page-content h1 {
949    
950    color: #293056 !important;
951    
952}
953
954.apig-page-content h2 {
955    
956 border-bottom: 2px solid #DDE0EE;
957 width: fit-content;
958color: #293056 !important;
959margin-top: 40px;
960
961}
962
963.agip-code-module.developer-api-prod--module .heading-wrap h2, .product-promo-banner h2   {
964    border: none;
965    padding: 0;
966	  margin-top: 0;
967}
968
969.apig-page-content ul li {
970
971    padding-bottom: 10px;
972
973}
974
975.apig-page-content ul {
976
977    padding-top: 10px;
978
979}
980
981.apig-menu-content ul a {
982	padding: .6rem .5rem;
983}
984
985@media screen and (max-width:800px){
986	
987
988	.main-nav #menu-item-10434 .main-menu-drop {
989	width: 100%
990}
991 .template--use-case-lander .nylas-buttons {
992	display: grid
993}
994	.nylas-button.nylas-button--arrow {
995		margin:auto;
996	}
997	
998}
999
1000	.main-nav .drop-menu-list p {
1001		font-size: 14px;
1002	
1003}
1004
1005.lp-hero-module__banner-info p {
1006 font-size: 16px;
1007	
1008}
1009
1010.main-nav .main-nav-columns img {
1011    
1012    filter: none;
1013
1014}
1015
1016select#country___hubspot-233f68cd-2d1c-4526-b8aa-dc90d695a52d {
1017	height: 50px !important;
1018  margin: 0px !important;
1019}
1020
1021.apig-header-title .apig-header-icon, .apig-header-title svg
1022
1023{
1024	width: 50px;
1025	margin-left: 10px;
1026}
1027
1028@media only screen and (min-width: 1024px) {
1029    .press-release-sidebar .share-box {
1030        padding: 20px 20px;
1031    }
1032}
1033
1034.header-featured-content .image {
1035	background-size: contain;
1036}
1037
1038.np-authors.np-desktop {
1039	padding-top: 20px;
1040}
1041
1042.blog-press-release-details-section .press-release-content h2 {
1043	margin: 30px 0;
1044}
1045
1046h2#ready-to-get-started {
1047	margin: 0 0 15px 0;
1048}
1049
1050@media only screen and (min-width: 1200px) {
1051    .leadership-section .team-list .item {
1052        
1053        width: calc(25% - 40px);
1054    }
1055}
1056.page-id-44138 .fractal-glass-bar--progress{
1057	background-color: #1AA780;
1058}
1059.page-id-44138 #agentic-ai-is-already-shipping{
1060	margin-top: 0;
1061}
1062.home-page-presentation__code{
1063	z-index:9;
1064}
1065
1066.page-template-template-home-2024 .main-header .menu-header_additional_menu-container + a.button-link {
1067    border-radius: 50px!important;
1068}
1069
1070.page-template-template-email-api-landing-2024 main{
1071    font-family: Manrope;
1072}
1073
1074.main-nav #menu-item-48802 .item.active .subtitle {
1075  min-height: 0;
1076  margin: 0;
1077  padding: 0;
1078  line-height: 0;
1079}		</style>
1080						<style type="text/css" id="c4wp-checkout-css">
1081					.woocommerce-checkout .c4wp_captcha_field {
1082						margin-bottom: 10px;
1083						margin-top: 15px;
1084						position: relative;
1085						display: inline-block;
1086					}
1087				</style>
1088							<style type="text/css" id="c4wp-v3-lp-form-css">
1089				.login #login, .login #lostpasswordform {
1090					min-width: 350px !important;
1091				}
1092				.wpforms-field-c4wp iframe {
1093					width: 100% !important;
1094				}
1095			</style>
1096					            <!--
1097
1098        
1098<script>
1099		!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="EjY6shL6jO55pw7LuKXETLkhvYAaGuqr";;analytics.SNIPPET_VERSION="4.15.3";
1100		analytics.load("EjY6shL6jO55pw7LuKXETLkhvYAaGuqr");
1101		analytics.page();
1102		}}();
1103	</script>
1103-->
1104
1105        <!-- 
1105<script src="https://js.qualified.com/qualified.js?token=C8Zh5jUb7EKvA5Vm"></script>
1105 -->
1106        <!-- Google Tag Manager -->
1107            
1107<script>
vendor: 375 bytes, lines 1107-1111
1107(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1108            new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1109            j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
1110            'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1111            })(window,document,'script','dataLayer','
1111GTM-WQ6VGV2
vendor: 3 bytes, line 1111
1111');
1111</script>
1111 
1112		<!-- End Google Tag Manager -->
1113
1114		<!-- HOTJAR-->
1115		<!-- 
1115<script>
vendor: 116 bytes, lines 1115-1118
1115
1116			(function(h,o,t,j,a,r){
1117				h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
1118				h._hjSettings={hjid:
11182683626
vendor: 243 bytes, lines 1118-1124
1118,hjsv:6};
1119				a=o.getElementsByTagName('head')[0];
1120				r=o.createElement('script');r.async=1;
1121				r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
1122				a.appendChild(r);
1123			})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
1124		
1124</script>
1124 -->
1125		<!-- END HOTJAR-->
1126        
1126<script>
1127        // (function(w, q) {
1128        //     w['QualifiedObject'] = q;
1129        //     w[q] = w[q] || function() {
1130        //         (w[q].q = w[q].q || []).push(arguments)
1131        //     };
1132        // })(window, 'qualified')
1133    </script>
1133
1134    
1135		
1136	
1137	<meta name="traceparent" content="00-a4007aa92dac122a0000001790239172-a4007aa92dac122a-01"></head>
1138
1139	
1140	<body class="home wp-singular page-template-default page page-id-44594 wp-embed-responsive wp-theme-nylas elementor-default elementor-kit-37372"><a href="https://www.nylas.com/cdn-cgi/content?id=QV0FYeY_SG5xF8cwpCWL6b7SFIyij9tk4Dt_6b3bfJk-1790239172.0218601-1.2.1.1-RDByYF9dxC97zy8QgYdJOf1koVeEY5f3dULfVIx102neTOeBJ3XaKjRNHVSWqLm8" aria-hidden="true" rel="nofollow noopener" style="display: none !important; visibility: hidden !important"></a>
1141		<!-- Google Tag Manager (noscript) -->
vendor: 70 bytes, lines 1141-1142
1141
1142		<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1142GTM-WQ6VGV2
vendor: 87 bytes, lines 1142-1144
1142"
1143		height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1144		
1144<!-- End Google Tag Manager (noscript) -->
1145		            <div class="main-header-box">
1146                    <div class="header-banner-info">
1147        <div class="main-container">
1148            <p>Notetaker's biggest update since launch: five new features, live now</p>
1149                            <a target="_blank" href="https://www.nylas.com/blog/notetaker-configurations">Read what's new</a>
1150                    </div>
1151        <button class="banner-info-close">
1152            <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
1153                <path opacity="0.7"
1154                      d="M6 4.80001L1.2 0L0 1.2L4.8 6L1.05198e-05 10.8L1.20001 12L6 7.20001L10.8 12L12 10.8L7.2 6L12 1.2L10.8 0L6 4.80001Z"
1155                      fill="white"/>
1156            </svg>
1157        </button>
1158    </div>
1159                        <header class="main-header ">
1160        <div class="main-header-holder">
1161                            <strong class="main-logo">
1162                    <a href="https://www.nylas.com/">
1163                        <!-- <img src="https://www.nylas.com/wp-content/uploads/main-logo.svg"
1164                             alt="Nylas"> -->
1165                        <svg width="143" height="40" viewBox="0 0 143 40" fill="none" xmlns="http://www.w3.org/2000/svg">
1166<g clip-path="url(#clip0_962_839)">
1167<path d="M142.412 21.2841C142.027 20.5676 141.488 19.9445 140.834 19.459C140.14 18.9509 139.369 18.556 138.55 18.289C137.682 18.0021 136.788 17.7528 135.892 17.5505C134.891 17.3153 133.868 17.0578 132.85 16.7815C131.813 16.5016 130.951 16.1488 130.292 15.7314C130.049 15.6138 129.768 15.3692 129.768 14.8165C129.77 14.5954 129.824 14.3779 129.926 14.1815L129.944 14.1509C130.18 13.8217 130.55 13.5312 131.091 13.262C131.631 12.9927 132.412 12.8633 133.486 12.8633C134.333 12.8633 135.059 12.9809 135.642 13.209C136.164 13.4027 136.649 13.6843 137.075 14.0416C137.431 14.3473 137.737 14.7068 137.982 15.107C138.144 15.3774 138.29 15.6326 138.415 15.8678L142.149 13.4525C141.893 12.8859 141.576 12.3482 141.205 11.8485C140.716 11.1918 140.131 10.6109 139.471 10.1246C138.701 9.56151 137.848 9.12116 136.942 8.81934C135.962 8.4795 134.797 8.30664 133.484 8.30664C131.94 8.30664 130.64 8.51478 129.618 8.924C128.596 9.33322 127.763 9.83533 127.14 10.4104C126.564 10.9286 126.09 11.55 125.743 12.2424C125.464 12.7978 125.249 13.3828 125.102 13.9863C125.075 14.1474 125.046 14.3391 125.017 14.5366C124.991 14.7142 124.977 14.8934 124.976 15.0729C124.976 16.1241 125.24 17.012 125.762 17.7093C126.309 18.4357 126.995 19.0471 127.78 19.5084C128.619 20.0031 129.516 20.3922 130.451 20.6667C131.427 20.9572 132.361 21.2064 133.228 21.4075C134.072 21.611 134.88 21.8179 135.632 22.0237C136.306 22.192 136.948 22.4702 137.531 22.8468C137.984 23.1996 138.209 23.6135 138.209 24.0992C138.218 24.3375 138.167 24.5741 138.061 24.7881C137.955 25.002 137.798 25.1867 137.604 25.3257C137.222 25.601 136.797 25.8126 136.346 25.9524C135.88 26.1033 135.398 26.2023 134.91 26.2476C134.438 26.2923 134.044 26.3146 133.743 26.3146C132.95 26.3308 132.159 26.2394 131.39 26.043C130.845 25.8998 130.322 25.6843 129.834 25.4021C129.479 25.1971 129.16 24.9353 128.89 24.6272C128.722 24.431 128.569 24.2236 128.43 24.0063L128 23.3819L124.271 25.7949C124.613 26.3234 124.983 26.8337 125.38 27.3236C125.928 27.9941 126.57 28.583 127.285 29.0722C128.133 29.6508 129.059 30.105 130.036 30.4209C131.091 30.7737 132.337 30.956 133.739 30.956C134.769 30.9679 135.798 30.8669 136.806 30.6549C137.608 30.4846 138.387 30.2193 139.125 29.8647C139.723 29.5768 140.273 29.1997 140.757 28.7464C141.163 28.3607 141.528 27.9334 141.845 27.4717C142.529 26.4353 142.924 25.2367 142.992 23.9981C142.999 22.9233 142.802 22.0049 142.412 21.2841Z" fill="#4169E1"/>
1168<path d="M54.6917 8.13477C52.1153 8.13788 49.6453 9.15924 47.8235 10.9748C46.0016 12.7904 44.9768 15.252 44.9736 17.8196V30.5113H49.6262V17.8196C49.6262 16.4808 50.1599 15.1967 51.1099 14.25C52.0598 13.3033 53.3483 12.7714 54.6917 12.7714C56.0352 12.7714 57.3237 13.3033 58.2736 14.25C59.2236 15.1967 59.7573 16.4808 59.7573 17.8196V30.5113H64.4099V17.8196C64.4067 15.252 63.3819 12.7904 61.56 10.9748C59.7382 9.15924 5
11687.2682 8.13788 54.6917 8.13477Z" fill="#4169E1"/>
1169<path d="M111.222 8.13477C109.431 8.13492 107.665 8.55377 106.065 9.35765C104.466 10.1615 103.078 11.328 102.013 12.7635C100.948 14.1989 100.236 15.8632 99.9339 17.6228C99.6315 19.3823 99.7475 21.1879 100.272 22.8947C100.797 24.6014 101.717 26.1617 102.957 27.4501C104.196 28.7385 105.722 29.7192 107.411 30.3133C109.101 30.9074 110.906 31.0984 112.683 30.871C114.459 30.6436 116.158 30.004 117.641 29.0038L118.022 28.7451V30.5089H122.675V19.5494C122.672 16.5232 121.464 13.6218 119.317 11.4819C117.17 9.34194 114.259 8.13819 111.222 8.13477ZM111.222 26.3262C109.877 26.3264 108.562 25.9291 107.443 25.1844C106.325 24.4397 105.453 23.3811 104.938 22.1426C104.423 20.904 104.288 19.5411 104.551 18.2262C104.813 16.9113 105.461 15.7034 106.412 14.7555C107.363 13.8075 108.575 13.1619 109.895 12.9004C111.214 12.6389 112.582 12.7732 113.824 13.2864C115.067 13.7996 116.129 14.6685 116.877 15.7833C117.624 16.8981 118.023 18.2087 118.022 19.5494C118.02 21.346 117.303 23.0685 116.028 24.3389C114.754 25.6093 113.025 26.324 111.222 26.3262Z" fill="#4169E1"/>
1170<path d="M94.7951 21.2841V0H90.1484V21.2841C90.1512 23.8094 91.1427 26.234 92.9117 28.0421C94.6808 29.8501 97.088 30.899 99.6211 30.9654V26.3206C98.3223 26.2573 97.0975 25.6995 96.1994 24.7622C95.3014 23.825 94.7987 22.58 94.7951 21.2841Z" fill="#4169E1"/>
1171<path d="M86.7883 8.58398H82.1995V21.3039C82.1995 23.4746 80.7918 25.4337 78.7776 26.0687C77.1575 26.579 75.4737 26.3192 74.1475 25.3537C73.5057 24.8848 72.9833 24.2722 72.6224 23.5653C72.2615 22.8584 72.0721 22.077 72.0696 21.2839V8.58398H67.417V21.2439C67.417 25.6324 70.2949 29.4753 74.4165 30.5948C76.9676 31.2862 79.6083 30.9887 81.8372 29.7552L82.1995 29.5541V30.3173C82.1975 31.6132 81.6963 32.8589 80.7993 33.7972C79.9023 34.7355 78.6781 35.2948 77.3794 35.3596V39.9998C79.9127 39.933 82.32 38.884 84.0892 37.0758C85.8585 35.2676 86.8501 32.8428 86.8532 30.3173V9.03906H86.681L86.7883 8.58398Z" fill="#4169E1"/>
1172<path d="M32.6844 5.55139C31.4962 4.36226 30.0832 3.41979 28.527 2.77853C26.9709 2.13726 25.3027 1.80994 23.6188 1.8155C21.9349 1.80981 20.2665 2.13707 18.7104 2.77834C17.1543 3.41962 15.7413 4.36216 14.5532 5.55139L1.44269 18.6158C1.1346 18.9241 0.962009 19.3417 0.962894 19.7768C0.963779 20.2119 1.13806 20.6289 1.44741 20.9359C1.75675 21.2429 2.17582 21.4149 2.61241 21.4141C3.04901 21.4132 3.46737 21.2395 3.77546 20.9312L16.8848 7.86677C18.6808 6.12697 21.092 5.16174 23.5966 5.17984C26.1012 5.19795 28.4981 6.19794 30.2686 7.96351C32.0392 9.72909 33.0411 12.1183 33.0578 14.6144C33.0744 17.1105 32.1044 19.5128 30.3575 21.3016L17.2482 34.3661C16.9392 34.6734 16.7653 35.0905 16.7649 35.5256C16.7644 35.9607 16.9374 36.3782 17.2458 36.6861C17.5542 36.9941 17.9728 37.1674 18.4094 37.1678C18.846 37.1683 19.2649 36.9958 19.5739 36.6885L32.6844 23.6205C35.0851 21.2225 36.4333 17.9734 36.4333 14.586C36.4333 11.1985 35.0851 7.94943 32.6844 5.55139Z" fill="#4169E1"/>
1173<path d="M30.8477 14.5814C30.8478 13.1562 30.4236 11.763 29.629 10.5781C28.8344 9.3931 27.705 8.46962 26.3836 7.92443C25.0623 7.37925 23.6084 7.23686 22.2058 7.51528C20.8033 7.7937 19.5151 8.48041 18.5042 9.48855L1.0857 26.8474C0.792938 27.158 0.633026 27.57 0.639859 27.996C0.646691 28.4221 0.819731 28.8287 1.1223 29.1298C1.42487 29.4309 1.8332 29.6027 2.26073 29.6089C2.68826 29.615 3.10139 29.4551 3.41257 29.1628L20.6399 12.0144L20.6671 11.9827C20.7202 11.9227 20.7721 11.8651 20.8299 11.8039C20.8877 11.7428 20.9632 11.6863 21.034 11.6205L21.073 11.5852C21.8129 10.9602 22.7582 10.6293 23.7278 10.6559C24.6973 10.6824 25.623 11.0646 26.3273 11.7291C27.0317 12.3936 27.4653 13.2938 27.545 14.2571C27.6246 15.2205 27.3449 16.1792 26.7592 16.9497L26.7474 16.9662C26.6425 17.1048 26.5286 17.2364 26.4064 17.3601C26.2786 17.4865 26.1426 17.6044 25.9993 17.7129L8.98787 34.7226C8.6793 35.0301 8.50596 35.4471 8.50596 35.882C8.50596 36.3169 8.6793 36.734 8.98787 37.0415C9.29643 37.349 9.71493 37.5217 10.1513 37.5217C10.5877 37.5217 11.0062 37.349 11.3147 37.0415L28.7321 19.6826C29.4059 19.0141 29.9399 18.219 30.303 17.3434C30.6662 16.4677 30.8514 15.5289 30.8477 14.5814Z" fill="#4169E1"/>
1174<path d="M21.9847 18.1574C21.1168 17.7706 20.4224 17.0786 20.0343 16.2136L19.9163 15.9561L0.674748 35.1329C0.306608 35.489 0.0721262 35.96 0.0104335 36.4676C-0.0208502 36.6917 -0.000793865 36.9199 0.0690973 37.1352C0.138988 37.3505 0.256899 37.5472 0.413978 37.7105C0.554816 37.8459 0.721192 37.9521 0.903476 38.0229C1.08576 38.0937 1.28034 38.1279 1.47594 38.1233C2.05612 38.1088 2.60722 37.8672 3.00988 37.4506L22.2432 18.275L21.9847 18.1574Z" fill="#4169E1"/>
1175</g>
1176<defs>
1177<clipPath id="clip0_962_839">
1178<rect width="143" height="40" fill="white"/>
1179</clipPath>
1180</defs>
1181</svg>
1182                    </a>
1183                </strong>
1184                        <div class="main-nav-holder" style="background-image: url(https://www.nylas.com/wp-content/uploads/mobile-menu-bg.svg);">
1185                <div class="main-nav-wrap">
1186                    <div class="main-nav">
1187                        <ul id="menu-main_menu" class=""><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10434 menu-item-has-children"  id="menu-item-10434"><a href="https://www.nylas.com/products/">Products</a>            <div class="main-menu-drop">
1188                                <div class="main-menu-drop-container">
1189                    <div class="drop-menu-list">
1190                                                    <div class="main-nav-columns">
1191                                                                                                            <div class="item active">
1192                                            <div class="subtitle">Products</div>
1193                                            <ul style="display: block;">
1194                                                                                                                                                            <li>
1195                                                            <a href="/products/email-api/"  ><img src="https://www.nylas.com/wp-content/uploads/email-menu-icon.svg" alt="">Email and Contacts API</a>                                                                                                                            <p>Unified bi-directional sync and parsing for any provider.</p>
1196                                                                                                                    </li>
1197                                                                                                                                                                                                                <li>
1198                                                            <a href="/products/calendar-api/"  ><img src="https://www.nylas.com/wp-content/uploads/calendar-menu-icon.svg" alt="">Calendar API & Scheduler</a>                                                                                                                            <p>Real-time availability and embeddable white-label booking.</p>
1199                                                                                                                    </li>
1200                                                                                                                                                                                                                <li>
1201                                                            <a href="https://www.nylas.com/products/notetaker-api"  ><img src="https://www.nylas.com/wp-content/uploads/notetaker-menu-icon.svg" alt="">Notetaker API</a>                                                                                                                            <p>Capture, transcribe, and extract structured data from meetings.</p>
1202                                                                                                                    </li>
1203                                                                                                                                                                                                                <li>
1204                                                            <a href="https://www.nylas.com/products/agent-accounts"  ><img src="https://www.nylas.com/wp-content/uploads/agent-menu-icon.svg" alt="">Agent Accounts</a>                                                                                                                            <p>A real inbox and calendar for every AI agent, in one API call.</p>
1205                                                                                                                    </li>
1206                                                                                                                                                </ul>
1207                                        </div>
1208                                                                                                </div>
1209                                                                                                                            <div class="products-menu-cta">
1210                                <span class="products-menu-cta__text">Connect to every major email and calendar provider</span>
1211                                <a class="products-menu-cta__link" href="/integrations/">Explore Integrations                                    <svg width="16" height="14" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.3818 0.228882C10.8658 -0.142684 11.5599 -0.0523199 11.9322 0.430717L18 8.30347L11.9053 15.6029C11.5144 16.0711 10.8172 16.1344 10.3481 15.7442C9.87906 15.3541 9.81568 14.6583 10.2066 14.1901L14.2234 9.37932H1.10559C0.49499 9.37932 0 8.88529 0 8.27588C0 7.66646 0.49499 7.17243 1.10559 7.17243H14.3386L10.1796 1.77628C9.80731 1.29324 9.89785 0.600449 10.3818 0.228882Z" fill="currentColor"/></svg>
1212                                </a>
1213                            </div>
1214                                            </div>
1215                    <div class="header-featured-blocks">
1216                                            <div class="header-featured-content-blocks">
1217                            <div class="header-featured-content header-featured-content-1">
1218                                <div class="header-featured-content-item">
1219                                                                            <div class="category">Blog</div>
1220                                                                        <div class="image"
1221                                        style="background-image: url('https://www.nylas.com/wp-content/uploads/Notetaker-Blog-Hero-768x402.png')">
1222                                        <a href="https://www.nylas.com/blog/notetaker-configurations/" ></a>
1223                                    </div>
1224                                                                            <a href="https://www.nylas.com/blog/notetaker-configurations/" ><h5>Notetaker's biggest update since launch: five new features, live now</h5></a>
1225                                                                        <div class="read-more"><a href="https://www.nylas.com/blog/notetaker-configurations/" target="_blank" >Learn more</a>&nbsp;<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M9.43738 5.25039L5.99389 1.80691C5.70073 1.51374 5.70073 1.03843 5.99389 0.745264C6.28706 0.4521 6.76237 0.4521 7.05553 0.745264L11.7803 5.47006C12.0732 5.76295 12.0732 6.23783 11.7803 6.53072L7.05553 11.2555C6.76237 11.5487 6.28706 11.5487 5.99389 11.2555C5.70073 10.9624 5.70073 10.487 5.99389 10.1939L9.43738 6.75039H0.75C0.335786 6.75039 0 6.4146 0 6.00039C0 5.58618 0.335786 5.25039 0.75 5.25039H9.43738Z" fill="#30313D"/></svg></div>
1226                                </div>
1227                            </div>
1228                                                    </div>
1229                                                            </div>
1230                </div>
1231            </div>
1232            </li>
1233<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10267 menu-item-has-children"  id="menu-item-10267"><a href="https://www.nylas.com/solutions/">Solutions</a>            <div class="main-menu-drop">
1234                                <div class="main-menu-drop-container">
1235                    <div class="drop-menu-list">
1236                                                    <div class="main-nav-columns">
1237                                                                                                            <div class="item active">
1238                                            <div class="subtitle"> </div>
1239                                            <ul style="display: block;">
1240                                                                                                                                                            <li>
1241                                                            <a href="/solutions/sales-crm"  ><img src="https://www.nylas.com/wp-content/uploads/sales-crm-menu-icon.svg" alt="">Sales & CRM </a>                                                                                                                    </li>
1242                                                                                                                                                                                                                <li>
1243                                                            <a href="/solutions/recruiting-ats"  ><img src="https://www.nylas.com/wp-content/uploads/recruiting-ats-menu-icon.svg" alt="">Recruiting & ATS </a>                                                                                                                    </li>
1244                                                                                                                                                                                                                <li>
1245                                                            <a href="/solutions/healthcare"  ><img src="https://www.nylas.com/wp-content/uploads/healthcare-menu-icon.svg" alt="">Healthcare</a>                                                                                                                    </li>
1246                                                                                                                                                                                                                <li>
1247                                                            <a href="/solutions/financial/"  ><img src="https://www.nylas.com/wp-content/uploads/financial-menu-icon.svg" alt="">Financial</a>                                                                                                                    </li>
1248                                                                                                                                                </ul>
1249                                        </div>
1250                                                                                                                                                <div class="item">
1251                                            <div class="subtitle"> </div>
1252                                            <ul >
1253                                                                                                                                                            <li>
1254                                                            <a href="/solutions/legal"  ><img src="https://www.nylas.com/wp-content/uploads/legal-menu-icon.svg" alt="">Legal</a>                                                                                                                    </li>
1255                                                                                                                                                                                                                <li>
1256                                                            <a href="/solutions/real-estate"  ><img src="https://www.nylas.com/wp-content/uploads/real-estate-menu-icon.svg" alt="">Real Estate</a>                                                                                                                    </li>
1257                                                                                                                                                                                                                <li>
1258                                                            <a href="/solutions/education"  ><img src="https://www.nylas.com/wp-content/uploads/education-menu-icon.svg" alt="">Education</a>                                                                                                                    </li>
1259                                                                                                                                                                                                                <li>
1260                                                            <a href="/solutions/field-services"  ><img src="https://www.nylas.com/wp-content/uploads/field-services-menu-icon.svg" alt="">Field Services</a>                                                                                                                    </li>
1261                                                                                                                                                </ul>
1262                                        </div>
1263                                                                                                </div>
1264                                                                                                                            <div class="products-menu-cta products-menu-cta--solutions">
1265                                <span class="products-menu-cta__text">Connect to every major email and calendar provider</span>
1266                                <a class="products-menu-cta__link" href="/case-studies/">Read Customer Stories                                    <svg width="16" height="14" viewBox="0 0 18 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.3818 0.228882C10.8658 -0.142684 11.5599 -0.0523199 11.9322 0.430717L18 8.30347L11.9053 15.6029C11.5144 16.0711 10.8172 16.1344 10.3481 15.7442C9.87906 15.3541 9.81568 14.6583 10.2066 14.1901L14.2234 9.37932H1.10559C0.49499 9.37932 0 8.88529 0 8.27588C0 7.66646 0.49499 7.17243 1.10559 7.17243H14.3386L10.1796 1.77628C9.80731 1.29324 9.89785 0.600449 10.3818 0.228882Z" fill="currentColor"/></svg>
1267                                </a>
1268                            </div>
1269                                            </div>
1270                    <div class="header-featured-blocks">
1271                                            <div class="header-featured-content-blocks">
1272                            <div class="header-featured-content header-featured-content-1">
1273                                <div class="header-featured-content-item">
1274                                                                        <div class="image"
1275                                        style="background-image: url('https://www.nylas.com/wp-content/uploads/Dana-logo-1-768x378.png')">
1276                                        <a href="https://www.nylas.com/case-study/dana-intelligence-agent-accounts/" ></a>
1277                                    </div>
1278                                                                            <a href="https://www.nylas.com/case-study/dana-intelligence-agent-accounts/" ><h5>How Dana Intelligence gave its AI agent a real inbox to act from </h5></a>
1279                                                                        <div class="read-more"><a href="https://www.nylas.com/case-study/dana-intelligence-agent-accounts/" target="_blank" ></a>&nbsp;<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M9.43738 5.25039L5.99389 1.80691C5.70073 1.51374 5.70073 1.03843 5.99389 0.745264C6.28706 0.4521 6.76237 0.4521 7.05553 0.745264L11.7803 5.47006C12.0732 5.76295 12.0732 6.23783 11.7803 6.53072L7.05553 11.2555C6.76237 11.5487 6.28706 11.5487 5.99389 11.2555C5.70073 10.9624 5.70073 10.487 5.99389 10.1939L9.43738 6.75039H0.75C0.335786 6.75039 0 6.4146 0 6.00039C0 5.58618 0.335786 5.25039 0.75 5.25039H9.43738Z" fill="#30313D"/></svg></div>
1280                                </div>
1281                            </div>
1282                                                    </div>
1283                                                            </div>
1284                </div>
1285            </div>
1286            </li>
1287<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-9437 menu-item-has-children"  id="menu-item-9437"><a href="https://developer.nylas.com/">Developers</a>            <div class="main-menu-drop">
1288                                <div class="main-menu-drop-container">
1289                    <div class="drop-menu-list">
1290                                                    <div class="main-nav-columns">
1291                                                                                                            <div class="item active">
1292                                            <div class="subtitle">Documentation</div>
1293                                            <ul style="display: block;">
1294                                                                                                                                                            <li>
1295                                                            <a href="https://developer.nylas.com/" target="_blank" ><img src="https://www.nylas.com/wp-content/uploads/docs-menu-icon.svg" alt="">Docs</a>                                                                                                                    </li>
1296                                                                                                                                                                                                                <li>
1297                                                            <a href="https://developer.nylas.com/docs/v3/sdks/" target="_blank" ><img src="https://www.nylas.com/wp-content/uploads/sdks-menu-icon.svg" alt="">SDKs</a>                                                                                                                    </li>
1298                                                                                                                                                                                                                <li>
1299                                                            <a href="https://developer.nylas.com/docs/v3/guides/" target="_blank" ><img src="https://www.nylas.com/wp-content/uploads/tutorials-menu-icon.svg" alt="">Guides</a>                                                                                                                    </li>
1300                                                                                                                                                                                                                <li>
1301                                                            <a href="https://www.nylas.com/integrations/"  ><img src="https://www.nylas.com/wp-content/uploads/api-ref-icon.svg" alt="">Integrations</a>                                                                                                                    </li>
1302                                                                                                                                                </ul>
1303                                        </div>
1304                                                                                                                                                <div class="item">
1305                                            <div class="subtitle">Support</div>
1306                                            <ul >
1307                                                                                                                                                            <li>
1308                                                            <a href="https://status-v3.nylas.com/" target="_blank" ><img src="https://www.nylas.com/wp-content/uploads/api-menu-icon.svg" alt="">API status</a>                                                                                                                    </li>
1309                                                                                                                                                                                                                <li>
1310                                                            <a href="https://developer.nylas.com/docs/changelogs/" target="_blank" ><img src="https://www.nylas.com/wp-content/uploads/changelog-menu-icon.svg" alt="">Changelog</a>                                                                                                                    </li>
1311                                                                                                                                                                                                                <li>
1312                                                            <a href="https://developer.nylas.com/docs/support/" target="_blank" ><img src="https://www.nylas.com/wp-content/uploads/support-menu-icon.svg" alt="">Support</a>                                                                                                                    </li>
1313                                                                                                                                                </ul>
1314                                        </div>
1315                                                                                                </div>
1316                                                                                                    <div class="quick-links">
1317                                <a href="https://developer.nylas.com/docs/v3/getting-started/"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 15 15" fill="none">  <path d="M5.625 2.02246C5.43105 2.02246 5.23975 2.0676 5.06625 2.15429L2.22063 3.57742C2.11683 3.62929 2.02952 3.70903 1.96847 3.80771C1.90743 3.9064 1.87506 4.02013 1.875 4.13617V12.113C1.87474 12.2197 1.90177 12.3246 1.95353 12.4179C2.00529 12.5111 2.08005 12.5896 2.1707 12.6458C2.26135 12.702 2.36487 12.7341 2.47141 12.7389C2.57795 12.7438 2.68397 12.7213 2.77938 12.6737L5.06625 11.5299C5.23975 11.4432 5.43105 11.3981 5.625 11.3981C5.81896 11.3981 6.01025 11.4432 6.18375 11.5299L8.81625 12.8462C8.98975 12.9329 9.18105 12.978 9.375 12.978C9.56896 12.978 9.76025 12.9329 9.93375 12.8462L12.7794 11.423C12.8832 11.3712 12.9705 11.2914 13.0315 11.1927C13.0926 11.0941 13.1249 10.9803 13.125 10.8643V2.88679C13.1252 2.78019 13.098 2.67532 13.0462 2.58216C12.9944 2.48899 12.9197 2.41062 12.829 2.3545C12.7384 2.29838 12.6349 2.26637 12.5284 2.26152C12.4219 2.25667 12.316 2.27914 12.2206 2.32679L9.93375 3.47054C9.76025 3.55724 9.56896 3.60238 9.375 3.60238
1317C9.18105 3.60238 8.98975 3.55724 8.81625 3.47054L6.18375 2.15429C6.01025 2.0676 5.81896 2.02246 5.625 2.02246ZM9.375 3.60238L9.375 12.9774M5.625 2.02246L5.625 11.3975" stroke="#212121" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round"/></svg>Quickstart Guides</a>
1318                                <a href="https://developer.nylas.com/docs/reference/api/"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 15 15" fill="none"><path d="M10 11.25L13.75 7.5L10 3.75M5 3.75L1.25 7.5L5 11.25" stroke="#212121" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round"/></svg>API References</a>
1319                                <a href="https://developer.nylas.com/docs/reference/ui/"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 15 15" fill="none">  <path d="M6.25 13.125V5C6.25 4.83424 6.18415 4.67527 6.06694 4.55806C5.94973 4.44085 5.79076 4.375 5.625 4.375H2.5C2.33424 4.375 2.17527 4.44085 2.05806 4.55806C1.94085 4.67527 1.875 4.83424 1.875 5V12.5C1.875 12.6658 1.94085 12.8247 2.05806 12.9419C2.17527 13.0592 2.33424 13.125 2.5 13.125H10C10.1658 13.125 10.3247 13.0592 10.4419 12.9419C10.5592 12.8247 10.625 12.6658 10.625 12.5V9.375C10.625 9.20924 10.5592 9.05027 10.4419 8.93306C10.3247 8.81585 10.1658 8.75 10 8.75H1.875M9.375 1.875H12.5C12.8452 1.875 13.125 2.15482 13.125 2.5V5.625C13.125 5.97018 12.8452 6.25 12.5 6.25H9.375C9.02982 6.25 8.75 5.97018 8.75 5.625V2.5C8.75 2.15482 9.02982 1.875 9.375 1.875Z" stroke="#212121" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round"/></svg>Component Libraries</a>
1320                            </div>
1321                                                                    </div>
1322                    <div class="header-featured-blocks">
1323                                            <div class="header-featured-content-blocks">
1324                            <div class="header-featured-content header-featured-content-1">
1325                                <div class="header-featured-content-item">
1326                                                                        <div class="image"
1327                                        style="background-image: url('https://www.nylas.com/wp-content/uploads/agentic-ai-768x441.png')">
1328                                        <a href="https://www.nylas.com/blog/the-state-of-agentic-ai-in-2026/" ></a>
1329                                    </div>
1330                                                                            <a href="https://www.nylas.com/blog/the-state-of-agentic-ai-in-2026/" ><h5>The State of Agentic AI in 2026: What teams are actually shipping</h5></a>
1331                                                                        <div class="read-more"><a href="https://www.nylas.com/blog/the-state-of-agentic-ai-in-2026/" target="_blank" >Read Report</a>&nbsp;<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M9.43738 5.25039L5.99389 1.80691C5.70073 1.51374 5.70073 1.03843 5.99389 0.745264C6.28706 0.4521 6.76237 0.4521 7.05553 0.745264L11.7803 5.47006C12.0732 5.76295 12.0732 6.23783 11.7803 6.53072L7.05553 11.2555C6.76237 11.5487 6.28706 11.5487 5.99389 11.2555C5.70073 10.9624 5.70073 10.487 5.99389 10.1939L9.43738 6.75039H0.75C0.335786 6.75039 0 6.4146 0 6.00039C0 5.58618 0.335786 5.25039 0.75 5.25039H9.43738Z" fill="#30313D"/></svg></div>
1332                                </div>
1333                            </div>
1334                                                    </div>
1335                                                            </div>
1336                </div>
1337            </div>
1338            </li>
1339<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48802 menu-item-has-children"  id="menu-item-48802"><a href="https://www.nylas.com/enterprise/">Resources</a>            <div class="main-menu-drop">
1340                                <div class="main-menu-drop-container">
1341                    <div class="drop-menu-list">
1342                                                    <div class="main-nav-columns">
1343                                                                                                            <div class="item active">
1344                                            <div class="subtitle"> </div>
1345                                            <ul style="display: block;">
1346                                                                                                                                                            <li>
1347                                                            <a href="https://www.nylas.com/blog/"  ><img src="https://www.nylas.com/wp-content/uploads/docs-menu-icon.svg" alt="">Blog</a>                                                                                                                    </li>
1348                                                                                                                                                                                                                <li>
1349                                                            <a href="https://www.nylas.com/case-studies/"  ><img src="https://www.nylas.com/wp-content/uploads/email-menu-icon.svg" alt="">Case Studies</a>                                                                                                                    </li>
1350                                                                                                                                                                                                                <li>
1351                                                            <a href="https://www.nylas.com/leadership-team/"  ><img src="https://www.nylas.com/wp-content/uploads/real-estate-menu-icon.svg" alt="">Company</a>                                                                                                                    </li>
1352                                                                                                                                                                                                                <li>
1353                                                            <a href="https://www.nylas.com/company/jobs/"  ><img src="https://www.nylas.com/wp-content/uploads/healthcare-menu-icon.svg" alt="">Careers</a>                                                                                                                    </li>
1354                                                                                                                                                                                                                <li>
1355                                                            <a href="https://www.nylas.com/enterprise/"  ><img src="https://www.nylas.com/wp-content/uploads/component-menu-icon.svg" alt="">Enterprise</a>                                                                                                                    </li>
1356                                                                                                                                                </ul>
1357                                        </div>
1358                                                                                                </div>
1359                                                                                                                    </div>
1360                    <div class="header-featured-blocks">
1361                                            <div class="header-featured-content-blocks">
1362                            <div class="header-featured-content header-featured-content-1">
1363                                <div class="header-featured-content-item">
1364                                                                        <div class="image"
1365                                        style="background-image: url('https://www.nylas.com/wp-content/uploads/Introducing-Nylas-Agent-Accounts-768x402.png')">
1366                                        <a href="https://www.nylas.com/blog/introducing-nylas-agent-accounts/" ></a>
1367                                    </div>
1368                                                                            <a href="https://www.nylas.com/blog/introducing-nylas-agent-accounts/" ><h5>Agent Accounts is generally available</h5></a>
1369                                                                        <div class="read-more"><a href="https://www.nylas.com/blog/introducing-nylas-agent-accounts/"  ></a>&nbsp;<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M9.43738 5.25039L5.99389 1.80691C5.70073 1.51374 5.70073 1.03843 5.99389 0.745264C6.28706 0.4521 6.76237 0.4521 7.05553 0.745264L11.7803 5.47006C12.0732 5.76295 12.0732 6.23783 11.7803 6.53072L7.05553 11.2555C6.76237 11.5487 6.28706 11.5487 5.99389 11.2555C5.70073 10.9624 5.70073 10.487 5.99389 10.1939L9.43738 6.75039H0.75C0.335786 6.75039 0 6.4146 0 6.00039C0 5.58618 0.335786 5.25039 0.75 5.25039H9.43738Z" fill="#30313D"/></svg></div>
1370                                </div>
1371                            </div>
1372                                                    </div>
1373                                                            </div>
1374                </div>
1375            </div>
1376            </li>
1377<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-12080"  id="menu-item-12080"><a href="/pricing/">Pricing</a></li>
1378</ul>                    </div>
1379                    <div class="main-header-links">
1380                        <div class="menu-header_additional_menu-container"><ul id="menu-header_additional_menu" class="main-nav-links"><li id="menu-item-12004" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-12004"><a href="/contact-sales/">Contact sales</a></li>
1381<li id="menu-item-12073" class="button-link transparent menu-item menu-item-type-custom menu-item-object-custom menu-item-12073"><a target="_blank" href="https://dashboard-v3.nylas.com/login?_gl=1*1joyqh9*_ga*MTIxMzc0MDAyOC4xNjM2MDMyODAw*_ga_5LVXVXFW0C*MTY1MjM2NjM0OS42MC4xLjE2NTIzNjYzNTAuNTk">Log in</a></li>
1382</ul></div>                                                    <a href="https://dashboard-v3.nylas.com/register" target="_blank" class="button-link btn">Build for free</a>                                            </div>
1383                </div>
1384            </div>
1385            <button class="mobile-menu-opener"><i></i></button>
1386        </div>
1387    </header>
1388<script>
1389/* Make the description paragraph in the nav dropdowns clickable: the title
1390   sits in an <a> but the description <p> is a sibling, so forward clicks on
1391   the paragraph to the row's link (respecting target="_blank"). Delegated so
1392   it covers Products/Solutions/Developers and the single-column dropdowns. */
1393(function () {
1394    document.addEventListener('click', function (e) {
1395        if (!e.target.closest) return;
1396        var p = e.target.closest('.main-header .main-nav .main-menu-drop p');
1397        if (!p) return;
1398        var li = p.closest('li');
1399        if (!li) return;
1400        var link = li.querySelector('a[href]');
1401        if (!link || !link.getAttribute('href')) return;
1402        if (link.target === '_blank') {
1403            window.open(link.href, '_blank', 'noopener');
1404        } else {
1405            window.location.href = link.href;
1406        }
1407    });
1408})();
1409</script>
1409
1410            </div>
1411            
1412<main id="main-content" role="main">
1413    
1414<!-- Inline CSS for Portability -->
1415<style>
1416@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600&family=Poppins:wght@500&display=swap');
1417
1418.hero-cta-banner-section {
1419    position: relative;
1420    padding: 80px 0;
1421    min-height: 750px;
1422    display: flex;
1423    align-items: center;
1424    overflow: hidden;
1425    font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
1426    z-index: 20;
1427}
1428
1429.hero-cta-banner-section * {
1430    box-sizing: border-box;
1431}
1432
1433/* Video Background Container */
1434.hero-cta-banner__video-container {
1435    position: absolute;
1436    top: 0;
1437    left: 0;
1438    width: 100%;
1439    height: 100%;
1440    z-index: 0;
1441    overflow: hidden;
1442}
1443
1444/* Fallback Image - shows until video is ready */
1445.hero-cta-banner__fallback {
1446    position: absolute;
1447    top: 0;
1448    left: 0;
1449    width: 100%;
1450    height: 100%;
1451    background-size: cover;
1452    background-position: center center;
1453    z-index: 0;
1454    transition: opacity 0.5s ease;
1455}
1456
1457.hero-cta-banner__fallback--hidden {
1458    opacity: 0;
1459    pointer-events: none;
1460}
1461
1462/* Video - hidden until loaded */
1463.hero-cta-banner__video {
1464    position: absolute;
1465    top: 0;
1466    left: 0;
1467    width: 100%;
1468    height: 100%;
1469    object-fit: cover;
1470    object-position: center center;
1471    opacity: 0;
1472    transition: opacity 0.5s ease;
1473}
1474
1475.hero-cta-banner__video--loaded {
1476    opacity: 1;
1477}
1478
1479.hero-cta-banner__overlay {
1480    position: absolute;
1481    top: 0;
1482    left: 0;
1483    width: 100%;
1484    height: 100%;
1485    z-index: 1;
1486}
1487
1488/* Animated WebGL "veil" background canvas */
1489.hero-cta-banner__veil {
1490    position: absolute;
1491    top: 0;
1492    left: 0;
1493    width: 100%;
1494    height: 100%;
1495    display: block;
1496    z-index: 0;
1497    border: 0;
1498    pointer-events: none;
1499}
1500
1501/* Container */
1502.hero-cta-banner__container {
1503    position: relative;
1504    z-index: 2;
1505    width: 100%;
1506    max-width: 1200px;
1507    margin: 0 auto;
1508    padding: 0 24px;
1509}
1510
1511/* Content */
1512.hero-cta-banner__content {
1513    text-align: center;
1514    max-width: 900px;
1515    margin: 0 auto;
1516}
1517
1518.hero-cta-banner-section .hero-cta-banner__title,
1519.hero-cta-banner__title,
1520.hero-cta-banner-section h1.hero-cta-banner__title,
1521h1.hero-cta-banner__title,
1522.hero-cta-banner-section .hero-cta-banner__content h1,
1523.hero-cta-banner__content h1 {
1524    font-family: 'Manrope', sans-serif !important;
1525    font-style: normal !important;
1526    font-weight: 500 !important;
1527    font-size: 64px !important;
1528    color: #FFFFFF !important;
1529    margin: 0 0 20px 0 !important;
1530    line-height: 1.15 !important;
1531    -webkit-text-fill-color: #FFFFFF !important;
1532}
1533
1534.hero-cta-banner-section .hero-cta-banner__subtitle,
1535.hero-cta-banner__subtitle {
1536    font-family: 'Manrope', sans-serif !important;
1537    font-style: normal !important;
1538    font-weight: 400 !important;
1539    font-size: 18px !important;
1540    line-height: 28px !important;
1541    color: #FFFFFF !important;
1542    margin: 0 auto 50px !important;
1543    max-width: 600px !important;
1544}
1545
1546/* Buttons */
1547.hero-cta-banner__buttons {
1548    display: flex;
1549    gap: 26px;
1550    justify-content: center;
1551    flex-wrap: wrap;
1552}
1553
1554.hero-cta-banner__btn {
1555    display: inline-flex;
1556    align-items: center;
1557    justify-content: center;
1558    padding: 12px 35px;
1559    font-family: 'Poppins', sans-serif;
1560    font-style: normal;
1561    font-weight: 500;
1562    font-size: 16px;
1563    line-height: 24px;
1564    text-align: center;
1565    text-decoration: none;
1566    border-radius: 55px;
1567    transition: all 0.2s ease;
1568    cursor: pointer;
1569}
1570
1571.hero-cta-banner__btn--primary {
1572    background: #ffffff;
1573    color: #000000;
1574    border: none;
1575}
1576
1577.hero-cta-banner__btn--primary:hover {
1578    background: rgba(255, 255, 255, 0.9);
1579    color: #000000;
1580}
1581
1582.hero-cta-banner__btn--secondary {
1583    background: #000000;
1584    color: #ffffff;
1585    border: none;
1586}
1587
1588.hero-cta-banner__btn--secondary:hover {
1589    background: #222222;
1590    color: #ffffff;
1591}
1592
1593/* Responsive */
1594@media (max-width: 1024px) {
1595    .hero-cta-banner-section {
1596        min-height: 80vh;
1597    }
1598    
1599    .hero-cta-banner-section .hero-cta-banner__title,
1600    .hero-cta-banner__title,
1601    .hero-cta-banner-section h1.hero-cta-banner__title,
1602    h1.hero-cta-banner__title,
1603    .hero-cta-banner-section .hero-cta-banner__content h1,
1604    .hero-cta-banner__content h1 {
1605        font-size: 48px !important;
1606    }
1607    
1608    .hero-cta-banner-section .hero-cta-banner__subtitle,
1609    .hero-cta-banner__subtitle {
1610        font-size: 17px !important;
1611        max-width: 570px;
1612    }
1613}
1614
1615@media (max-width: 768px) {
1616    .hero-cta-banner-section {
1617        padding: 60px 0;
1618        min-height: 70vh;
1619    }
1620    
1621    .hero-cta-banner__container {
1622        padding: 0 20px;
1623    }
1624    
1625    .hero-cta-banner-section .hero-cta-banner__title,
1626    .hero-cta-banner__title,
1627    .hero-cta-banner-section h1.hero-cta-banner__title,
1628    h1.hero-cta-banner__title,
1629    .hero-cta-banner-section .hero-cta-banner__content h1,
1630    .hero-cta-banner__content h1 {
1631        font-size: 36px !important;
1632    }
1633    
1634    .hero-cta-banner-section .hero-cta-banner__subtitle,
1635    .hero-cta-banner__subtitle {
1636        font-size: 16px !important;
1637        line-height: 24px !important;
1638    }
1639    
1640    .hero-cta-banner__buttons {
1641        flex-direction: column;
1642    }
1643    
1644    .hero-cta-banner__btn {
1645        width: 100%;
1646    }
1647}
1648
1649@media (max-width: 480px) {
1650    .hero-cta-banner-section {
1651        min-height: 60vh;
1652    }
1653    
1654    .hero-cta-banner-section .hero-cta-banner__title,
1655    .hero-cta-banner__title,
1656    .hero-cta-banner-section h1.hero-cta-banner__title,
1657    h1.hero-cta-banner__title,
1658    .hero-cta-banner-section .hero-cta-banner__content h1,
1659    .hero-cta-banner__content h1 {
1660        font-size: 32px !important;
1661    }
1662    
1663    .hero-cta-banner-section .hero-cta-banner__subtitle,
1664    .hero-cta-banner__subtitle {
1665        font-size: 15px !important;
1666    }
1667}
1668</style>
1669
1670<section class="hero-cta-banner-section" id="hero-cta-banner-6ab48bee7b0ce" 
1671            style="background: radial-gradient(120% 120% at 50% 0%, #0B9B8A 0%, #06463d 60%, #032c26 100%);"
1672    >
1673
1674            <!-- Animated WebGL green background (falls back to the CSS green above) -->
1675        <canvas class="veil-bg hero-cta-banner__veil" aria-hidden="true"></canvas>
1676        
1677        
1678    <div class="hero-cta-banner__container">
1679        <div class="hero-cta-banner__content">
1680                            <h1 class="hero-cta-banner__title" style="font-family: 'Manrope', sans-serif; font-weight: 500; font-size: 64px; color: #FFFFFF; -webkit-text-fill-color: #FFFFFF;">The data layer behind every communication workflow, human or AI</h1>
1681                        
1682                            <p class="hero-cta-banner__subtitle" style="font-family: 'Manrope', sans-serif; font-weight: 400; font-size: 18px; line-height: 28px; color: #FFFFFF; -webkit-text-fill-color: #FFFFFF;">Email, calendar, and meeting data aren&#039;t separate integrations. They&#039;re one connected layer your product and your AI agents use to read and send across every provider, not just one.</p>
1683                        
1684            <div class="hero-cta-banner__buttons">
1685                                    <a href="https://dashboard-v3.nylas.com/register" 
1686                       target="_self"
1687                       class="hero-cta-banner__btn hero-cta-banner__btn--primary">
1688                        Build Now                    </a>
1689                                
1690                                    <a href="https://developer.nylas.com/" 
1691                       target="_self"
1692                       class="hero-cta-banner__btn hero-cta-banner__btn--secondary">
1693                        See the Docs                    </a>
1694                            </div>
1695        </div>
1696    </div>
1697</section>
1698
1699
1700
1701
1702<section class="sponsor-logos-section">
1703  <div class="container">
1704    <div class="sponsor-logos__wrapper">
1705      
1706      <!-- Left Logos (2) -->
1707              <div class="sponsor-logos__left">
1708                                                  <div class="sponsor-logo-item">
1709                                  <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Compass-logo.webp" 
1710                       alt="COMPASS"
1711                       class="light-mode-img" />
1712                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Compass-logo-dark.webp" 
1713                         alt="COMPASS"
1714                         class="dark-mode-img" />
1715                                                </div>
1716                                                              <div class="sponsor-logo-item">
1717                                  <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Dialpad.svg" 
1718                       alt="dialpad"
1719                       class="light-mode-img" />
1720                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Dialpad-White-Colour.svg" 
1721                         alt="dialpad"
1722                         class="dark-mode-img" />
1723                                                </div>
1724                              </div>
1725            
1726      <!-- Right Logos (3) -->
1727              <div class="sponsor-logos__right">
1728                                                  <div class="sponsor-logo-item">
1729                                  <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Dayfor
1729ce.webp" 
1730                       alt="dayforce"
1731                       class="light-mode-img" />
1732                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Dayforce-White.webp" 
1733                         alt="dayforce"
1734                         class="dark-mode-img" />
1735                                                </div>
1736                                                              <div class="sponsor-logo-item">
1737                                  <img decoding="async" src="https://www.nylas.com/wp-content/uploads/TalentReef.svg" 
1738                       alt="TalentReef"
1739                       class="light-mode-img" />
1740                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/TalentReef-White.svg" 
1741                         alt="TalentReef"
1742                         class="dark-mode-img" />
1743                                                </div>
1744                                                              <div class="sponsor-logo-item">
1745                                  <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Clio.svg" 
1746                       alt="Clio"
1747                       class="light-mode-img" />
1748                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Clio-White.svg" 
1749                         alt="Clio"
1750                         class="dark-mode-img" />
1751                                                </div>
1752                              </div>
1753            
1754    </div>
1755  </div>
1756</section>
1757
1758
1759
1760<section class="product-feature-section line-continue">
1761  <div class="container">
1762    <div class="product-feature-section__wrapper">
1763      
1764      <!-- Left: Text -->
1765      <div class="product-feature-section__text">
1766                  <h2><p><b>Email API</b> with two-way sync across every provider</p>
1767</h2>
1768                
1769                  <div class="body-copy"><p>Send, receive, thread, and parse across Gmail, Microsoft Graph, Exchange, and any IMAP server. One normalized JSON schema, zero provider-specific branches, first send in five minutes.</p>
1770</div>
1771                
1772        <div class="product-feature-section__buttons">
1773                      <a href="https://www.nylas.com/products/email-api/" 
1774               target="_self" 
1775               class="btn-primary">
1776              Learn more            </a>
1777                    
1778                  </div>
1779      </div>
1780      
1781      <!-- Right: Media -->
1782      <div class="product-feature-section__media">
1783        <div class="custom-block-wrapper">
1784<div
1785    id="api-code-6ab48bee7fac7"
1786    class="api-code-showcase-block"
1787    data-variant="default"
1788    style="--bg-color: #000000; --text-color: #ffffff; --accent-color: #ffffff;"
1789>
1790        <div class="api-code-header">
1791                    <h3 class="api-code-title">Send an Email</h3>
1792                            <p class="api-code-description"> </p>
1793            </div>
1794    
1795    <div class="api-code-tabs">
1796                <div class="api-code-tabs-nav" role="tablist">
1797                                            <button
1798                    id="api-code-6ab48bee7fac7-tab-button-0"
1799                    type="button"
1800                    class="api-code-tab-button active"
1801                    data-tab="tab-0"
1802                    data-block-id="api-code-6ab48bee7fac7"
1803                    role="tab"
1804                    aria-controls="api-code-6ab48bee7fac7-tab-0"
1805                    aria-selected="true"
1806                    tabindex="0"
1807                >
1808                    NodeJS                </button>
1809                                            <button
1810                    id="api-code-6ab48bee7fac7-tab-button-1"
1811                    type="button"
1812                    class="api-code-tab-button"
1813                    data-tab="tab-1"
1814                    data-block-id="api-code-6ab48bee7fac7"
1815                    role="tab"
1816                    aria-controls="api-code-6ab48bee7fac7-tab-1"
1817                    aria-selected="false"
1818                    tabindex="-1"
1819                >
1820                    Ruby                </button>
1821                                            <button
1822                    id="api-code-6ab48bee7fac7-tab-button-2"
1823                    type="button"
1824                    class="api-code-tab-button"
1825                    data-tab="tab-2"
1826                    data-block-id="api-code-6ab48bee7fac7"
1827                    role="tab"
1828                    aria-controls="api-code-6ab48bee7fac7-tab-2"
1829                    aria-selected="false"
1830                    tabindex="-1"
1831                >
1832                    Python                </button>
1833                                            <button
1834                    id="api-code-6ab48bee7fac7-tab-button-3"
1835                    type="button"
1836                    class="api-code-tab-button"
1837                    data-tab="tab-3"
1838                    data-block-id="api-code-6ab48bee7fac7"
1839                    role="tab"
1840                    aria-controls="api-code-6ab48bee7fac7-tab-3"
1841                    aria-selected="false"
1842                    tabindex="-1"
1843                >
1844                    Kotlin                </button>
1845                                            <button
1846                    id="api-code-6ab48bee7fac7-tab-button-4"
1847                    type="button"
1848                    class="api-code-tab-button"
1849                    data-tab="tab-4"
1850                    data-block-id="api-code-6ab48bee7fac7"
1851                    role="tab"
1852                    aria-controls="api-code-6ab48bee7fac7-tab-4"
1853                    aria-selected="false"
1854                    tabindex="-1"
1855                >
1856                    cURL                </button>
1857                    </div>
1858        
1859        <div class="api-code-tabs-content">
1860                            <div
1861                    class="api-code-tab-panel active"
1862                    id="api-code-6ab48bee7fac7-tab-0"
1863                    data-tab="tab-0"
1864                    role="tabpanel"
1865                    aria-labelledby="api-code-6ab48bee7fac7-tab-button-0"
1866                                    >
1867                    <div class="api-code-wrapper has-filename">
1868                                                <div class="api-code-filename">
1869                            <span>NodeJS</span>
1870                        </div>
1871                        
1872                        <button
1873                            type="button"
1874                            class="api-code-copy-btn"
1875                            data-panel-id="api-code-6ab48bee7fac7-tab-0"
1876                            title="Copy code"
1877                            aria-label="Copy code"
1878                        >
1879                            <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
1880                                <path d="M13 5H7C6.44772 5 6 5.44772 6 6V12C6 12.5523 6.44772 13 7 13H13C13.5523 13 14 12.5523 14 12V6C14 5.44772 13.5523 5 13 5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1881                                <path d="M3 10H2C1.44772 10 1 9.55228 1 9V3C1 2.44772 1.44772 2 2 2H8C8.55228 2 9 2.44772 9 3V4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1882                            </svg>
1883                        </button>
1884
1885                                                <pre class="api-code-pre line-numbers" data-language="javascript" data-no-hljs="true"><code class="language-javascript nohighlight nohljsln" data-no-hljs="true">import Nylas from &#039;nylas&#039;;
1886
1887const nylas = new Nylas({ apiKey: &#039;&lt;NYLAS_API_KEY&gt;&#039; });
1888const sentMessage = await nylas.messages.send({
1889 identifier: &lt;USER_GRANT_ID&gt;
1890  requestBody: {
1891    to: [{ name: &#039;&lt;RECIPIENT_NAME&gt;&#039;, email: &#039;&lt;RECIPIENT_EMAIL&gt;&#039; }],
1892    subject: &#039;&lt;EMAIL_SUBJECT&gt;&#039;,
1893    body: &#039;&lt;EMAIL_BODY&gt;&#039;
1894  }
1895});</code></pre>
1896                    </div>
1897                </div>
1898                            <div
1899                    class="api-code-tab-panel"
1900                    id="api-code-6ab48bee7fac7-tab-1"
1901                    data-tab="tab-1"
1902                    role="tabpanel"
1903                    aria-labelledby="api-code-6ab48bee7fac7-tab-button-1"
1904                    hidden                >
1905                    <div class="api-code-wrapper has-filename">
1906                                                <div class="api-code-filename">
1907                            <span>Ruby</span>
1908                        </div>
1909                        
1910                        <button
1911                            type="button"
1912                            class="api-code-copy-btn"
1913                            data-panel-id="api-code-6ab48bee7fac7-tab-1"
1914                            title="Copy code"
1915                            aria-label="Copy code"
1916                        >
1917                            <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
1918                                <path d="M13 5H7C6.44772 5 6 5.44772 6 6V12C6 12.5523 6.44772 13 7 13H13C13.5523 13 14 12.5523 14 12V6C14 5.44772 13.5523 5 13 5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1919                                <path d="M3 10H2C1.44772 10 1 9.55228 1 9V3C1 2.44772 1.44772 2 2 2H8C8.55228 2 9 2.44772 9 3V4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1920                            </svg>
1921                        </button>
1922
1923                                                <pre class="api-code-pre line-numbers" data-language="ruby" data-no-hljs="true"><code class="language-ruby nohighlight nohljsln" data-no-hljs="true">require &#039;nylas&#039;
1924
1925nylas = Nylas::Client.new(api_key: &quot;&lt;NYLAS_API_KEY&gt;&quot;)
1926
1927request_body = {
1928  subject: &#039;&lt;EMAIL_SUBJECT&gt;&#039;,
1929  body: &#039;&lt;EMAIL_BODY&gt;&#039;,
1930  to: [{ name: &#039;&lt;RECIPIENT_NAME&gt;&#039;, email: &#039;&lt;RECIPIENT_EMAIL&gt;&#039; }]
1931}
1932
1933email, response = nylas.messages.send(&#039;&lt;USER_GRANT_ID&gt;&#039;, request_body)</code></pre>
1934                    </div>
1935                </div>
1936                            <div
1937                    class="api-code-tab-panel"
1938                    id="api-code-6ab48bee7fac7-tab-2"
1939                    data-tab="tab-2"
1940                    role="tabpanel"
1941                    aria-labelledby="api-code-6ab48bee7fac7-tab-button-2"
1942                    hidden                >
1943                    <div class="api-code-wrapper has-filename">
1944                                                <div class="api-code-filename">
1945                            <span>Python</span>
1946                        </div>
1947                        
1948                        <button
1949                            type="button"
1950                            class="api-code-copy-btn"
1951                            data-panel-id="api-code-6ab48bee7fac7-tab-2"
1952                            title="Copy code"
1953                            aria-label="Copy code"
1954                        >
1955                            <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
1956                                <path d="M13 5H7C6.44772 5 6 5.44772 6 6V12C6 12.5523 6.44772 13 7 13H13C13.5523 13 14 12.5523 14 12V6C14 5.44772 13.5523 5 13 5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1957                                <path d="M3 10H2C1.44772 10 1 9.55228 1 9V3C1 2.44772 1.44772 2 2 2H8C8.55228 2 9 2.44772 9 3V4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1958                            </svg>
1959                        </button>
1960
1961                                                <pre class="api-code-pre line-numbers" data-language="python" data-no-hljs="true"><code class="language-python nohighlight nohljsln" data-no-hljs="true">from nylas import Client
1962nylas = Client(api_key=&#039;&lt;NYLAS_API_KEY&gt;&#039;)
1963message = nylas.messages.send(
1964    &#039;&lt;USER_GRANT_ID&gt;&#039;,
1965    request_body={
1966        &quot;to&quot;: [{ &quot;name&quot;: &#039;&lt;RECIPIENT_NAME&gt;&#039;, 
1967        &quot;email&quot;: &#039;&lt;RECIPIENT_EMAIL&gt;&#039; }],
1968        &quot;subject&quot;: &#039;&lt;EMAIL_SUBJECT&gt;&#039;,
1969        &quot;body&quot;: &#039;&lt;EMAIL_BODY&gt;&#039;
1970    }
1971)</code></pre>
1972                    </div>
1973                </div>
1974                            <div
1975                    class="api-code-tab-panel"
1976                    id="api-code-6ab48bee7fac7-tab-3"
1977                    data-tab="tab-3"
1978                    role="tabpanel"
1979                    aria-labelledby="api-code-6ab48bee7fac7-tab-button-3"
1980                    hidden                >
1981                    <div class="api-code-wrapper has-filename">
1982                                                <div class="api-code-filename">
1983                            <span>Kotlin</span>
1984                        </div>
1985                        
1986                        <button
1987                            type="button"
1988                            class="api-code-copy-btn"
1989                            data-panel-id="api-code-6ab48bee7fac7-tab-3"
1990                            title="Copy code"
1991                            aria-label="Copy code"
1992                        >
1993                            <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
1994                                <path d="M13 5H7C6.44772 5 6 5.44772 6 6V12C6 12.5523 6.44772 13 7 13H13C13.5523 13 14 12.5523 14 12V6C14 5.44772 13.5523 5 13 5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1995                                <path d="M3 10H2C1.44772 10 1 9.55228 1 9V3C1 2.44772 1.44772 2 2 2H8C8.55228 2 9 2.44772 9 3V4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1996                            </svg>
1997                        </button>
1998
1999                                                <pre class="api-code-pre line-numbers" data-language="kotlin" data-no-hljs="true"><code class="language-kotlin nohighlight nohljsln" data-no-hljs="true">import com.nylas.NylasClient
2000val nylas = NylasClient(apiKey = &#039;&lt;NYLAS_API_KEY&gt;&#039;)
2001
2002val recipients = listOf(EmailName(&#039;&lt;RECIPIENT_EMAIL&gt;&#039;, &#039;&lt;RECIPIENT_NAME&gt;&#039;))
2003
2004val requestBody = SendMessageRequest.Builder(recipients)
2005    .subject(&#039;&lt;EMAIL_SUBJECT&gt;&#039;)
2006    .body(&#039;&lt;EMAIL_BODY&gt;&#039;)
2007    .build()
2008
2009val emailResponse = nylas.messages().send(&#039;&lt;USER_GRANT_ID&gt;&#039;, requestBody)</code></pre>
2010                    </div>
2011                </div>
2012                            <div
2013                    class="api-code-tab-panel"
2014                    id="api-code-6ab48bee7fac7-tab-4"
2015                    data-tab="tab-4"
2016                    role="tabpanel"
2017                    aria-labelledby="api-code-6ab48bee7fac7-tab-button-4"
2018                    hidden                >
2019                    <div class="api-code-wrapper has-filename">
2020                                                <div class="api-code-filename">
2021                            <span>cURL</span>
2022                        </div>
2023                        
2024                        <button
2025                            type="button"
2026                            class="api-code-copy-btn"
2027                            data-panel-id="api-code-6ab48bee7fac7-tab-4"
2028                            title="Copy code"
2029                            aria-label="Copy code"
2030                        >
2031                            <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
2032                                <path d="M13 5H7C6.44772 5 6 5.44772 6 6V12C6 12.5523 6.44772 13 7 13H13C13.5523 13 14 12.5523 14 12V6C14 5.44772 13.5523 5 13 5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2033                                <path d="M3 10H2C1.44772 10 1 9.55228 1 9V3C1 2.44772 1.44772 2 2 2H8C8.55228 2 9 2.44772 9 3V4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2034                            </svg>
2035                        </button>
2036
2037                                                <pre class="api-code-pre line-numbers" data-language="bash" data-no-hljs="true"><code class="language-bash nohighlight nohljsln" data-no-hljs="true">curl --request POST \
2038  --url &quot;api.nylas.com/${&lt;USER_GRANT_ID&gt;}/messages/send&quot; \
2039  --header &quot;Authorization: Bearer ${NYLAS_API_KEY}&quot; \
2040  --header &quot;Content-Type: application/json&quot; \
2041  --data &#039;{
2042    &quot;subject&quot;: &quot;&lt;EMAIL_SUBJECT&gt;&quot;,
2043    &quot;body&quot;: &quot;&lt;EMAIL_BODY&gt;&quot;,
2044    &quot;to&quot;: [{&quot;name&quot;: &quot;&lt;RECIPIENT_NAME&gt;&quot;,
2045    &quot;email&quot;: &quot;&lt;RECIPIENT_EMAIL&gt;&quot;}]
2046  }&#039;</code></pre>
2047                    </div>
2048                </div>
2049                    </div>
2050    </div>
2051</div>
2052</div>        
2053                              <div class="product-feature-section__caption-row">
2054              <p>Attain <strong>higher deliverability</strong> by using contextual send.</p>
2055              
2056                          </div>
2057                      <div class="product-feature-section__caption-row">
2058              <p>Control all elements of your email data to make it <span class="gradient">AI-ready</span></p>
2059              
2060                          </div>
2061                        </div>
2062      
2063    </div>
2064  </div>
2065</section>
2066
2067
2068
2069
2070<section class="product-feature-section line-continue">
2071  <div class="container">
2072    <div class="product-feature-section__wrapper">
2073      
2074      <!-- Left: Text -->
2075      <div class="product-feature-section__text">
2076                  <h2><p><b>Calendar API</b> with bidirectional sync and a native Scheduler</p>
2077</h2>
2078                
2079                  <div class="body-copy"><p>Google, Microsoft, Exchange, and iCloud through one schema. Embeddable booking components, plus Virtual Calendars for rooms and equipment that have no provider account.</p>
2080</div>
2081                
2082        <div class="product-feature-section__buttons">
2083                      <a href="https://www.nylas.com/products/calendar-api/" 
2084               target="_self" 
2085               class="btn-primary">
2086              Learn more            </a>
2087                    
2088                  </div>
2089      </div>
2090      
2091      <!-- Right: Media -->
2092      <div class="product-feature-section__media">
2093                      <div class="calendar-widget" id="calendar-widget-6ab48bee7fd5a">
2094                <!-- Left Panel: Calendar List -->
2095                <div class="calendar-widget__left">
2096                  <div class="calendar-widget__left-inner">
2097                    <h3 class="calendar-widget__title">Calendar</h3>
2098                    
2099                    <div class="calendar-widget__tabs">
2100                      <button class="calendar-widget__tab active" data-view="agenda">Agenda</button>
2101                      <button class="calendar-widget__tab" data-view="day">Day</button>
2102                      <button class="calendar-widget__tab" data-view="week">Week</button>
2103                      <button class="calendar-widget__tab" data-view="month">Month</button>
2104                      <button class="calendar-widget__tab" data-view="year">Year</button>
2105                    </div>
2106                    
2107                    <div class="calendar-widget__events">
2108                      <h4 class="calendar-widget__events-title">Upcoming Events</h4>
2109                      <div class="calendar-widget__events-list">
2110                        <!-- Events will be populated by JavaScript -->
2111                      </div>
2112                    </div>
2113                  </div>
2114                </div>
2115                
2116                <!-- Right Panel: Event Form -->
2117                <div class="calendar-widget__right">
2118                  <div class="calendar-widget__right-inner">
2119                    <div class="calendar-widget__form">
2120                    <input type="text" class="calendar-widget__input calendar-widget__input--title" placeholder="Event Title" readonly>
2121                    
2122                    <div class="calendar-widget__row">
2123                      <div class="calendar-widget__field calendar-widget__field--icon">
2124                        <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2125                          <circle cx="10" cy="10" r="9" stroke="#9CA3AF" stroke-width="1.5"/>
2126                          <path d="M10 5V10L13 13" stroke="#9CA3AF" stroke-width="1.5" stroke-linecap="round"/>
2127                        </svg>
2128                        <div class="calendar-widget__date-inputs">
2129                          <span class="calendar-widget__date-value">2024-12-04</span>
2130                          <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2131                            <rect x="1" y="2" width="14" height="13" rx="2" stroke="#9CA3AF" stroke-width="1.5"/>
2132                            <path d="M1 6H15" stroke="#9CA3AF" stroke-width="1.5"/>
2133                            <path d="M5 1V3" stroke="#9CA3AF" stroke-width="1.5" stroke-linecap="round"/>
2134                            <path d="M11 1V3" stroke="#9CA3AF" stroke-width="1.5" stroke-linecap="round"/>
2135                          </svg>
2136                        </div>
2137                        <label class="calendar-widget__checkbox">
2138                          <input type="checkbox" disabled>
2139                          <span>All day</span>
2140                        </label>
2141                      </div>
2142                    </div>
2143                    
2144                    <div class="calendar-widget__row">
2145                      <div class="calendar-widget__time-group">
2146                        <span class="calendar-widget__time-input">10:00 am</span>
2147                        <span class="calendar-widget__time-separator">—</span>
2148                        <span class="calendar-widget__time-input">11:00 am</span>
2149                      </div>
2150                      <span class="calendar-widget__repeat">Does not repeat</span>
2151                    </div>
2152                    
2153                    <div class="calendar-widget__row calendar-widget__row--icon">
2154                      <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2155                        <circle cx="5" cy="7" r="2.5" stroke="#9CA3AF" stroke-width="1.5"/>
2156                        <circle cx="15" cy="7" r="2.5" stroke="#9CA3AF" stroke-width="1.5"/>
2157                        <circle cx="10" cy="13" r="2.5" stroke="#9CA3AF" stroke-width="1.5"/>
2158                      </svg>
2159                      <input type="text" class="calendar-widget__input" placeholder="Participant email" readonly>
2160                    </div>
2161                    
2162                    <div class="calendar-widget__row calendar-widget__row--icon">
2163                      <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2164                        <circle cx="10" cy="10" r="9" stroke="#9CA3AF" stroke-width="1.5"/>
2165                        <circle cx="10" cy="10" r="3" fill="#9CA3AF"/>
2166                      </svg>
2167                      <div class="calendar-widget__meeting">
2168                        <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/9/9b/Google_Meet_icon_%282020%29.svg" alt="Google Meet" width="24" height="24">
2169                        <span>Google Meet</span>
2170                      </div>
2171                    </div>
2172                    
2173                    <div class="calendar-widget__row calendar-widget__notetaker">
2174                      <span>Invite Nylas Notetaker</span>
2175                      <label class="calendar-widget__toggle">
2176                        <input type="checkbox" checked disabled>
2177                        <span class="calendar-widget__toggle-slider"></span>
2178                      </label>
2179                      <span class="calendar-widget__toggle-label">Invite to join</span>
2180                    </div>
2181                    
2182                    <div class="calendar-widget__row calendar-widget__row--icon">
2183                      <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2184                        <rect x="2" y="2" width="16" height="16" rx="2" stroke="#9CA3AF" stroke-width="1.5"/>
2185                        <path d="M6 6H14" stroke="#9CA3AF" stroke-width="1.5" stroke-linecap="round"/>
2186                        <path d="M6 10H14" stroke="#9CA3AF" stroke-width="1.5" stroke-linecap="round"/>
2187                        <path d="M6 14H10" stroke="#9CA3AF" stroke-width="1.5" stroke-linecap="round"/>
2188                      </svg>
2189                      <div class="calendar-widget__organizer">
2190                        <span>[email protected]</span>
2191                        <span class="calendar-widget__organizer-meta">Busy · Default visibility · Notify 10 minutes before</span>
2192                      </div>
2193                    </div>
2194                    
2195                    <div class="calendar-widget__row calendar-widget__row--icon">
2196                      <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2197                        <path d="M3 5H17" stroke="#9CA3AF" stroke-width="1.5" stroke-linecap="round"/>
2198                        <path d="M3 10H17" stroke="#9CA3AF" stroke-width="1.5" stroke-linecap="round"/>
2199                        <path d="M3 15H12" stroke="#9CA3AF" stroke-width="1.5" stroke-linecap="round"/>
2200                      </svg>
2201                      <input type="text" class="calendar-widget__input" placeholder="Description" readonly>
2202                    </div>
2203                    
2204                    <button class="calendar-widget__submit">Create Event</button>
2205                  </div>
2206                  </div>
2207                </div>
2208              </div>
2209              
2210              
2210<script>
2211              (function() {
2212                var container = document.getElementById('calendar-widget-6ab48bee7fd5a');
2213                if (!container) return;
2214                
2215                var eventsData = {"agenda":[{"event_title":"Team Meeting","event_date":"Nov 5, 2025 at 10:00 AM","event_duration":"60 min","event_color":"magenta","event_view":"agenda"},{"event_title":"Project Review","event_date":"Nov 5, 2025 at 2:00 PM","event_duration":"90 min","event_color":"blue","event_view":"agenda"},{"event_title":"Client Call","event_date":"Nov 6, 2025 at 11:00 AM","event_duration":"45 min","event_color":"pink","event_view":"agenda"}],"day":[{"event_title":"Morning Standup","event_date":"9:00 AM","event_duration":"15 min","event_color":"magenta","event_view":"day"},{"event_title":"Product Demo","event_date":"11:30 AM","event_duration":"45 min","event_color":"blue","event_view":"day"},{"event_title":"Lunch & Learn","event_date":"12:30 PM","event_duration":"60 min","event_color":"pink","event_view":"day"}],"week":[{"event_title":"Sprint Planning","event_date":"Monday at 10:00 AM","event_duration":"2 hours","event_color":"magenta","event_view":"week"},{"event_title":"Design Sync","event_date":"Wednesday at 2:00 PM","event_duration":"60 min","event_color":"blue","event_view":"week"},{"event_title":"Friday Retrospective","event_date":"Friday at 4:00 PM","event_duration":"45 min","event_color":"pink","event_view":"week"}],"month":[{"event_title":"Q1 Kickoff","event_date":"January 15, 2026","event_duration":"All day","event_color":"magenta","event_view":"month"},{"event_title":"Team Offsite","event_date":"January 22-23, 2026","event_duration":"2 days","event_color":"blue","event_view":"month"},{"event_title":"Board Meeting","event_date":"January 28, 2026","event_duration":"3 hours","event_color":"pink","event_view":"month"}],"year":[{"event_title":"Annual Conference","event_date":"March 2026","event_duration":"3 days","event_color":"magenta","event_view":"year"},{"event_title":"Summer Hackathon","event_date":"June 2026","event_duration":"1 week","event_color":"blue","event_view":"year"},{"event_title":"Company Retreat","event_date":"September 2026","event_duration":"4 days","event_color":"pink","event_view":"year"}]};
2216                var tabs = container.querySelectorAll('.calendar-widget__tab');
2217                var eventsList = container.querySelector('.calendar-widget__events-list');
2218                
2219                function renderEvents(view) {
2220                  var events = eventsData[view] || [];
2221                  var html = '';
2222                  
2223                  if (events.length === 0) {
2224                    html = '<p class="calendar-widget__no-events">No events for this view</p>';
2225                  } else {
2226                    events.forEach(function(event) {
2227                      var colorClass = 'calendar-widget__event--' + (event.event_color || 'magenta');
2228                      html += '<div class="calendar-widget__event ' + colorClass + '">';
2229                      html += '<div class="calendar-widget__event-content">';
2230                      html += '<h5 class="calendar-widget__event-title">' + event.event_title + '</h5>';
2231                      html += '<p class="calendar-widget__event-meta">' + event.event_date + ' · ' + event.event_duration + '</p>';
2232                      html += '</div>';
2233                      html += '</div>';
2234                    });
2235                  }
2236                  
2237                  eventsList.innerHTML = html;
2238                }
2239                
2240                tabs.forEach(function(tab) {
2241                  tab.addEventListener('click', function() {
2242                    // Update active tab
2243                    tabs.forEach(function(t) { t.classList.remove('active'); });
2244                    tab.classList.add('active');
2245                    
2246                    // Render events for selected view
2247                    var view = tab.getAttribute('data-view');
2248                    renderEvents(view);
2249                  });
2250                });
2251                
2252                // Initial render
2253                renderEvents('agenda');
2254              })();
2255              </script>
2255
2256                      
2257                              <div class="product-feature-section__caption-row">
2258              <p>Ready-to-use Scheduler that gives you <br />
2259<strong>industry-leading scheduling</strong> right in your application</p>
2260              
2261                          </div>
2262                        </div>
2263      
2264    </div>
2265  </div>
2266</section>
2267
2268
2269
2270
2271<section class="product-feature-section line-continue">
2272  <div class="container">
2273    <div class="product-feature-section__wrapper">
2274      
2275      <!-- Left: Text -->
2276      <div class="product-feature-section__text">
2277                  <h2><p><b>Agent Accounts</b> give your agent an inbox and a calendar</p>
2278</h2>
2279                
2280                  <div class="body-copy"><p>Provision both in one API call, hosted by Nylas. Your agent sends, receives, files, and books as [email protected], on an identity your application owns. The mailbox reads and sends across Gmail, Outlook, and IMAP alike, not just one provider.</p>
2281</div>
2282                
2283        <div class="product-feature-section__buttons">
2284                      <a href="https://www.nylas.com/products/agent-accounts" 
2285               target="_self" 
2286               class="btn-primary">
2287              Learn more            </a>
2288                    
2289                  </div>
2290      </div>
2291      
2292      <!-- Right: Media -->
2293      <div class="product-feature-section__media">
2294        <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Screenshot-2026-08-06-at-12.13.43-PM.png" alt="" />        
2295                              <div class="product-feature-section__caption-row">
2296              <p><strong>Owned identity for every agent<br />
2297</strong>(so your agent sends as itself, not as one of your users)</p>
2298              
2299                          </div>
2300                        </div>
2301      
2302    </div>
2303  </div>
2304</section>
2305
2306
2307
2308
2309<section class="product-feature-section line-continue">
2310  <div class="container">
2311    <div class="product-feature-section__wrapper">
2312      
2313      <!-- Left: Text -->
2314      <div class="product-feature-section__text">
2315                  <h2><p><b>Notetaker API</b> turns meetings into structured data</p>
2316</h2>
2317                
2318                  <div class="body-copy"><p>A managed bot joins Google Meet, Teams, and Zoom, then delivers recordings, speaker-labeled transcripts, summaries, and action items by webhook. 99% join success rate.</p>
2319</div>
2320                
2321        <div class="product-feature-section__buttons">
2322                      <a href="https://www.nylas.com/products/notetaker-api/" 
2323               target="_self" 
2324               class="btn-primary">
2325              Learn more            </a>
2326                    
2327                  </div>
2328      </div>
2329      
2330      <!-- Right: Media -->
2331      <div class="product-feature-section__media">
2332        <div class="dual-media" id="dual-media-6ab48bee81529"><div class="dual-media__item"><img decoding="async" src="https://www.nylas.com/wp-content/uploads/Group-10123046.gif" alt="" /></div><div class="dual-media__item"><div class="dual-media__video-wrapper"><img decoding="async" class="dual-media__poster" src="https://www.nylas.com/wp-content/uploads/Video-Thumbnail.png" alt="" /><video class="dual-media__video" muted loop playsinline preload="none" data-src="https://www.nylas.com/wp-content/uploads/Video-Recording-Call.mp4" poster="https://www.nylas.com/wp-content/uploads/Video-Thumbnail.png"></video></div></div></div>              
2332<script>
2333              (function() {
2334                var container = document.getElementById('dual-media-6ab48bee81529');
2335                if (!container) return;
2336                
2337                var videos = container.querySelectorAll('.dual-media__video');
2338                if (!videos.length) return;
2339                
2340                function loadVideos() {
2341                  videos.forEach(function(video) {
2342                    var src = video.getAttribute('data-src');
2343                    if (!src) return;
2344                    
2345                    video.src = src;
2346                    video.load();
2347                    
2348                    video.addEventListener('canplay', function() {
2349                      video.classList.add('loaded');
2350                      video.play().catch(function() {});
2351                      var poster = video.parentElement.querySelector('.dual-media__poster');
2352                      if (poster) poster.classList.add('hidden');
2353                    });
2354                    
2355                    // Fallback timeout
2356                    setTimeout(function() {
2357                      if (!video.classList.contains('loaded')) {
2358                        video.classList.add('loaded');
2359                        video.play().catch(function() {});
2360                        var poster = video.parentElement.querySelector('.dual-media__poster');
2361                        if (poster) poster.classList.add('hidden');
2362                      }
2363                    }, 5000);
2364                  });
2365                }
2366                
2367                if (document.readyState === 'complete') {
2368                  setTimeout(loadVideos, 100);
2369                } else {
2370                  window.addEventListener('load', function() {
2371                    setTimeout(loadVideos, 100);
2372                  });
2373                }
2374              })();
2375              </script>
2375
2376                      
2377                              <div class="product-feature-section__caption-row">
2378              <p><strong>Notetaker Calendar Sync</strong><br />
2379(So that your Notetaker shows up when you want and where you want)</p>
2380              
2381                          </div>
2382                        </div>
2383      
2384    </div>
2385  </div>
2386</section>
2387
2388
2389
2390
2391<section class="product-feature-section line-continue">
2392  <div class="container">
2393    <div class="product-feature-section__wrapper">
2394      
2395      <!-- Left: Text -->
2396      <div class="product-feature-section__text">
2397                  <h2><p>We handle the hard stuff, OAuth, integrations, and normalization.</p>
2398</h2>
2399                
2400                  <div class="body-copy"><p>Connecting to Google and Microsoft OAuth is notoriously painful. Nylas walks you through it, manages tokens, and abstracts away provider differences, giving you one API to access email, calendar, and conferencing data across every major platform. The same connection powers your AI tools too. Our MCP server plugs into Claude Code, Cursor, and any other MCP-compatible client, so your agent gets the same cross-provider access your product does.</p>
2401</div>
2402                
2403        <div class="product-feature-section__buttons">
2404                      <a href="https://www.nylas.com/integrations/" 
2405               target="_self" 
2406               class="btn-primary">
2407              Explore integrations            </a>
2408                    
2409                      <a href="https://developer.nylas.com/docs/v3/auth/" 
2410               target="_self" 
2411               class="btn-secondary">
2412              View OAuth Docs              <svg class="btn-arrow-icon" width="16" height="14" viewBox="0 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.8999 6.8999L8.8999 12.8999M14.8999 6.8999L8.8999 0.899902M14.8999 6.8999L0.899902 6.8999" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>
2413            </a>
2414                  </div>
2415      </div>
2416      
2417      <!-- Right: Media -->
2418      <div class="product-feature-section__media">
2419        <div class="icon-grid"><div class="icon-grid__cell"><img decoding="async" src="https://www.nylas.com/wp-content/uploads/Google.svg" alt="" /></div><div class="icon-grid__cell"><img decoding="async" src="https://www.nylas.com/wp-content/uploads/Microsoft.svg" alt="" /></div><div class="icon-grid__cell"><img decoding="async" src="https://www.nylas.com/wp-content/uploads/IMAP.svg" alt="" /></div><div class="icon-grid__cell"><img decoding="async" src="https://www.nylas.com/wp-content/uploads/Gmail.svg" alt="" /></div><div class="icon-grid__cell"><img decoding="async" src="https://www.nylas.com/wp-content/uploads/Microsoft-Outlook.svg" alt="" /></div><div class="icon-grid__cell"><img decoding="async" src="https://www.nylas.com/wp-content/uploads/iCloud.svg" alt="" /></div><div class="icon-grid__cell"><img decoding="async" src="https://www.nylas.com/wp-content/uploads/Google-Meet.svg" alt="" /></div><div class="icon-grid__cell"><img decoding="async" src="https://www.nylas.com/wp-content/uploads/Microsoft-Teams.svg" alt="" /></div><div class="icon-grid__cell"><img decoding="async" src="https://www.nylas.com/wp-content/uploads/Zoom-Meetings.svg" alt="" /></div></div>        
2420              </div>
2421      
2422    </div>
2423  </div>
2424</section>
2425
2426
2427
2428
2429<section class="infrastructure-trust-section">
2430  <div class="container">
2431    
2432    <!-- Centered Header -->
2433    <div class="infrastructure-trust__header">
2434              <h2 id="the-infrastructure-trusted-by-the-worlds-best-builders">The infrastructure trusted by the world’s best builders.</h2>
2435            
2436            
2437      <div class="infrastructure-trust__header-buttons">
2438                  <a href="https://developer.nylas.com/" 
2439             target="_self" 
2440             class="btn-primary">
2441            See the docs          </a>
2442                
2443                  <a href="https://dashboard-v3.nylas.com/login" 
2444             target="_self" 
2445             class="btn-secondary">
2446            Get your API key            <svg class="btn-arrow-icon" width="16" height="14" viewBox="0 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.8999 6.8999L8.8999 12.8999M14.8999 6.8999L8.8999 0.899902M14.8999 6.8999L0.899902 6.8999" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>
2447          </a>
2448              </div>
2449    </div>
2450    
2451    <!-- Two Column Layout -->
2452    <div class="infrastructure-trust__content">
2453      
2454      <!-- Left Column -->
2455      <div class="infrastructure-trust__left">
2456                  <div class="infrastructure-trust__intro">
2457                          <h3>The best developers in the world use Nylas </h3>
2458                                      <p>to handle authentication, synchronization, and data normalization across 250+ providers, freeing them to build world-class applications with speed and precision.</p>
2459                      </div>
2460                
2461                  <div class="infrastructure-trust__grid">
2462                          <div class="grid-item">
2463                                  <h4>Seamless authentication</h4>
2464                                                  <p>Handle OAuth across hundreds of providers with zero friction.</p>
2465                              </div>
2466                          <div class="grid-item">
2467                                  <h4>Enterprise reliability</h4>
2468                                                  <p>SOC 2–compliant infrastructure built to scale with your app.</p>
2469                              </div>
2470                          <div class="grid-item">
2471                                  <h4>Modern SDKs &amp; MCP</h4>
2472                                                  <p>Get up and running in minutes. One install and one API call, or connect any MCP client and give your agent 36 typed tools for email, calendar, contacts, and Notetaker.</p>
2473                              </div>
2474                          <div class="grid-item">
2475                                  <h4>Powerful webhooks</h4>
2476                                                  <p>Stay in sync with every event in real time, no polling, no complexity.</p>
2477                              </div>
2478                          <div class="grid-item">
2479                                  <h4>Developer dashboard</h4>
2480                                                  <p>Monitor, manage, and test your integrations, all in one place.</p>
2481                              </div>
2482                          <div class="grid-item">
2483                                  <h4>Sandbox environments</h4>
2484                                                  <p>Prototype safely and test confidently before going live.</p>
2485                              </div>
2486                      </div>
2487              </div>
2488      
2489      <!-- Right Column -->
2490      <div class="infrastructure-trust__right">
2491                  <div class="infrastructure-trust__custom-block">
2492            
2493<div
2494    id="api-code-6ab48bee867d8"
2495    class="api-code-showcase-block"
2496    data-variant="default"
2497    style="--bg-color: #000000; --text-color: #ffffff; --accent-color: #ffffff;"
2498>
2499    
2500    <div class="api-code-tabs">
2501                <div class="api-code-tabs-nav" role="tablist">
2502                                            <button
2503                    id="api-code-6ab48bee867d8-tab-button-0"
2504                    type="button"
2505                    class="api-code-tab-button active"
2506                    data-tab="tab-0"
2507                    data-block-id="api-code-6ab48bee867d8"
2508                    role="tab"
2509                    aria-controls="api-code-6ab48bee867d8-tab-0"
2510                    aria-selected="true"
2511                    tabindex="0"
2512                >
2513                    NodeJS                </button>
2514                                            <button
2515                    id="api-code-6ab48bee867d8-tab-button-1"
2516                    type="button"
2517                    class="api-code-tab-button"
2518                    data-tab="tab-1"
2519                    data-block-id="api-code-6ab48bee867d8"
2520                    role="tab"
2521                    aria-controls="api-code-6ab48bee867d8-tab-1"
2522                    aria-selected="false"
2523                    tabindex="-1"
2524                >
2525                    Ruby                </button>
2526                                            <button
2527                    id="api-code-6ab48bee867d8-tab-button-2"
2528                    type="button"
2529                    class="api-code-tab-button"
2530                    data-tab="tab-2"
2531                    data-block-id="api-code-6ab48bee867d8"
2532                    role="tab"
2533                    aria-controls="api-code-6ab48bee867d8-tab-2"
2534                    aria-selected="false"
2535                    tabindex="-1"
2536                >
2537                    Python                </button>
2538                                            <button
2539                    id="api-code-6ab48bee867d8-tab-button-3"
2540                    type="button"
2541                    class="api-code-tab-button"
2542                    data-tab="tab-3"
2543                    data-block-id="api-code-6ab48bee867d8"
2544                    role="tab"
2545                    aria-controls="api-code-6ab48bee867d8-tab-3"
2546                    aria-selected="false"
2547                    tabindex="-1"
2548                >
2549                    Kotlin                </button>
2550                                            <button
2551                    id="api-code-6ab48bee867d8-tab-button-4"
2552                    type="button"
2553                    class="api-code-tab-button"
2554                    data-tab="tab-4"
2555                    data-block-id="api-code-6ab48bee867d8"
2556                    role="tab"
2557                    aria-controls="api-code-6ab48bee867d8-tab-4"
2558                    aria-selected="false"
2559                    tabindex="-1"
2560                >
2561                    cURL                </button>
2562                    </div>
2563        
2564        <div class="api-code-tabs-content">
2565                            <div
2566                    class="api-code-tab-panel active"
2567                    id="api-code-6ab48bee867d8-tab-0"
2568                    data-tab="tab-0"
2569                    role="tabpanel"
2570                    aria-labelledby="api-code-6ab48bee867d8-tab-button-0"
2571                                    >
2572                    <div class="api-code-wrapper has-filename">
2573                                                <div class="api-code-filename">
2574                            <span>NodeJS</span>
2575                        </div>
2576                        
2577                        <button
2578                            type="button"
2579                            class="api-code-copy-btn"
2580                            data-panel-id="api-code-6ab48bee867d8-tab-0"
2581                            title="Copy code"
2582                            aria-label="Copy code"
2583                        >
2584                            <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
2585                                <path d="M13 5H7C6.44772 5 6 5.44772 6 6V12C6 12.5523 6.44772 13 7 13H13C13.5523 13 14 12.5523 14 12V6C14 5.44772 13.5523 5 13 5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2586                                <path d="M3 10H2C1.44772 10 1 9.55228 1 9V3C1 2.44772 1.44772 2 2 2H8C8.55228 2 9 2.44772 9 3V4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2587                            </svg>
2588                        </button>
2589
2590                                                <pre class="api-code-pre line-numbers" data-language="javascript" data-no-hljs="true"><code class="language-javascript nohighlight nohljsln" data-no-hljs="true">import Nylas from &#039;nylas&#039;;
2591
2592const nylas = new Nylas({ apiKey: &#039;&lt;NYLAS_API_KEY&gt;&#039; });
2593const sentMessage = await nylas.messages.send({
2594 identifier: &lt;USER_GRANT_ID&gt;
2595  requestBody: {
2596    to: [{ name: &#039;&lt;RECIPIENT_NAME&gt;&#039;, email: &#039;&lt;RECIPIENT_EMAIL&gt;&#039; }],
2597    subject: &#039;&lt;EMAIL_SUBJECT&gt;&#039;,
2598    body: &#039;&lt;EMAIL_BODY&gt;&#039;
2599  }
2600});</code></pre>
2601                    </div>
2602                </div>
2603                            <div
2604                    class="api-code-tab-panel"
2605                    id="api-code-6ab48bee867d8-tab-1"
2606                    data-tab="tab-1"
2607                    role="tabpanel"
2608                    aria-labelledby="api-code-6ab48bee867d8-tab-button-1"
2609                    hidden                >
2610                    <div class="api-code-wrapper has-filename">
2611                                                <div class="api-code-filename">
2612                            <span>Ruby</span>
2613                        </div>
2614                        
2615                        <button
2616                            type="button"
2617                            class="api-code-copy-btn"
2618                            data-panel-id="api-code-6ab48bee867d8-tab-1"
2619                            title="Copy code"
2620                            aria-label="Copy code"
2621                        >
2622                            <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
2623                                <path d="M13 5H7C6.44772 5 6 5.44772 6 6V12C6 12.5523 6.44772 13 7 13H13C13.5523 13 14 12.5523 14 12V6C14 5.44772 13.5523 5 13 5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2624                                <path d="M3 10H2C1.44772 10 1 9.55228 1 9V3C1 2.44772 1.44772 2 2 2H8C8.55228 2 9 2.44772 9 3V4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2625                            </svg>
2626                        </button>
2627
2628                                                <pre class="api-code-pre line-numbers" data-language="ruby" data-no-hljs="true"><code class="language-ruby nohighlight nohljsln" data-no-hljs="true">require &#039;nylas&#039;
2629
2630nylas = Nylas::Client.new(api_key: &quot;&lt;NYLAS_API_KEY&gt;&quot;)
2631
2632request_body = {
2633  subject: &#039;&lt;EMAIL_SUBJECT&gt;&#039;,
2634  body: &#039;&lt;EMAIL_BODY&gt;&#039;,
2635  to: [{ name: &#039;&lt;RECIPIENT_NAME&gt;&#039;, email: &#039;&lt;RECIPIENT_EMAIL&gt;&#039; }]
2636}
2637
2638email, response = nylas.messages.send(&#039;&lt;USER_GRANT_ID&gt;&#039;, request_body)</code></pre>
2639                    </div>
2640                </div>
2641                            <div
2642                    class="api-code-tab-panel"
2643                    id="api-code-6ab48bee867d8-tab-2"
2644                    data-tab="tab-2"
2645                    role="tabpanel"
2646                    aria-labelledby="api-code-6ab48bee867d8-tab-button-2"
2647                    hidden                >
2648                    <div class="api-code-wrapper has-filename">
2649                                                <div class="api-code-filename">
2650                            <span>Python</span>
2651                        </div>
2652                        
2653                        <button
2654                            type="button"
2655                            class="api-code-copy-btn"
2656                            data-panel-id="api-code-6ab48bee867d8-tab-2"
2657                            title="Copy code"
2658                            aria-label="Copy code"
2659                        >
2660                            <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
2661                                <path d="M13 5H7C6.44772 5 6 5.44772 6 6V12C6 12.5523 6.44772 13 7 13H13C13.5523 13 14 12.5523 14 12V6C14 5.44772 13.5523 5 13 5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2662                                <path d="M3 10H2C1.44772 10 1 9.55228 1 9V3C1 2.44772 1.44772 2 2 2H8C8.55228 2 9 2.44772 9 3V4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2663                            </svg>
2664                        </button>
2665
2666                                                <pre class="api-code-pre line-numbers" data-language="python" data-no-hljs="true"><code class="language-python nohighlight nohljsln" data-no-hljs="true">from nylas import Client
2667nylas = Client(api_key=&#039;&lt;NYLAS_API_KEY&gt;&#039;)
2668message = nylas.messages.send(
2669    &#039;&lt;USER_GRANT_ID&gt;&#039;,
2670    request_body={
2671        &quot;to&quot;: [{ &quot;name&quot;: &#039;&lt;RECIPIENT_NAME&gt;&#039;, 
2672        &quot;email&quot;: &#039;&lt;RECIPIENT_EMAIL&gt;&#039; }],
2673        &quot;subject&quot;: &#039;&lt;EMAIL_SUBJECT&gt;&#039;,
2674        &quot;body&quot;: &#039;&lt;EMAIL_BODY&gt;&#039;
2675    }
2676)</code></pre>
2677                    </div>
2678                </div>
2679                            <div
2680                    class="api-code-tab-panel"
2681                    id="api-code-6ab48bee867d8-tab-3"
2682                    data-tab="tab-3"
2683                    role="tabpanel"
2684                    aria-labelledby="api-code-6ab48bee867d8-tab-button-3"
2685                    hidden                >
2686                    <div class="api-code-wrapper has-filename">
2687                                                <div class="api-code-filename">
2688                            <span>Kotlin</span>
2689                        </div>
2690                        
2691                        <button
2692                            type="button"
2693                            class="api-code-copy-btn"
2694                            data-panel-id="api-code-6ab48bee867d8-tab-3"
2695                            title="Copy code"
2696                            aria-label="Copy code"
2697                        >
2698                            <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
2699                                <path d="M13 5H7C6.44772 5 6 5.44772 6 6V12C6 12.5523 6.44772 13 7 13H13C13.5523 13 14 12.5523 14 12V6C14 5.44772 13.5523 5 13 5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2700                                <path d="M3 10H2C1.44772 10 1 9.55228 1 9V3C1 2.44772 1.44772 2 2 2H8C8.55228 2 9 2.44772 9 3V4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2701                            </svg>
2702                        </button>
2703
2704                                                <pre class="api-code-pre line-numbers" data-language="kotlin" data-no-hljs="true"><code class="language-kotlin nohighlight nohljsln" data-no-hljs="true">import com.nylas.NylasClient
2705val nylas = NylasClient(apiKey = &#039;&lt;NYLAS_API_KEY&gt;&#039;)
2706
2707val recipients = listOf(EmailName(&#039;&lt;RECIPIENT_EMAIL&gt;&#039;, &#039;&lt;RECIPIENT_NAME&gt;&#039;))
2708
2709val requestBody = SendMessageRequest.Builder(recipients)
2710    .subject(&#039;&lt;EMAIL_SUBJECT&gt;&#039;)
2711    .body(&#039;&lt;EMAIL_BODY&gt;&#039;)
2712    .build()
2713
2714val emailResponse = nylas.messages().send(&#039;&lt;USER_GRANT_ID&gt;&#039;, requestBody)</code></pre>
2715                    </div>
2716                </div>
2717                            <div
2718                    class="api-code-tab-panel"
2719                    id="api-code-6ab48bee867d8-tab-4"
2720                    data-tab="tab-4"
2721                    role="tabpanel"
2722                    aria-labelledby="api-code-6ab48bee867d8-tab-button-4"
2723                    hidden                >
2724                    <div class="api-code-wrapper has-filename">
2725                                                <div class="api-code-filename">
2726                            <span>cURL</span>
2727                        </div>
2728                        
2729                        <button
2730                            type="button"
2731                            class="api-code-copy-btn"
2732                            data-panel-id="api-code-6ab48bee867d8-tab-4"
2733                            title="Copy code"
2734                            aria-label="Copy code"
2735                        >
2736                            <svg width="14" height="14" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
2737                                <path d="M13 5H7C6.44772 5 6 5.44772 6 6V12C6 12.5523 6.44772 13 7 13H13C13.5523 13 14 12.5523 14 12V6C14 5.44772 13.5523 5 13 5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2738                                <path d="M3 10H2C1.44772 10 1 9.55228 1 9V3C1 2.44772 1.44772 2 2 2H8C8.55228 2 9 2.44772 9 3V4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2739                            </svg>
2740                        </button>
2741
2742                                                <pre class="api-code-pre line-numbers" data-language="bash" data-no-hljs="true"><code class="language-bash nohighlight nohljsln" data-no-hljs="true">curl --request POST \
2743  --url &quot;api.nylas.com/${&lt;USER_GRANT_ID&gt;}/messages/send&quot; \
2744  --header &quot;Authorization: Bearer ${NYLAS_API_KEY}&quot; \
2745  --header &quot;Content-Type: application/json&quot; \
2746  --data &#039;{
2747    &quot;subject&quot;: &quot;&lt;EMAIL_SUBJECT&gt;&quot;,
2748    &quot;body&quot;: &quot;&lt;EMAIL_BODY&gt;&quot;,
2749    &quot;to&quot;: [{&quot;name&quot;: &quot;&lt;RECIPIENT_NAME&gt;&quot;,
2750    &quot;email&quot;: &quot;&lt;RECIPIENT_EMAIL&gt;&quot;}]
2751  }&#039;</code></pre>
2752                    </div>
2753                </div>
2754                    </div>
2755    </div>
2756</div>
2757          </div>
2758                
2759                  <div class="infrastructure-trust__stats">
2760                          <div class="stat-item">
2761                                  <div class="stat-number">34.5B+</div>
2762                                                  <p>API transactions and 200TB of data processed daily.</p>
2763                              </div>
2764                          <div class="stat-item">
2765                                  <div class="stat-number">99.99%</div>
2766                                                  <p>historical uptime for Nylas services.</p>
2767                              </div>
2768                          <div class="stat-item">
2769                                  <div class="stat-number">2X</div>
2770                                                  <p>Get your feature launched into production 2x faster.</p>
2771                              </div>
2772                      </div>
2773                
2774                  <div class="infrastructure-trust__security">
2775                          <h4>Security built into the foundation of our platform</h4>
2776                                      <p>Our enterprise-grade security is backed by compliance with industry-leading standards. For Google and Microsoft accounts, Nylas doesn&#039;t store your message or event data.</p>
2777                      </div>
2778                
2779                  <div class="infrastructure-trust__logos">
2780                                                            <div class="logo-item">
2781                    <img decoding="async" src="https://www.nylas.com/wp-content/uploads/nylas-email-and-calendar-api-HIPAA-1.png" 
2782                         alt="HIPAA" />
2783                  </div>
2784                                                                                          <div class="logo-item">
2785                    <img decoding="async" src="https://www.nylas.com/wp-content/uploads/nylas-email-and-calendar-api-ISO-1.png" 
2786                         alt="" />
2787                  </div>
2788                                                                                          <div class="logo-item">
2789                    <img decoding="async" src="https://www.nylas.com/wp-content/uploads/nylas-email-and-calendar-api-SOC2-1.png" 
2790                         alt="" />
2791                  </div>
2792                                                                                          <div class="logo-item">
2793                    <img decoding="async" src="https://www.nylas.com/wp-content/uploads/nylas-email-and-calendar-api-GDPR-1.png" 
2794                         alt="" />
2795                  </div>
2796                                                                                          <div class="logo-item">
2797                    <img decoding="async" src="https://www.nylas.com/wp-content/uploads/nylas-email-and-calendar-api-CCPA-1.png" 
2798                         alt="" />
2799                  </div>
2800                                                    </div>
2801              </div>
2802      
2803    </div>
2804  </div>
2805</section>
2806
2807
2808
2809
2810<section class="cta-testimonials-section">
2811  <div class="container">
2812    
2813    <!-- Centered Header -->
2814    <div class="cta-testimonials__header">
2815              <h2 id="start-building-for-free-upgrade-when-youre-ready">Start building for free; upgrade when you’re ready.</h2>
2816            
2817              <p class="subtitle">Get your API key and start integrating communications into your app in minutes.</p>
2818            
2819      <div class="cta-testimonials__header-buttons">
2820                  <a href="https://dashboard-v3.nylas.com/login" 
2821             target="_self" 
2822             class="btn-primary">
2823            Get your free API key          </a>
2824                
2825                  <a href="http://nylas.com/pricing" 
2826             target="_self" 
2827             class="btn-secondary">
2828            View plans            <svg class="btn-arrow-icon" width="16" height="14" viewBox="0 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.8999 6.8999L8.8999 12.8999M14.8999 6.8999L8.8999 0.899902M14.8999 6.8999L0.899902 6.8999" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg>
2829          </a>
2830              </div>
2831    </div>
2832    
2833    <!-- Features Row -->
2834          <div class="cta-testimonials__features">
2835                  <div class="feature-item">
2836                                      <span>No credit card required</span>
2837                      </div>
2838                  <div class="feature-item">
2839                                      <span>Free forever developer plan</span>
2840                      </div>
2841                  <div class="feature-item">
2842                                      <span>Full API access</span>
2843                      </div>
2844                  <div class="feature-item">
2845                                      <span>Instant setup</span>
2846                      </div>
2847              </div>
2848        
2849    <!-- Trusted By Text -->
2850          <div class="cta-testimonials__trusted">
2851        <p>Trusted by 1000+ companies</p>
2852      </div>
2853        
2854    <!-- Testimonials Grid -->
2855          <div class="cta-testimonials__grid">
2856                  <div class="testimonial-card">
2857            <!-- Left side: Company logo and quote -->
2858            <div class="testimonial-card__content">
2859                                              <div class="testimonial-logo">
2860                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Dialpad.svg" 
2861                         alt=""
2862                         class="light-mode-img" />
2863                                          <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Dialpad-White-Colour.svg" 
2864                           alt=""
2865                           class="dark-mode-img" />
2866                                                      </div>
2867                            
2868                              <blockquote>“One of the advantages of integrating with Nylas was how straightforward it was to sync contacts across multiple service providers and regardless of which version of Exchange our customers use.”</blockquote>
2869                          </div>
2870            
2871            <!-- Right side: Author info -->
2872            <div class="testimonial-author">
2873                              <img decoding="async" src="https://www.nylas.com/wp-content/uploads/SefanRoesch-Dialpad.png" 
2874                     alt="Stefan Roesch" 
2875                     class="author-photo" />
2876                            <div class="author-info">
2877                                  <strong>Stefan Roesch</strong>
2878                                                  <span>Software Engineer</span>
2879                              </div>
2880            </div>
2881          </div>
2882                  <div class="testimonial-card">
2883            <!-- Left side: Company logo and quote -->
2884            <div class="testimonial-card__content">
2885                                              <div class="testimonial-logo">
2886                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Clio.svg" 
2887                         alt=""
2888                         class="light-mode-img" />
2889                                          <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Clio-White.svg" 
2890                           alt=""
2891                           class="dark-mode-img" />
2892                                                      </div>
2893                            
2894                              <blockquote>“It would have cost us at least a year to build out just the Exchange and Google integration. By building on top of the Nylas API, the Clio team was able to focus on other core components of their CRM.”
</blockquote>
2895                          </div>
2896            
2897            <!-- Right side: Author info -->
2898            <div class="testimonial-author">
2899                              <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Aaron-George.png" 
2900                     alt="Aaron George " 
2901                     class="author-photo" />
2902                            <div class="author-info">
2903                                  <strong>Aaron George </strong>
2904                                                  <span>Co-founder of Lexicata  (acquired by Clio)</span>
2905                              </div>
2906            </div>
2907          </div>
2908                  <div class="testimonial-card">
2909            <!-- Left side: Company logo and quote -->
2910            <div class="testimonial-card__content">
2911                                              <div class="testimonial-logo">
2912                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Dayfor
2912ce-Logo-e1774623461671.png" 
2913                         alt=""
2914                         class="light-mode-img" />
2915                                          <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Dayforce-White.webp" 
2916                           alt=""
2917                           class="dark-mode-img" />
2918                                                      </div>
2919                            
2920                              <blockquote>“By partnering with Nylas we were able to solve technical obstacles that would’ve taken us a lot longer on our own and required a much larger investment of resources.”</blockquote>
2921                          </div>
2922            
2923            <!-- Right side: Author info -->
2924            <div class="testimonial-author">
2925                              <img decoding="async" src="https://www.nylas.com/wp-content/uploads/[email protected]" 
2926                     alt="John Whyte" 
2927                     class="author-photo" />
2928                            <div class="author-info">
2929                                  <strong>John Whyte</strong>
2930                                                  <span>Director of Product Management</span>
2931                              </div>
2932            </div>
2933          </div>
2934                  <div class="testimonial-card">
2935            <!-- Left side: Company logo and quote -->
2936            <div class="testimonial-card__content">
2937                                              <div class="testimonial-logo">
2938                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/TalentReef.svg" 
2939                         alt=""
2940                         class="light-mode-img" />
2941                                          <img decoding="async" src="https://www.nylas.com/wp-content/uploads/TalentReef-White.svg" 
2942                           alt=""
2943                           class="dark-mode-img" />
2944                                                      </div>
2945                            
2946                              <blockquote>“There’s no longer any disconnect with users copying and pasting information for scheduling or sending out manual emails. This has made a huge difference in response times.”</blockquote>
2947                          </div>
2948            
2949            <!-- Right side: Author info -->
2950            <div class="testimonial-author">
2951                              <img decoding="async" src="https://www.nylas.com/wp-content/uploads/alexander-plum.png" 
2952                     alt="Alexander Plumb" 
2953                     class="author-photo" />
2954                            <div class="author-info">
2955                                  <strong>Alexander Plumb</strong>
2956                                                  <span>Sr. Product Manager </span>
2957                              </div>
2958            </div>
2959          </div>
2960                  <div class="testimonial-card">
2961            <!-- Left side: Company logo and quote -->
2962            <div class="testimonial-card__content">
2963                                              <div class="testimonial-logo">
2964                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/RecruiterPM-logo-1-1.png" 
2965                         alt=""
2966                          />
2967                                                      </div>
2968                            
2969                              <blockquote>“Bringing multiple channels into a single hub powered by Nylas has been a goldmine for user communication.”</blockquote>
2970                          </div>
2971            
2972            <!-- Right side: Author info -->
2973            <div class="testimonial-author">
2974                              <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Daniel-Miller.webp" 
2975                     alt="Daniel Miller" 
2976                     class="author-photo" />
2977                            <div class="author-info">
2978                                  <strong>Daniel Miller</strong>
2979                                                  <span>Chief Product Officer</span>
2980                              </div>
2981            </div>
2982          </div>
2983                  <div class="testimonial-card">
2984            <!-- Left side: Company logo and quote -->
2985            <div class="testimonial-card__content">
2986                                              <div class="testimonial-logo">
2987                                      <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Foundersuite-2.png" 
2988                         alt=""
2989                         class="light-mode-img" />
2990                                          <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Foundersuite-White.png" 
2991                           alt=""
2992                           class="dark-mode-img" />
2993                                                      </div>
2994                            
2995                              <blockquote>&quot;We tried building our own Gmail integration, and it was always having issues. Moving to Nylas meant we could support both Gmail and Outlook users through one integration and reach virtually every founder on our platform.&quot;</blockquote>
2996                          </div>
2997            
2998            <!-- Right side: Author info -->
2999            <div class="testimonial-author">
3000                              <img decoding="async" src="https://www.nylas.com/wp-content/uploads/Nathan-Beckford.jpeg" 
3001                     alt="Nathan Beckord" 
3002                     class="author-photo" />
3003                            <div class="author-info">
3004                                  <strong>Nathan Beckord</strong>
3005                                                  <span>CEO, Foundersuite</span>
3006                              </div>
3007            </div>
3008          </div>
3009              </div>
3010        
3011  </div>
3012</section>
3013
3014
3015
3016
3017<!-- Font preconnect + stylesheet (faster than @import) -->
3018<link rel="preconnect" href="https://fonts.googleapis.com">
3019<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
3020<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@600&#038;family=Manrope:wght@400;600&#038;family=Poppins:wght@500&#038;display=swap">
3021<!-- Inline CSS for Portability -->
3022<style>
3023.cta-banner-section {
3024    position: relative;
3025    padding: 80px 0;
3026    min-height: 330px;
3027    display: flex;
3028    align-items: center;
3029    overflow: hidden;
3030    font-family: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
3031    z-index: 2;
3032}
3033
3034.cta-banner-section * {
3035    box-sizing: border-box;
3036}
3037
3038/* Background Image - always visible, acts as fallback for video */
3039.cta-banner__bg-image {
3040    position: absolute;
3041    top: 0;
3042    left: 0;
3043    width: 100%;
3044    height: 100%;
3045    background-size: cover;
3046    background-position: center center;
3047    z-index: 0;
3048}
3049
3050/* Video Background Container */
3051.cta-banner__video-container {
3052    position: absolute;
3053    top: 0;
3054    left: 0;
3055    width: 100%;
3056    height: 100%;
3057    z-index: 0;
3058    overflow: hidden;
3059}
3060
3061/* Video - hidden until loaded */
3062.cta-banner__video {
3063    position: absolute;
3064    top: 0;
3065    left: 0;
3066    width: 100%;
3067    height: 100%;
3068    object-fit: cover;
3069    object-position: center center;
3070    opacity: 0;
3071    transition: opacity 0.5s ease;
3072}
3073
3074.cta-banner__video--loaded {
3075    opacity: 1;
3076}
3077
3078.cta-banner__overlay {
3079    position: absolute;
3080    top: 0;
3081    left: 0;
3082    width: 100%;
3083    height: 100%;
3084    z-index: 1;
3085}
3086
3087/* Animated WebGL "veil" background canvas */
3088.cta-banner__veil {
3089    position: absolute;
3090    top: 0;
3091    left: 0;
3092    width: 100%;
3093    height: 100%;
3094    display: block;
3095    z-index: 0;
3096    border: 0;
3097    pointer-events: none;
3098}
3099
3100/* Container */
3101.cta-banner__container {
3102    position: relative;
3103    z-index: 2;
3104    width: 100%;
3105    max-width: 1200px;
3106    margin: 0 auto;
3107    padding: 0 24px;
3108}
3109
3110/* Content */
3111.cta-banner__content {
3112    text-align: center;
3113    max-width: 750px;
3114    margin: 0 auto;
3115    padding: 60px 0;
3116}
3117
3118.cta-banner-section .cta-banner__title,
3119.cta-banner__title,
3120.cta-banner__content h2 {
3121    font-family: 'Manrope', sans-serif !important;
3122    font-style: normal !important;
3123    font-weight: 600 !important;
3124    font-size: 55px !important;
3125    color: #ffffff !important;
3126    margin: 0 0 16px 0 !important;
3127    line-height: 1.2 !important;
3128    overflow-wrap: anywhere;
3129}
3130
3131.cta-banner__subtitle {
3132    font-family: 'Manrope', sans-serif;
3133    font-style: normal;
3134    font-weight: 400;
3135    font-size: 20px;
3136    line-height: 26px;
3137    color: #ffffff;
3138    margin: 0 0 50px 0;
3139}
3140
3141/* Buttons */
3142.cta-banner__buttons {
3143    display: flex;
3144    gap: 16px;
3145    justify-content: center;
3146    flex-wrap: wrap;
3147}
3148
3149/* Consistent pp-v2-btn styling (scoped + self-contained for portability) */
3150.cta-banner-section .pp-v2-btn {
3151    display: inline-flex;
3152    align-items: center;
3153    justify-content: center;
3154    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
3155    font-style: normal;
3156    font-weight: 600;
3157    font-size: 16px;
3158    line-height: 24px;
3159    letter-spacing: 0.2px;
3160    text-align: center;
3161    text-decoration: none;
3162    padding: 12px 30px;
3163    border-radius: 30px;
3164    white-space: nowrap;
3165    cursor: pointer;
3166    transition: opacity .15s, background-color .2s ease, color .2s ease, border-color .2s ease;
3167}
3168
3169.cta-banner-section .pp-v2-btn:hover {
3170    opacity: .85;
3171}
3172
3173.cta-banner-section .pp-v2-btn--primary {
3174    background: #ffffff;
3175    color: #000000;
3176    border: none;
3177    min-width: 186px;
3178}
3179
3180.cta-banner-section .pp-v2-btn--primary:hover {
3181    background: #ffffff;
3182    color: #000000;
3183    opacity: .85;
3184}
3185
3186/* 2nd button: outline variant with the requested overrides */
3187.cta-banner-section .pp-v2-btn--outline {
3188    border-radius: 55px;
3189    border: 1px solid #8E8E8E;
3190    background: #000;
3191    color: #ffffff;
3192}
3193
3194.cta-banner-section .pp-v2-btn--outline:hover {
3195    background: #ffffff;
3196    color: #000000;
3197    border-color: #ffffff;
3198    opacity: 1;
3199}
3200
3201/* Responsive */
3202@media (max-width: 1024px) {
3203    .cta-banner-section .cta-banner__title,
3204    .cta-banner__title,
3205    .cta-banner__content h2 {
3206        font-size: 42px !important;
3207    }
3208}
3209
3210@media (max-width: 768px) {
3211    .cta-banner-section {
3212        padding: 60px 0;
3213    }
3214
3215    .cta-banner__container {
3216        padding: 0 20px;
3217    }
3218
3219    .cta-banner-section .cta-banner__title,
3220    .cta-banner__title,
3221    .cta-banner__content h2 {
3222        font-size: 32px !important;
3223    }
3224
3225    .cta-banner__subtitle {
3226        font-size: 18px;
3227        line-height: 24px;
3228    }
3229
3230    .cta-banner__buttons {
3231        flex-direction: column;
3232    }
3233
3234    .cta-banner-section .pp-v2-btn {
3235        width: 100%;
3236    }
3237}
3238
3239@media (max-width: 480px) {
3240    .cta-banner-section .cta-banner__title,
3241    .cta-banner__title,
3242    .cta-banner__content h2 {
3243        font-size: 28px !important;
3244    }
3245
3246    .cta-banner__subtitle {
3247        font-size: 16px;
3248    }
3249}
3250</style>
3251
3252<section class="cta-banner-section" id="cta-banner-6ab48bee8bc73"
3253    style="background: radial-gradient(120% 120% at 50% 0%, #0B9B8A 0%, #06463d 60%, #032c26 100%);">
3254
3255            <!-- Animated WebGL green background (falls back to the CSS green above) -->
3256        <canvas class="veil-bg cta-banner__veil" aria-hidden="true"></canvas>
3257    
3258    
3259    
3260    
3261    <div class="cta-banner__container">
3262        <div class="cta-banner__content">
3263                            <h2 id="ready-to-start-building">Ready to start building?</h2>
3264            
3265                            <p class="cta-banner__subtitle">Discover the power of the Nylas platform and connect up to 5 accounts for free.</p>
3266            
3267            <div class="cta-banner__buttons">
3268                                                        <a href="https://dashboard-v3.nylas.com/register/"
3269                       target="_self"
3270                                              class="cta-banner__btn pp-v2-btn pp-v2-btn--primary">
3271                        Build now                    </a>
3272                
3273                                                        <a href="https://developer.nylas.com/"
3274                       target="_self"
3275                                              class="cta-banner__btn pp-v2-btn pp-v2-btn--outline">
3276                        See the docs                    </a>
3277                            </div>
3278        </div>
3279    </div>
3280</section>
3281
3282</main>
3283
3284
3285        
3286        
3287        
3288
3289    <footer class="site-footer site-footer--2025">
3290                <div class="main-container">
3291
3292            <div class="footer-top">
3293                <div class="footer-nav">
3294                    <ul class="footer-menu">
3295                        <li class="footer-menu__info-item">
3296                            <div class="footer-info">
3297                                <a href="/" class="footer-logo">
3298                                    <svg width="114" height="33" viewBox="0 0 114 33" fill="none" xmlns="http://www.w3.org/2000/svg">
3299<g clip-path="url(#clip0_1433_328)">
3300<path d="M25.9908 4.71236C24.0672 2.78362 21.5086 1.72266 18.7827 1.72266C16.0568 1.72266 13.4951 2.78362 11.5
3300746 4.71236L1.14782 15.1668C0.901448 15.4139 0.765625 15.7432 0.765625 16.0948C0.765625 16.4463 0.901448 16.7757 1.14782 17.0227C1.3942 17.2698 1.7227 17.4059 2.07332 17.4059C2.42393 17.4059 2.75243 17.2698 2.99881 17.0227L13.4224 6.56826C16.3758 3.60706 21.1865 3.60706 24.1398 6.56826C27.0932 9.53263 27.0963 14.3529 24.1398 17.3141L13.7162 27.7654C13.2076 28.2753 13.2076 29.1082 13.7162 29.6213C13.9626 29.8683 14.2911 30.0045 14.6417 30.0045C14.9923 30.0045 15.3208 29.8683 15.5672 29.6213L25.9908 19.17C27.9144 17.2413 28.9726 14.6759 28.9726 11.9428C28.9726 9.20959 27.9144 6.6411 25.9908 4.71553V4.71236Z" fill="white"/>
3301<path d="M24.5306 11.9422C24.5306 10.3998 23.9336 8.95245 22.8471 7.86615C20.6044 5.61753 16.9561 5.61753 14.7135 7.86615L0.862669 21.7506C0.616292 21.9976 0.480469 22.327 0.480469 22.6785C0.480469 23.03 0.616292 23.3594 0.862669 23.6064C1.10905 23.8535 1.43755 23.9897 1.78816 23.9897C2.13877 23.9897 2.46728 23.8535 2.71365 23.6064L16.4128 9.88673L16.4349 9.8614C16.476 9.81389 16.5202 9.76322 16.5644 9.71888C16.615 9.66821 16.6718 9.6207 16.7255 9.5732L16.7571 9.54469C17.9922 8.49639 19.8558 8.5724 20.9992 9.71888C22.1427 10.8654 22.2185 12.5914 21.2804 13.8361L21.2709 13.8487C21.173 13.9754 21.0877 14.0768 20.9992 14.1654C20.9139 14.2509 20.816 14.3365 20.677 14.4473L7.14843 28.0498C6.90206 28.2969 6.76623 28.6262 6.76623 28.9778C6.76623 29.3293 6.90206 29.6587 7.14843 29.9057C7.39481 30.1528 7.72331 30.2889 8.07393 30.2889C8.42454 30.2889 8.75304 30.1528 8.99942 29.9057L22.8502 16.0182C23.9336 14.9319 24.5338 13.4813 24.5338 11.9422H24.5306Z" fill="white"/>
3302<path d="M17.484 14.7999C17.1365 14.6416 16.827 14.4294 16.5648 14.1665C16.3026 13.9037 16.091 13.5933 15.9331 13.2449L15.8383 13.0391L0.537668 28.3803C0.237593 28.6812 0.0512314 29.0612 0.0101686 29.4476C-0.0308942 29.8403 0.0828181 30.1919 0.332354 30.4421C0.543985 30.6543 0.844059 30.7714 1.17256 30.7714C1.6053 30.7714 2.04751 30.5751 2.38865 30.233L17.6893 14.8918L17.484 14.7968V14.7999Z" fill="white"/>
3303<path d="M113.245 17.2984C112.932 16.7188 112.512 16.2279 111.988 15.8384C111.457 15.4425 110.847 15.1289 110.171 14.9041C109.48 14.6729 108.769 14.4765 108.058 14.3118C107.262 14.125 106.447 13.916 105.639 13.6974C104.814 13.4726 104.129 13.1907 103.605 12.8582C103.412 12.7663 103.188 12.5668 103.188 12.1266C103.188 11.9556 103.229 11.7877 103.314 11.6198L103.33 11.5945C103.513 11.3316 103.81 11.1004 104.243 10.8819C104.672 10.6666 105.294 10.562 106.147 10.562C106.82 10.562 107.398 10.6539 107.862 10.8376C108.324 11.0213 108.706 11.243 109.003 11.5027C109.296 11.7592 109.537 12.0474 109.723 12.3546C109.852 12.57 109.969 12.7758 110.067 12.9627L113.036 11.0308C112.856 10.6222 112.604 10.1915 112.281 9.74811C111.921 9.25088 111.46 8.78849 110.907 8.37044C110.355 7.95238 109.679 7.60084 108.898 7.32847C108.118 7.05611 107.193 6.91992 106.147 6.91992C104.922 6.91992 103.886 7.08778 103.074 7.41398C102.262 7.74336 101.599 8.14241 101.106 8.60163C100.613 9.06086 100.241 9.55492 99.9941 10.068C99.7446 10.5905 99.574 11.0593 99.4856 11.4647C99.4635 11.5945 99.4414 11.7434 99.4193 11.9049C99.3971 12.0569 99.3845 12.1994 99.3845 12.3324C99.3845 13.1749 99.5961 13.8843 100.01 14.4417C100.433 15.0149 100.973 15.4995 101.615 15.8795C102.262 16.2659 102.976 16.5795 103.737 16.8075C104.514 17.0387 105.257 17.2382 105.945 17.3997C106.618 17.5613 107.259 17.7291 107.856 17.8938C108.469 18.0616 108.977 18.2833 109.366 18.5525C109.726 18.8312 109.906 19.167 109.906 19.5533C109.906 19.9682 109.745 20.2976 109.426 20.5351C109.142 20.7442 108.807 20.9152 108.425 21.0355C108.055 21.1559 107.67 21.235 107.281 21.2731C106.905 21.3079 106.593 21.3269 106.353 21.3269C105.617 21.3269 104.985 21.254 104.483 21.1084C103.977 20.9627 103.56 20.7917 103.244 20.5953C102.925 20.3989 102.673 20.1899 102.496 19.9746C102.328 19.7719 102.205 19.604 102.129 19.4773L101.788 18.9769L98.8223 20.9057C99.0592 21.2762 99.3561 21.6879 99.7035 22.1282C100.098 22.6254 100.607 23.0973 101.22 23.528C101.832 23.9587 102.568 24.3229 103.409 24.608C104.249 24.893 105.238 25.0355 106.353 25.0355C107.265 25.0355 108.084 24.9532 108.791 24.7948C109.495 24.6333 110.118 24.4211 110.636 24.1614C111.151 23.9049 111.586 23.604 111.934 23.2651C112.285 22.9263 112.575 22.581 112.799 22.2453C113.336 21.4377 113.643 20.5035 113.712 19.4678C113.712 18.6064 113.554 17.8716 113.245 17.2952V17.2984Z" fill="white"/>
3304<path d="M43.491 6.7793C39.2299 6.7793 35.7617 10.2567 35.7617 14.5291V24.6827H39.4605V14.5291C39.4605 12.3027 41.2673 10.4911 43.4878 10.4911C45.7084 10.4911 47.5151 12.3027 47.5151 14.5291V24.6827H51.214V14.5291C51.214 10.2567 47.7457 6.7793 43.4847 6.7793H43.491Z" fill="white"/>
3305<path d="M88.4424 6.7793C83.4201 6.7793 79.3359 10.8743 79.3359 15.9099C79.3359 20.9456 83.4233 25.0406 88.4424 25.0406C90.2713 25.0406 92.037 24.499 93.5468 23.4729L93.85 23.267V24.6795H97.5489V15.9099C97.5489 10.8743 93.4647 6.7793 88.4424 6.7793ZM88.4424 21.332C85.4606 21.332 83.0347 18.8996 83.0347 15.9099
3305C83.0347 12.9202 85.4606 10.4879 88.4424 10.4879C91.4242 10.4879 93.85 12.9202 93.85 15.9099C93.85 18.8996 91.4242 21.332 88.4424 21.332Z" fill="white"/>
3306<path d="M75.3824 17.2944V0.271484H71.6836V17.2944C71.6836 21.5003 75.0444 24.9366 79.217 25.0411V21.3293C77.0849 21.2279 75.3824 19.4576 75.3824 17.2944Z" fill="white"/>
3307<path d="M65.3648 7.14062V17.3164C65.3648 19.0519 64.2434 20.6196 62.642 21.1295C61.3532 21.5381 60.0108 21.3291 58.959 20.5563C57.9261 19.7962 57.3101 18.5801 57.3101 17.2974V7.14062H53.6113V17.2657C53.6113 20.778 55.9014 23.8532 59.1769 24.7463C61.2048 25.3006 63.3021 25.0599 65.0773 24.0749L65.3648 23.9134V24.5246C65.3648 26.6846 63.6622 28.455 61.5301 28.5595V32.2713C65.7027 32.1668 69.0636 28.7337 69.0636 24.5246V7.14062H65.3648Z" fill="white"/>
3308</g>
3309<defs>
3310<clipPath id="clip0_1433_328">
3311<rect width="114" height="32" fill="white" transform="translate(0 0.271484)"/>
3312</clipPath>
3313</defs>
3314</svg>
3315                                </a>
3316
3317                                                                <div class="social">
3318                                    <ul>
3319                                                                                                                                    <li>
3320                                                    <a href="https://github.com/nylas/" target="_blank"
3321                                                       rel="nofollow" aria-label=" link"><svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
3322<g clip-path="url(#clip0_22_685)">
3323<path fill-rule="evenodd" clip-rule="evenodd" d="M11.9642 0.516388C5.34833 0.516388 0 5.90414 0 12.5695C0 17.8975 3.42686 22.4076 8.18082 24.0038C8.77518 24.1238 8.9929 23.7445 8.9929 23.4254C8.9929 23.1459 8.97331 22.1881 8.97331 21.1902C5.64514 21.9087 4.95208 19.7534 4.95208 19.7534C4.41722 18.3565 3.62473 17.9974 3.62473 17.9974C2.53543 17.2591 3.70408 17.2591 3.70408 17.2591C4.91241 17.3389 5.54645 18.4963 5.54645 18.4963C6.61592 20.3321 8.33927 19.8134 9.03257 19.494C9.13151 18.7157 9.44865 18.177 9.78539 17.8777C7.13094 17.5983 4.33812 16.5606 4.33812 11.9308C4.33812 10.6138 4.81322 9.53622 5.56604 8.69818C5.44727 8.39892 5.03118 7.16145 5.68506 5.5052C5.68506 5.5052 6.69527 5.18586 8.97306 6.74243C9.94827 6.47859 10.954 6.34437 11.9642 6.34324C12.9744 6.34324 14.0042 6.48308 14.9552 6.74243C17.2332 5.18586 18.2434 5.5052 18.2434 5.5052C18.8973 7.16145 18.481 8.39892 18.3622 8.69818C19.1349 9.53622 19.5904 10.6138 19.5904 11.9308C19.5904 16.5606 16.7976 17.5782 14.1233 17.8777C14.5592 18.2568 14.9353 18.9751 14.9353 20.1126C14.9353 21.729 14.9158 23.0262 14.9158 23.4251C14.9158 23.7445 15.1337 24.1238 15.7278 24.0041C20.4818 22.4073 23.9087 17.8975 23.9087 12.5695C23.9282 5.90414 18.5603 0.516388 11.9642 0.516388Z" fill="#B3B8D8"/>
3324</g>
3325<defs>
3326<clipPath id="clip0_22_685">
3327<rect width="24" height="24" fill="white" transform="translate(0 0.271484)"/>
3328</clipPath>
3329</defs>
3330</svg>
3331</a>
3332                                                </li>
3333                                                                                                                                                                                <li>
3334                                                    <a href="https://www.linkedin.com/company/nylas/" target="_blank"
3335                                                       rel="nofollow" aria-label=" link"><svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
3336<g clip-path="url(#clip0_22_686)">
3337<path fill-rule="evenodd" clip-rule="evenodd" d="M21.0678 0.271484C22.6861 0.271484 24 1.58539 24 3.2037V21.3393C24 22.9576 22.6861 24.2715 21.0678 24.2715H2.93222C1.31391 24.2715 0 22.9576 0 21.3393V3.2037C0 1.58539 1.31386 0.271484 2.93222 0.271484L21.0678 0.271484ZM7.52161 20.1126V9.53216H4.00411V20.1126H7.52161ZM20.2031 20.1126V14.0452C20.2031 10.7952 18.4679 9.28334 16.154 9.28334C14.2882 9.28334 13.4524 10.3095 12.9845 11.0302V9.53216H9.46786C9.5145 10.525 9.46786 20.1126 9.46786 20.1126H12.9844V14.2038C12.9844 13.8875 13.0072 13.5713 13.1004 13.3453C13.3542 12.7136 13.9332 12.0593 14.9048 12.0593C16.1767 12.0593 16.6864 13.0299 16.6864 14.4516V20.1126H20.2031ZM5.78662 4.43033C4.58316 4.43033 3.79688 5.22153 3.79688 6.25855C3.79688 7.27377 4.55925 8.08677 5.74008 8.08677H5.76277C6.98925 8.08677 7.7527 7.27377 7.7527 6.25855C7.72997 5.22298 6.99141 4.43258 5.78662 4.43033Z" fill="#B3B8D8"/>
3338</g>
3339<defs>
3340<clipPath id="clip0_22_686">
3341<rect width="24" height="24" fill="white" transform="translate(0 0.271484)"/>
3342</clipPath>
3343</defs>
3344</svg>
3345</a>
3346                                                </li>
3347                                                                                                                                                                                <li>
3348                                                    <a href="https://www.youtube.com/c/nylas" target="_blank"
3349                                                       rel="nofollow" aria-label=" link">
3349<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
3350<path d="M23.4986 6.49485C23.2226 5.46219 22.4094 4.64905 21.3768 4.37305C19.505 3.87149 12 3.87149 12 3.87149C12 3.87149 4.49498 3.87149 2.62317 4.37305C1.5907 4.64905 0.777375 5.46219 0.501422 6.49485C0 8.36647 0 12.2716 0 12.2716C0 12.2716 0 16.1767 0.501422 18.0481C0.777375 19.0808 1.5907 19.8942 2.62317 20.1701C4.49498 20.6715 12 20.6715 12 20.6715C12 20.6715 19.505 20.6715 21.3768 20.1701C22.4094 19.8942 23.2226 19.0808 23.4986 18.0481C24 16.1767 24 12.2716 24 12.2716C24 12.2716 24 8.36647 23.4986 6.49485ZM9.59986 15.8717V8.67154L15.8351 12.2716L9.59986 15.8717Z" fill="#B3B8D8"/>
3351</svg>
3352</a>
3353                                                </li>
3354                                                                                                                                                                                <li>
3355                                                    <a href="https://twitter.com/nylas" target="_blank"
3356                                                       rel="nofollow" aria-label=" link"><svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
3357<g clip-path="url(#clip0_1433_350)">
3358<path d="M13.857 10.7793L21.1175 2.52148H19.3976L13.0907 9.69019L8.0571 2.52148H2.25L9.86345 13.3629L2.25 22.0214H3.9699L10.6259 14.4494L15.9429 22.0214H21.75M4.59065 3.79052H7.2329L19.3964 20.8147H16.7534" fill="#B3B8D8"/>
3359</g>
3360<defs>
3361<clipPath id="clip0_1433_350">
3362<rect width="19.5" height="19.5" fill="white" transform="translate(2.25 2.52148)"/>
3363</clipPath>
3364</defs>
3365</svg>
3366</a>
3367                                                </li>
3368                                                                                                                        </ul>
3369                                </div>
3370                                                            </div>
3371                        </li>
3372
3373                                                                                                                        <li>
3374                                        <h6>Contact</h6>
3375                                        <ul id="menu-footer_contact" class=""><li id="menu-item-38147" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-38147"><a href="https://www.nylas.com/contact-sales/">Contact Sales</a></li>
3376<li id="menu-item-12070" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-12070"><a href="https://developer.nylas.com/docs/support/">Support</a></li>
3377</ul>                                    </li>
3378                                                                                                                                <li>
3379                                        <h6>Products</h6>
3380                                        <ul id="menu-footer_products" class=""><li id="menu-item-31331" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-31331"><a href="https://www.nylas.com/products/email-api/">Email API</a></li>
3381<li id="menu-item-31330" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-31330"><a href="https://www.nylas.com/products/calendar-api/">Calendar API</a></li>
3382<li id="menu-item-38042" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-38042"><a href="https://www.nylas.com/products/scheduler/">Scheduler</a></li>
3383<li id="menu-item-40601" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-40601"><a href="https://www.nylas.com/products/notetaker-api/">Notetaker API</a></li>
3384<li id="menu-item-48779" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48779"><a href="https://www.nylas.com/products/agent-accounts/">Agent Accounts</a></li>
3385<li id="menu-item-38005" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-38005"><a href="https://www.nylas.com/pricing/">Pricing</a></li>
3386</ul>                                    </li>
3387                                                                                                                                <li>
3388                                        <h6>Solutions</h6>
3389                                        <ul id="menu-footer_solutions" class=""><li id="menu-item-48780" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48780"><a href="https://www.nylas.com/solutions/sales-crm/">Sales &#038; CRM</a></li>
3390<li id="menu-item-48781" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48781"><a href="https://www.nylas.com/solutions/recruiting-ats/">Recruiting &#038; ATS</a></li>
3391<li id="menu-item-48783" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48783"><a href="https://www.nylas.com/solutions/healthcare/">Healthcare</a></li>
3392<li id="menu-item-48787" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48787"><a href="https://www.nylas.com/solutions/financial/">Financial</a></li>
3393<li id="menu-item-48786" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48786"><a href="https://www.nylas.com/solutions/legal/">Legal</a></li>
3394<li id="menu-item-48784" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48784"><a href="https://www.nylas.com/solutions/real-estate/">Real Estate</a></li>
3395<li id="menu-item-48785" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48785"><a href="https://www.nylas.com/solutions/education/">Education</a></li>
3396<li id="menu-item-48782" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48782"><a href="https://www.nylas.com/solutions/field-services/">Field Services</a></li>
3397</ul>                                    </li>
3398                                                                                                                                <li>
3399                                        <h6>Developers</h6>
3400                                        <ul id="menu-footer_developers" class=""><li id="menu-item-25028" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-25028"><a href="https://dashboard-v3.nylas.com/register">Build for free</a></li>
3401<li id="menu-item-27943" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-27943"><a href="https://developer.nylas.com/docs/v3/getting-started/">Docs</a></li>
3402<li id="menu-item-12077" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-12077"><a href="https://developer.nylas.com/docs/v3/sdks/">SDKs</a></li>
3403<li id="menu-item-12078" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-12078"><a href="https://developer.nylas.com/docs/dev-guide/">Guides</a></li>
3404<li id="menu-item-27945" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-27945"><a href="https://status.nylas.com/">API status</a></li>
3405<li id="menu-item-27946" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-27946"><a href="https://developer.nylas.com/docs/changelogs/">Changelog</a></li>
3406<li id="menu-item-12071" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-12071"><a href="https://developer.nylas.com/docs/support/">Support</a></li>
3407<li id="menu-item-32159" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-32159"><a href="https://forums.nylas.com/">Developer forums</a></li>
3408<li id="menu-item-48776" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-48776"><a href="https://www.nylas.com/integrations/">Integrations</a></li>
3409<li id="menu-item-48943" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-48943"><a href="https://www.nylas.com/resources/guides/">Learning Guides</a></li>
3410</ul>                                    </li>
3411                                                                                                                                <li>
3412                                        <h6>Company</h6>
3413                                        <ul id="menu-footer_company" class=""><li id="menu-item-12048" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12048"><a href="https://www.nylas.com/leadership-team/">Company</a></li>
3414<li id="menu-item-12049" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12049"><a href="https://www.nylas.com/company/jobs/">Careers</a></li>
3415<li id="menu-item-11224" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11224"><a href="https://www.nylas.com/newsroom/">Newsroom</a></li>
3416<li id="menu-item-48773" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-48773"><a href="https://www.nylas.com/case-studies/">Customer Stories</a></li>
3417<li id="menu-item-48775" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-48775"><a href="https://www.nylas.com/events/">Events</a></li>
3418<li id="menu-item-12061" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12061"><a href="https://www.nylas.com/blog/">Blog</a></li>
3419<li id="menu-item-42079" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-42079"><a href="https://www.nylas.com/resources/podcasts/">Podcasts</a></li>
3420<li id="menu-item-43292" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-43292"><a href="https://www.nylas.com/security/">Security</a></li>
3421</ul>                                    </li>
3422                                                                                                        </ul>
3423                </div>
3424            </div>
3425
3426
3427            <div class="footer-bottom">
3428                
3429                <div class="wrap">
3430                                            <p>© 2026 Nylas. All rights reserved.</p>
3431                                        <ul id="menu-copyright" class="add-nav"><li id="menu-item-12088" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12088"><a rel="httpswwwnylascomlegalterms" href="https://www.nylas.com/legal/terms/">Terms of Use</a></li>
3432<li id="menu-item-12087" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-12087"><a rel="httpswwwnylascomprivacy-policy privacy-policy" href="https://www.nylas.com/privacy-policy/">Privacy Policy</a></li>
3433<li id="menu-item-26916" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26916"><a href="https://www.nylas.com/privacy-settings/">Privacy Settings</a></li>
3434<li id="menu-item-12086" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12086"><a rel="httpswwwnylascomlegalcopyright" href="https://www.nylas.com/legal/copyright/">Copyright Policy</a></li>
3435<li id="menu-item-39366" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-39366"><a target="_blank" href="https://opt-out.nylas.com/">Do Not Sell or Share My Personal Information</a></li>
3436</ul>                </div>
3437            </div>
3438        </div>
3439    </footer>
3440        <div class="popups-wrap">
3441                                </div>
3442        
3442<script type="speculationrules">
3443{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/nylas\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
3444</script>
3444
3445			
3445<script>
3446				( () => {
3447					const lazyloadRunObserver = () => {
3448						const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
3449						const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
3450							entries.forEach( ( entry ) => {
3451								if ( entry.isIntersecting ) {
3452									let lazyloadBackground = entry.target;
3453									if( lazyloadBackground ) {
3454										lazyloadBackground.classList.add( 'e-lazyloaded' );
3455									}
3456									lazyloadBackgroundObserver.unobserve( entry.target );
3457								}
3458							});
3459						}, { rootMargin: '200px 0px 200px 0px' } );
3460						lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
3461							lazyloadBackgroundObserver.observe( lazyloadBackground );
3462						} );
3463					};
3464					const events = [
3465						'DOMContentLoaded',
3466						'elementor/lazyload/observe',
3467					];
3468					events.forEach( ( event ) => {
3469						document.addEventListener( event, lazyloadRunObserver );
3470					} );
3471				} )();
3472			</script>
3472
3473			<link rel='stylesheet' id='sponsor-logos-css' href='https://www.nylas.com/wp-content/themes/nylas/assets/css/sponsor-logos.css?ver=1781038475.3735' type='text/css' media='all' />
3474<link rel='stylesheet' id='api-code-block-style-css' href='https://www.nylas.com/wp-content/plugins/api-code-showcase-block/assets/css/api-code-block.css?ver=1.4.0' type='text/css' media='all' />
3475<script type="text/javascript" src="https://www.nylas.com/.cloud/module/mcp-to-angie-connector/assets/dist/angie-mcp-init.js?ver=1.0.10" id="mcp-to-angie-connector-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 3475
3475
3476<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/js/aos.js?ver=1.0.0" id="aos-js"></script>
vendor: 1 bytes, line 3476
3476
3477<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/js/circle-progress.min.js?ver=1.0.0" id="cp-js"></script>
vendor: 1 bytes, line 3477
3477
3478<script type="text/javascript" src="https://www.nylas.com/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" id="jquery-ui-core-js"></script>
vendor: 1 bytes, line 3478
3478
3479<script type="text/javascript" src="https://www.nylas.com/wp-includes/js/jquery/ui/tabs.min.js?ver=1.13.3" id="jquery-ui-tabs-js"></script>
vendor: 1 bytes, line 3479
3479
3480<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/js/gwv-polyfill.1.1.0.js?ver=1.1.0" id="gwv-polyfill-js"></script>
vendor: 1 bytes, line 3480
3480
3481<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/js/gwv.base.umd.js?ver=1.1.0" id="gwv-js"></script>
vendor: 1 bytes, line 3481
3481
3482<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/js/slick.min.js?ver=6.8.10" id="slick-js"></script>
vendor: 1 bytes, line 3482
3482
3483<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/js/highlight.min.js?ver=6.8.10" id="highlight-js"></script>
vendor: 1 bytes, line 3483
3483
3484<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/js/highlightjs-line-numbers.min.js?ver=6.8.10" id="highlightjs-line-numbers-js"></script>
vendor: 1 bytes, line 3484
3484
3485<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/js/highlightjs-copy.min.js?ver=6.8.10" id="highlightjs-copy-js"></script>
vendor: 1 bytes, line 3485
3485
3486<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/js/highlightjs-curl.js?ver=6.8.10" id="highlightjs-curl-js"></script>
vendor: 1 bytes, line 3486
3486
3487<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/build/js/build.js?ver=1781049825" id="build-js"></script>
vendor: 227 bytes, lines 3487-3488
3487
3488<script type="text/javascript" src="https://www.google.com/recaptcha/api.js?onload=c4wp_onloadCallback&amp;render=explicit&amp;hl=en&amp;ver=7.6.2" id="c4wp-method-provider-js" defer="defer" data-wp-strategy="defer"></script>
3489<script type="text/javascript" id="c4wp-method-js-extra">
3490/* <![CDATA[ */
3491var c4wpConfig = {"ajax_url":"https:\/\/www.nylas.com\/wp-admin\/admin-ajax.php","captcha_version":"v2_checkbox","disable_submit":"","site_key":"6Lc0y7EZAAAAALZHVaVorwkfhjbNeCIo6SWoqXE_","size":"normal","theme":"light","badge":"bottomright","failure_action":"nothing","additional_js":"","fallback_js":"\"\\t\\t\\t\\n\\t\\t\\t\\\/* @v3-fallback-js:start *\\\/\\n\\t\\t\\tif ( typeof captcha_div == 'undefined' && form.classList.contains( 'wc-block-checkout__form' ) ) {\\n\\t\\t\\t\\tvar captcha_div = form.querySelector( '#additional-information-c4wp-c4wp-wc-checkout' );\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( ! captcha_div && form.classList.contains( 'wc-block-checkout__form' ) ) {\\n\\t\\t\\t\\tvar captcha_div = form.querySelector( '#order-c4wp-c4wp-wc-checkout' );\\n\\t\\t\\t}\\n\\n\\t\\t\\tif ( typeof captcha_div == 'undefined' ) {\\n\\t\\t\\t\\tvar captcha_div = form.querySelector( '.c4wp_captcha_field_div' );\\n\\t\\t\\t}\\n\\n\\t\\t\\tvar parentElem = captcha_div.parentElement;\\n\\n\\t\\t\\tif ( ( form.classList.contains( 'c4wp-primed' ) ) || ( ! form.classList.contains( 'c4wp_verify_underway' ) && captcha_div.parentElement.getAttribute( 'data-c4wp-use-ajax' ) == 'true' ) ) {\\n\\n\\t\\t\\t\\tform.classList.add('c4wp_verify_underway' );\\n\\t\\t\\t\\tconst flagMarkup =  '<input id=\\\"c4wp_ajax_flag\\\" type=\\\"hidden\\\" name=\\\"c4wp_ajax_flag\\\" value=\\\"c4wp_ajax_flag\\\">';\\n\\t\\t\\t\\tvar flagMarkupDiv = document.createElement('div');\\n\\t\\t\\t\\tflagMarkupDiv.innerHTML = flagMarkup.trim();\\n\\n\\t\\t\\t\\tform.appendChild( flagMarkupDiv );\\n\\t\\n\\t\\t\\t\\tvar nonce = captcha_div.parentElement.getAttribute( 'data-nonce' );\\n\\n\\t\\t\\t\\tvar formData = new FormData();\\n\\n\\t\\t\\t\\tformData.append( 'action', 'c4wp_ajax_verify' );\\n\\t\\t\\t\\tformData.append( 'nonce', nonce );\\n\\t\\t\\t\\tformData.append( 'response', data );\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tfetch( 'https:\\\/\\\/www.nylas.com\\\/wp-admin\\\/admin-ajax.php', {\\n\\t\\t\\t\\t\\tmethod: 'POST',\\n\\t\\t\\t\\t\\tbody: formData,\\n\\t\\t\\t\\t} ) \\\/\\\/ wrapped\\n\\t\\t\\t\\t\\t.then( \\n\\t\\t\\t\\t\\t\\tres => res.json()\\n\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t.then( data => {\\n\\t\\t\\t\\t\\t\\tif ( data['success'] ) {\\n\\n\\t\\t\\t\\t\\t\\t\\tform.classList.add( 'c4wp_verified' );\\n\\n\\t\\t\\t\\t\\t\\t\\tvar existingFlag = document.getElementById('c4wp_ajax_flag');\\n\\t\\t\\t\\t\\t\\t\\tif (existingFlag) {\\n\\t\\t\\t\\t\\t\\t\\t\\texistingFlag.value = data.data.token; \\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\tconst flagMarkup = '<input id=\\\"c4wp_ajax_flag\\\" type=\\\"hidden\\\" name=\\\"c4wp_ajax_flag\\\" value=\\\"' + data.data.token + '\\\">';\\n\\t\\t\\t\\t\\t\\t\\t\\tvar flagMarkupDiv = document.createElement('div');\\n\\t\\t\\t\\t\\t\\t\\t\\tflagMarkupDiv.innerHTML = flagMarkup.trim();\\n\\t\\t\\t\\t\\t\\t\\t\\tform.appendChild( flagMarkupDiv );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\\/\\\/ Submit as usual.\\n\\t\\t\\t\\t\\t\\t\\tif ( foundSubmitBtn ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tfoundSubmitBtn.click();\\n\\t\\t\\t\\t\\t\\t\\t} else if ( form.classList.contains( 'wc-block-checkout__form' ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery( form ).find( '.wc-block-components-checkout-place-order-button:not(.c4wp-submit)' ).click(); \\n\\t\\t\\t\\t\\t\\t\\t} else {\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( typeof form.submit === 'function' ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tform.submit();\\n\\t\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tHTMLFormElement.prototype.submit.call(form);\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\\/\\\/jQuery( '.nf-form-cont' ).trigger( 'nfFormReady' );\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( 'redirect' === 'nothing' ) {\\n\\t\\t\\t\\t\\t\\t\\t\\twindow.location.href = '';\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( 'v2_checkbox' === 'nothing' ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tif ( form.classList.contains( 'wc-block-checkout__form' ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcaptcha_div = captcha_div.parentElement;\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tcaptcha_div.innerHTML = '';\\n\\t\\t\\t\\t\\t\\t\\t\\tform.classList.add( 'c4wp_v2_fallback_active' );\\n\\t\\t\\t\\t\\t\\t\\t\\tflagMarkupDiv.firstChild.setAttribute( '
3491name', 'c4wp_v2_fallback' );\\n\\n\\t\\t\\t\\t\\t\\t\\t\\tvar c4wp_captcha = grecaptcha.render( captcha_div,{\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'sitekey' : '',\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'size'  : 'normal',\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'theme' : 'light',\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'expired-callback' : function(){\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgrecaptcha.reset( c4wp_captcha );\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\t\\t}); \\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery( '.ninja-forms-field.c4wp-submit' ).prop( 'disabled', false );\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( form.classList.contains( 'wc-block-checkout__form' ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\treturn true;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\tif ( form.parentElement.classList.contains( 'nf-form-layout' ) ) {\\n\\t\\t\\t\\t\\t\\t\\t\\tjQuery( '.ninja-forms-field.c4wp-submit' ).prop( 'disabled', false );\\n\\t\\t\\t\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\\/\\\/ Prevent further submission\\n\\t\\t\\t\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t\\t\\t\\t\\treturn false;\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t} )\\n\\t\\t\\t\\t\\t.catch( err => console.error( err ) );\\n\\n\\t\\t\\t\\t\\\/\\\/ Prevent further submission\\n\\t\\t\\t\\tevent.preventDefault();\\n\\t\\t\\t\\treturn false;\\n\\t\\t\\t}\\n\\t\\t\\t\\\/* @v3-fallback-js:end *\\\/\\n\\t\\t\\t\\n\\t\\t\\t\"","flag_markup":"<input id=\"c4wp_ajax_flag\" type=\"hidden\" name=\"c4wp_ajax_flag\" value=\"c4wp_ajax_flag\">","field_markup":"<div class=\"c4wp_captcha_field\" style=\"margin-bottom: 10px;\" data-nonce=\"541f1d6a44\" ><div id=\"c4wp_captcha_field_0\" class=\"c4wp_captcha_field_div\"><\/div><\/div>","redirect":"","failure_v2_site_key":""};
3492/* ]]> */
3493</script>
vendor: 1 bytes, line 3493
3493
3494<script type="text/javascript" src="https://www.nylas.com/wp-content/plugins/advanced-nocaptcha-recaptcha/includes/methods/js/c4wp-v2_checkbox.js?ver=7.6.2" id="c4wp-method-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 3494
3494
3495<script type="text/javascript" src="https://www.nylas.com/wp-content/plugins/enlighter/cache/enlighterjs.min.js?ver=nBGpNqTfHqCvwcY" id="enlighterjs-js"></script>
vendor: 1 bytes, line 3495
3495
3496<script type="text/javascript" id="enlighterjs-js-after">
3497/* <![CDATA[ */
3498!function(e,n){if("undefined"!=typeof EnlighterJS){var o={"selectors":{"block":"pre.EnlighterJSRAW","inline":"code.EnlighterJSRAW"},"options":{"indent":2,"ampersandCleanup":true,"linehover":false,"rawcodeDbclick":false,"textOverflow":"break","linenumbers":true,"theme":"enlighter","language":"generic","retainCssClasses":false,"collapse":false,"toolbarOuter":"","toolbarTop":"{BTN_RAW}{BTN_COPY}{BTN_WINDOW}{BTN_WEBSITE}","toolbarBottom":""}};(e.EnlighterJSINIT=function(){EnlighterJS.init(o.selectors.block,o.selectors.inline,o.options)})()}else{(n&&(n.error||n.log)||function(){})("Error: EnlighterJS resources not loaded yet!")}}(window,console);
3499/* ]]> */
3500</script>
vendor: 1 bytes, line 3500
3500
3501<script type="text/javascript" src="https://www.nylas.com/wp-content/themes/nylas/assets/js/veil-background.js?ver=1781015742" id="veil-background-js"></script>
vendor: 1 bytes, line 3501
3501
3502<script type="text/javascript" src="https://www.nylas.com/wp-content/plugins/api-code-showcase-block/assets/js/prism.min.js?ver=1.29.0-ts1" id="api-code-block-prism-js"></script>
vendor: 1 bytes, line 3502
3502
3503<script type="text/javascript" src="https://www.nylas.com/wp-content/plugins/api-code-showcase-block/assets/js/api-code-block.js?ver=1.4.0" id="api-code-block-script-js"></script>
3503
3504    
3504<script>
3505    (function() {
3506      /**
3507       * Section Snap Scroll
3508       * ─────────────────────────────────────────────────────
3509       * Smooth snap between .product-feature-section blocks.
3510       * Desktop only (> 900px). Sections keep natural height.
3511       *
3512       * 1. User scrolls the page freely.
3513       * 2. When scrolling stops and a section top is near the
3514       *    viewport top, it nudges into alignment.
3515       * 3. Once aligned, wheel / key / touch gestures move
3516       *    one section at a time.
3517       * 4. At the first or last section, normal scroll resumes.
3518       * 5. Rapid aggressive scrolling bypasses snap (escape hatch).
3519       */
3520      var MOBILE_BP = 900;
3521
3522      function initSectionSnap() {
3523        var sections = Array.prototype.slice.call(
3524          document.querySelectorAll('.product-feature-section')
3525        );
3526        if (sections.length < 2) return;
3527
3528        var isSnapping  = false;
3529        var snapEnabled = window.innerWidth > MOBILE_BP;
3530
3531        /* ── Tuning constants ────────────────────────────── */
3532        var SNAP_THRESHOLD  = 60;    // px – top must be this close to count as "snapped"
3533        var NUDGE_THRESHOLD = 50;    // px – scroll-end nudge range
3534        var NUDGE_DEAD_ZONE = 3;     // px – already aligned, skip nudge
3535        var DELTA_THRESHOLD = 35;    // ignore small trackpad deltas
3536        var SNAP_COOLDOWN   = 1000;  // ms – fallback unlock timer
3537        var NUDGE_DELAY     = 320;   // ms – pause after scroll stops before nudge
3538        var RAPID_WINDOW    = 300;   // ms – rapid-scroll detection window
3539        var RAPID_COUNT     = 4;     // events in window = escape
3540
3541        var hasScrollEnd    = 'onscrollend' in window;
3542        var cooldownTimer   = null;
3543        var scrollTimer     = null;
3544        var wheelTimestamps = [];
3545
3546        /* ── Helpers ─────────────────────────────────────── */
3547
3548        /** Get fixed header height to offset scroll targets. */
3549        function getHeaderOffset() {
3550          var header = document.querySelector('.main-header');
3551          if (!header) return 0;
3552          var style = window.getComputedStyle(header);
3553          var pos = style.position;
3554          if (pos === 'fixed' || pos === 'sticky') return header.offsetHeight;
3555          return 0;
3556        }
3557
3558        /** Index of section whose top is within SNAP_THRESHOLD of header bottom, or -1. */
3559        function getSnappedSection() {
3560          var offset = getHeaderOffset();
3561          for (var i = 0; i < sections.length; i++) {
3562            if (Math.abs(sections[i].getBoundingClientRect().top - offset) < SNAP_THRESHOLD) {
3563              return i;
3564            }
3565          }
3566          return -1;
3567        }
3568
3569        /** Smooth-scroll to a section; lock input until settled. */
3570        function snapTo(index) {
3571          if (index < 0 || index >= sections.length) return;
3572          isSnapping = true;
3573
3574          var offset = getHeaderOffset();
3575          var targetY = sections[index].getBoundingClientRect().top + window.pageYOffset - offset;
3576          window.scrollTo({ top: targetY, behavior: 'smooth' });
3577
3578          // Prefer scrollend event; fall back to timeout
3579          if (hasScrollEnd) {
3580            var done = false;
3581            function unlock() {
3582              if (done) return;
3583              done = true;
3584              isSnapping = false;
3585              window.removeEventListener('scrollend', unlock);
3586              clearTimeout(cooldownTimer);
3587            }
3588            window.addEventListener('scrollend', unlock, { once: true });
3589            cooldownTimer = setTimeout(unlock, SNAP_COOLDOWN);
3590          } else {
3591            clearTimeout(cooldownTimer);
3592            cooldownTimer = setTimeout(function() { isSnapping = false; }, SNAP_COOLDOWN);
3593          }
3594        }
3595
3596        /**
3597         * Detect rapid scrolling (escape hatch).
3598         * If RAPID_COUNT wheel events fire within RAPID_WINDOW ms
3599         * the user is scrolling aggressively – let them free-scroll.
3600         */
3601        function isRapidScroll() {
3602          var now = Date.now();
3603          wheelTimestamps.push(now);
3604          while (wheelTimestamps.length && wheelTimestamps[0] < now - RAPID_WINDOW) {
3605            wheelTimestamps.shift();
3606          }
3607          return wheelTimestamps.length >= RAPID_COUNT;
3608        }
3609
3610        /* ── Event handlers ──────────────────────────────── */
3611
3612        /** Scroll-end nudge: after free scrolling stops, gently align. */
3613        function onScroll() {
3614          if (isSnapping || !snapEnabled) return;
3615          clearTimeout(scrollTimer);
3616          scrollTimer = setTimeout(function() {
3617            if (isSnapping) return;
3618            var offset = getHeaderOffset();
3619            for (var i = 0; i < sections.length; i++) {
3620              var dist = Math.abs(sections[i].getBoundingClientRect().top - offset);
3621              if (dist > NUDGE_DEAD_ZONE && dist < NUDGE_THRESHOLD) {
3622                snapTo(i);
3623                return;
3624              }
3625            }
3626          }, NUDGE_DELAY);
3627        }
3628
3629        /** Wheel: snap one section when aligned; ignore otherwise. */
3630        function onWheel(e) {
3631          if (!snapEnabled) return;
3632          if (isSnapping) { e.preventDefault(); return; }
3633          if (Math.abs(e.deltaY) < DELTA_THRESHOLD) return;
3634
3635          // Escape hatch – rapid scrolling bypasses snap
3636          if (isRapidScroll()) return;
3637
3638          var active = getSnappedSection();
3639          if (active === -1) return; // not in snap zone → normal scroll
3640
3641          var dir    = e.deltaY > 0 ? 1 : -1;
3642          var target = active + dir;
3643
3644          // Boundary: release to normal page scroll
3645          if (target < 0 || target >= sections.length) return;
3646
3647          e.preventDefault();
3648          snapTo(target);
3649        }
3650
3651        /** Keyboard: ArrowDown/Up, PageDown/Up. */
3652        function onKeydown(e) {
3653          if (!snapEnabled || isSnapping) return;
3654          var dir = 0;
3655          if (e.key === 'ArrowDown' || e.key === 'PageDown') dir = 1;
3656          else if (e.key === 'ArrowUp' || e.key === 'PageUp') dir = -1;
3657          if (!dir) return;
3658
3659          var active = getSnappedSection();
3660          if (active === -1) return;
3661
3662          var target = active + dir;
3663          if (target < 0 || target >= sections.length) return;
3664
3665          e.preventDefault();
3666          snapTo(target);
3667        }
3668
3669        /** Touch swipe: deliberate gesture only (>60px, <500ms). */
3670        var touchStartY = 0;
3671        var touchStartTime = 0;
3672
3673        function onTouchStart(e) {
3674          touchStartY    = e.touches[0].clientY;
3675          touchStartTime = Date.now();
3676        }
3677
3678        function onTouchEnd(e) {
3679          if (!snapEnabled || isSnapping) return;
3680          var dy = touchStartY - e.changedTouches[0].clientY;
3681          if (Math.abs(dy) < 60 || (Date.now() - touchStartTime) > 500) return;
3682
3683          var active = getSnappedSection();
3684          if (active === -1) return;
3685
3686          var dir    = dy > 0 ? 1 : -1;
3687          var target = active + dir;
3688          if (target < 0 || target >= sections.length) return;
3689          snapTo(target);
3690        }
3691
3692        /* ── Lifecycle ───────────────────────────────────── */
3693
3694        function attach() {
3695          window.addEventListener('scroll', onScroll, { passive: true });
3696          document.addEventListener('wheel', onWheel, { passive: false });
3697          document.addEventListener('keydown', onKeydown);
3698          document.addEventListener('touchstart', onTouchStart, { passive: true });
3699          document.addEventListener('touchend', onTouchEnd, { passive: true });
3700        }
3701
3702        function detach() {
3703          window.removeEventListener('scroll', onScroll);
3704          document.removeEventListener('wheel', onWheel);
3705          document.removeEventListener('keydown', onKeydown);
3706          document.removeEventListener('touchstart', onTouchStart);
3707          document.removeEventListener('touchend', onTouchEnd);
3708          clearTimeout(scrollTimer);
3709          clearTimeout(cooldownTimer);
3710          isSnapping = false;
3711        }
3712
3713        /* ── Resize guard: toggle snap on/off at breakpoint ── */
3714        var resizeTimer;
3715        window.addEventListener('resize', function() {
3716          clearTimeout(resizeTimer);
3717          resizeTimer = setTimeout(function() {
3718            var wide = window.innerWidth > MOBILE_BP;
3719            if (wide && !snapEnabled) {
3720              snapEnabled = true;
3721              attach();
3722            } else if (!wide && snapEnabled) {
3723              snapEnabled = false;
3724              detach();
3725            }
3726          }, 200);
3727        });
3728
3729        // Initial attach if desktop
3730        if (snapEnabled) attach();
3731      }
3732
3733      if (document.readyState === 'loading') {
3734        document.addEventListener('DOMContentLoaded', initSectionSnap);
3735      } else {
3736        initSectionSnap();
3737      }
3738    })();
3739    </script>
3739
3740        
3740<script>
3741    (function() {
3742      /**
3743       * Section Snap Scroll
3744       * ─────────────────────────────────────────────────────
3745       * Smooth snap between .product-feature-section blocks.
3746       * Desktop only (> 900px). Sections keep natural height.
3747       *
3748       * 1. User scrolls the page freely.
3749       * 2. When scrolling stops and a section top is near the
3750       *    viewport top, it nudges into alignment.
3751       * 3. Once aligned, wheel / key / touch gestures move
3752       *    one section at a time.
3753       * 4. At the first or last section, normal scroll resumes.
3754       * 5. Rapid aggressive scrolling bypasses snap (escape hatch).
3755       */
3756      var MOBILE_BP = 900;
3757
3758      function initSectionSnap() {
3759        var sections = Array.prototype.slice.call(
3760          document.querySelectorAll('.product-feature-section')
3761        );
3762        if (sections.length < 2) return;
3763
3764        var isSnapping  = false;
3765        var snapEnabled = window.innerWidth > MOBILE_BP;
3766
3767        /* ── Tuning constants ────────────────────────────── */
3768        var SNAP_THRESHOLD  = 60;    // px – top must be this close to count as "snapped"
3769        var NUDGE_THRESHOLD = 50;    // px – scroll-end nudge range
3770        var NUDGE_DEAD_ZONE = 3;     // px – already aligned, skip nudge
3771        var DELTA_THRESHOLD = 35;    // ignore small trackpad deltas
3772        var SNAP_COOLDOWN   = 1000;  // ms – fallback unlock timer
3773        var NUDGE_DELAY     = 320;   // ms – pause after scroll stops before nudge
3774        var RAPID_WINDOW    = 300;   // ms – rapid-scroll detection window
3775        var RAPID_COUNT     = 4;     // events in window = escape
3776
3777        var hasScrollEnd    = 'onscrollend' in window;
3778        var cooldownTimer   = null;
3779        var scrollTimer     = null;
3780        var wheelTimestamps = [];
3781
3782        /* ── Helpers ─────────────────────────────────────── */
3783
3784        /** Get fixed header height to offset scroll targets. */
3785        function getHeaderOffset() {
3786          var header = document.querySelector('.main-header');
3787          if (!header) return 0;
3788          var style = window.getComputedStyle(header);
3789          var pos = style.position;
3790          if (pos === 'fixed' || pos === 'sticky') return header.offsetHeight;
3791          return 0;
3792        }
3793
3794        /** Index of section whose top is within SNAP_THRESHOLD of header bottom, or -1. */
3795        function getSnappedSection() {
3796          var offset = getHeaderOffset();
3797          for (var i = 0; i < sections.length; i++) {
3798            if (Math.abs(sections[i].getBoundingClientRect().top - offset) < SNAP_THRESHOLD) {
3799              return i;
3800            }
3801          }
3802          return -1;
3803        }
3804
3805        /** Smooth-scroll to a section; lock input until settled. */
3806        function snapTo(index) {
3807          if (index < 0 || index >= sections.length) return;
3808          isSnapping = true;
3809
3810          var offset = getHeaderOffset();
3811          var targetY = sections[index].getBoundingClientRect().top + window.pageYOffset - offset;
3812          window.scrollTo({ top: targetY, behavior: 'smooth' });
3813
3814          // Prefer scrollend event; fall back to timeout
3815          if (hasScrollEnd) {
3816            var done = false;
3817            function unlock() {
3818              if (done) return;
3819              done = true;
3820              isSnapping = false;
3821              window.removeEventListener('scrollend', unlock);
3822              clearTimeout(cooldownTimer);
3823            }
3824            window.addEventListener('scrollend', unlock, { once: true });
3825            cooldownTimer = setTimeout(unlock, SNAP_COOLDOWN);
3826          } else {
3827            clearTimeout(cooldownTimer);
3828            cooldownTimer = setTimeout(function() { isSnapping = false; }, SNAP_COOLDOWN);
3829          }
3830        }
3831
3832        /**
3833         * Detect rapid scrolling (escape hatch).
3834         * If RAPID_COUNT wheel events fire within RAPID_WINDOW ms
3835         * the user is scrolling aggressively – let them free-scroll.
3836         */
3837        function isRapidScroll() {
3838          var now = Date.now();
3839          wheelTimestamps.push(now);
3840          while (wheelTimestamps.length && wheelTimestamps[0] < now - RAPID_WINDOW) {
3841            wheelTimestamps.shift();
3842          }
3843          return wheelTimestamps.length >= RAPID_COUNT;
3844        }
3845
3846        /* ── Event handlers ──────────────────────────────── */
3847
3848        /** Scroll-end nudge: after free scrolling stops, gently align. */
3849        function onScroll() {
3850          if (isSnapping || !snapEnabled) return;
3851          clearTimeout(scrollTimer);
3852          scrollTimer = setTimeout(function() {
3853            if (isSnapping) return;
3854            var offset = getHeaderOffset();
3855            for (var i = 0; i < sections.length; i++) {
3856              var dist = Math.abs(sections[i].getBoundingClientRect().top - offset);
3857              if (dist > NUDGE_DEAD_ZONE && dist < NUDGE_THRESHOLD) {
3858                snapTo(i);
3859                return;
3860              }
3861            }
3862          }, NUDGE_DELAY);
3863        }
3864
3865        /** Wheel: snap one section when aligned; ignore otherwise. */
3866        function onWheel(e) {
3867          if (!snapEnabled) return;
3868          if (isSnapping) { e.preventDefault(); return; }
3869          if (Math.abs(e.deltaY) < DELTA_THRESHOLD) return;
3870
3871          // Escape hatch – rapid scrolling bypasses snap
3872          if (isRapidScroll()) return;
3873
3874          var active = getSnappedSection();
3875          if (active === -1) return; // not in snap zone → normal scroll
3876
3877          var dir    = e.deltaY > 0 ? 1 : -1;
3878          var target = active + dir;
3879
3880          // Boundary: release to normal page scroll
3881          if (target < 0 || target >= sections.length) return;
3882
3883          e.preventDefault();
3884          snapTo(target);
3885        }
3886
3887        /** Keyboard: ArrowDown/Up, PageDown/Up. */
3888        function onKeydown(e) {
3889          if (!snapEnabled || isSnapping) return;
3890          var dir = 0;
3891          if (e.key === 'ArrowDown' || e.key === 'PageDown') dir = 1;
3892          else if (e.key === 'ArrowUp' || e.key === 'PageUp') dir = -1;
3893          if (!dir) return;
3894
3895          var active = getSnappedSection();
3896          if (active === -1) return;
3897
3898          var target = active + dir;
3899          if (target < 0 || target >= sections.length) return;
3900
3901          e.preventDefault();
3902          snapTo(target);
3903        }
3904
3905        /** Touch swipe: deliberate gesture only (>60px, <500ms). */
3906        var touchStartY = 0;
3907        var touchStartTime = 0;
3908
3909        function onTouchStart(e) {
3910          touchStartY    = e.touches[0].clientY;
3911          touchStartTime = Date.now();
3912        }
3913
3914        function onTouchEnd(e) {
3915          if (!snapEnabled || isSnapping) return;
3916          var dy = touchStartY - e.changedTouches[0].clientY;
3917          if (Math.abs(dy) < 60 || (Date.now() - touchStartTime) > 500) return;
3918
3919          var active = getSnappedSection();
3920          if (active === -1) return;
3921
3922          var dir    = dy > 0 ? 1 : -1;
3923          var target = active + dir;
3924          if (target < 0 || target >= sections.length) return;
3925          snapTo(target);
3926        }
3927
3928        /* ── Lifecycle ───────────────────────────────────── */
3929
3930        function attach() {
3931          window.addEventListener('scroll', onScroll, { passive: true });
3932          document.addEventListener('wheel', onWheel, { passive: false });
3933          document.addEventListener('keydown', onKeydown);
3934          document.addEventListener('touchstart', onTouchStart, { passive: true });
3935          document.addEventListener('touchend', onTouchEnd, { passive: true });
3936        }
3937
3938        function detach() {
3939          window.removeEventListener('scroll', onScroll);
3940          document.removeEventListener('wheel', onWheel);
3941          document.removeEventListener('keydown', onKeydown);
3942          document.removeEventListener('touchstart', onTouchStart);
3943          document.removeEventListener('touchend', onTouchEnd);
3944          clearTimeout(scrollTimer);
3945          clearTimeout(cooldownTimer);
3946          isSnapping = false;
3947        }
3948
3949        /* ── Resize guard: toggle snap on/off at breakpoint ── */
3950        var resizeTimer;
3951        window.addEventListener('resize', function() {
3952          clearTimeout(resizeTimer);
3953          resizeTimer = setTimeout(function() {
3954            var wide = window.innerWidth > MOBILE_BP;
3955            if (wide && !snapEnabled) {
3956              snapEnabled = true;
3957              attach();
3958            } else if (!wide && snapEnabled) {
3959              snapEnabled = false;
3960              detach();
3961            }
3962          }, 200);
3963        });
3964
3965        // Initial attach if desktop
3966        if (snapEnabled) attach();
3967      }
3968
3969      if (document.readyState === 'loading') {
3970        document.addEventListener('DOMContentLoaded', initSectionSnap);
3971      } else {
3972        initSectionSnap();
3973      }
3974    })();
3975    </script>
3975
3976        
3976<script>
3977    (function() {
3978      /**
3979       * Section Snap Scroll
3980       * ─────────────────────────────────────────────────────
3981       * Smooth snap between .product-feature-section blocks.
3982       * Desktop only (> 900px). Sections keep natural height.
3983       *
3984       * 1. User scrolls the page freely.
3985       * 2. When scrolling stops and a section top is near the
3986       *    viewport top, it nudges into alignment.
3987       * 3. Once aligned, wheel / key / touch gestures move
3988       *    one section at a time.
3989       * 4. At the first or last section, normal scroll resumes.
3990       * 5. Rapid aggressive scrolling bypasses snap (escape hatch).
3991       */
3992      var MOBILE_BP = 900;
3993
3994      function initSectionSnap() {
3995        var sections = Array.prototype.slice.call(
3996          document.querySelectorAll('.product-feature-section')
3997        );
3998        if (sections.length < 2) return;
3999
4000        var isSnapping  = false;
4001        var snapEnabled = window.innerWidth > MOBILE_BP;
4002
4003        /* ── Tuning constants ────────────────────────────── */
4004        var SNAP_THRESHOLD  = 60;    // px – top must be this close to count as "snapped"
4005        var NUDGE_THRESHOLD = 50;    // px – scroll-end nudge range
4006        var NUDGE_DEAD_ZONE = 3;     // px – already aligned, skip nudge
4007        var DELTA_THRESHOLD = 35;    // ignore small trackpad deltas
4008        var SNAP_COOLDOWN   = 1000;  // ms – fallback unlock timer
4009        var NUDGE_DELAY     = 320;   // ms – pause after scroll stops before nudge
4010        var RAPID_WINDOW    = 300;   // ms – rapid-scroll detection window
4011        var RAPID_COUNT     = 4;     // events in window = escape
4012
4013        var hasScrollEnd    = 'onscrollend' in window;
4014        var cooldownTimer   = null;
4015        var scrollTimer     = null;
4016        var wheelTimestamps = [];
4017
4018        /* ── Helpers ─────────────────────────────────────── */
4019
4020        /** Get fixed header height to offset scroll targets. */
4021        function getHeaderOffset() {
4022          var header = document.querySelector('.main-header');
4023          if (!header) return 0;
4024          var style = window.getComputedStyle(header);
4025          var pos = style.position;
4026          if (pos === 'fixed' || pos === 'sticky') return header.offsetHeight;
4027          return 0;
4028        }
4029
4030        /** Index of section whose top is within SNAP_THRESHOLD of header bottom, or -1. */
4031        function getSnappedSection() {
4032          var offset = getHeaderOffset();
4033          for (var i = 0; i < sections.length; i++) {
4034            if (Math.abs(sections[i].getBoundingClientRect().top - offset) < SNAP_THRESHOLD) {
4035              return i;
4036            }
4037          }
4038          return -1;
4039        }
4040
4041        /** Smooth-scroll to a section; lock input until settled. */
4042        function snapTo(index) {
4043          if (index < 0 || index >= sections.length) return;
4044          isSnapping = true;
4045
4046          var offset = getHeaderOffset();
4047          var targetY = sections[index].getBoundingClientRect().top + window.pageYOffset - offset;
4048          window.scrollTo({ top: targetY, behavior: 'smooth' });
4049
4050          // Prefer scrollend event; fall back to timeout
4051          if (hasScrollEnd) {
4052            var done = false;
4053            function unlock() {
4054              if (done) return;
4055              done = true;
4056              isSnapping = false;
4057              window.removeEventListener('scrollend', unlock);
4058              clearTimeout(cooldownTimer);
4059            }
4060            window.addEventListener('scrollend', unlock, { once: true });
4061            cooldownTimer = setTimeout(unlock, SNAP_COOLDOWN);
4062          } else {
4063            clearTimeout(cooldownTimer);
4064            cooldownTimer = setTimeout(function() { isSnapping = false; }, SNAP_COOLDOWN);
4065          }
4066        }
4067
4068        /**
4069         * Detect rapid scrolling (escape hatch).
4070         * If RAPID_COUNT wheel events fire within RAPID_WINDOW ms
4071         * the user is scrolling aggressively – let them free-scroll.
4072         */
4073        function isRapidScroll() {
4074          var now = Date.now();
4075          wheelTimestamps.push(now);
4076          while (wheelTimestamps.length && wheelTimestamps[0] < now - RAPID_WINDOW) {
4077            wheelTimestamps.shift();
4078          }
4079          return wheelTimestamps.length >= RAPID_COUNT;
4080        }
4081
4082        /* ── Event handlers ──────────────────────────────── */
4083
4084        /** Scroll-end nudge: after free scrolling stops, gently align. */
4085        function onScroll() {
4086          if (isSnapping || !snapEnabled) return;
4087          clearTimeout(scrollTimer);
4088          scrollTimer = setTimeout(function() {
4089            if (isSnapping) return;
4090            var offset = getHeaderOffset();
4091            for (var i = 0; i < sections.length; i++) {
4092              var dist = Math.abs(sections[i].getBoundingClientRect().top - offset);
4093              if (dist > NUDGE_DEAD_ZONE && dist < NUDGE_THRESHOLD) {
4094                snapTo(i);
4095                return;
4096              }
4097            }
4098          }, NUDGE_DELAY);
4099        }
4100
4101        /** Wheel: snap one section when aligned; ignore otherwise. */
4102        function onWheel(e) {
4103          if (!snapEnabled) return;
4104          if (isSnapping) { e.preventDefault(); return; }
4105          if (Math.abs(e.deltaY) < DELTA_THRESHOLD) return;
4106
4107          // Escape hatch – rapid scrolling bypasses snap
4108          if (isRapidScroll()) return;
4109
4110          var active = getSnappedSection();
4111          if (active === -1) return; // not in snap zone → normal scroll
4112
4113          var dir    = e.deltaY > 0 ? 1 : -1;
4114          var target = active + dir;
4115
4116          // Boundary: release to normal page scroll
4117          if (target < 0 || target >= sections.length) return;
4118
4119          e.preventDefault();
4120          snapTo(target);
4121        }
4122
4123        /** Keyboard: ArrowDown/Up, PageDown/Up. */
4124        function onKeydown(e) {
4125          if (!snapEnabled || isSnapping) return;
4126          var dir = 0;
4127          if (e.key === 'ArrowDown' || e.key === 'PageDown') dir = 1;
4128          else if (e.key === 'ArrowUp' || e.key === 'PageUp') dir = -1;
4129          if (!dir) return;
4130
4131          var active = getSnappedSection();
4132          if (active === -1) return;
4133
4134          var target = active + dir;
4135          if (target < 0 || target >= sections.length) return;
4136
4137          e.preventDefault();
4138          snapTo(target);
4139        }
4140
4141        /** Touch swipe: deliberate gesture only (>60px, <500ms). */
4142        var touchStartY = 0;
4143        var touchStartTime = 0;
4144
4145        function onTouchStart(e) {
4146          touchStartY    = e.touches[0].clientY;
4147          touchStartTime = Date.now();
4148        }
4149
4150        function onTouchEnd(e) {
4151          if (!snapEnabled || isSnapping) return;
4152          var dy = touchStartY - e.changedTouches[0].clientY;
4153          if (Math.abs(dy) < 60 || (Date.now() - touchStartTime) > 500) return;
4154
4155          var active = getSnappedSection();
4156          if (active === -1) return;
4157
4158          var dir    = dy > 0 ? 1 : -1;
4159          var target = active + dir;
4160          if (target < 0 || target >= sections.length) return;
4161          snapTo(target);
4162        }
4163
4164        /* ── Lifecycle ───────────────────────────────────── */
4165
4166        function attach() {
4167          window.addEventListener('scroll', onScroll, { passive: true });
4168          document.addEventListener('wheel', onWheel, { passive: false });
4169          document.addEventListener('keydown', onKeydown);
4170          document.addEventListener('touchstart', onTouchStart, { passive: true });
4171          document.addEventListener('touchend', onTouchEnd, { passive: true });
4172        }
4173
4174        function detach() {
4175          window.removeEventListener('scroll', onScroll);
4176          document.removeEventListener('wheel', onWheel);
4177          document.removeEventListener('keydown', onKeydown);
4178          document.removeEventListener('touchstart', onTouchStart);
4179          document.removeEventListener('touchend', onTouchEnd);
4180          clearTimeout(scrollTimer);
4181          clearTimeout(cooldownTimer);
4182          isSnapping = false;
4183        }
4184
4185        /* ── Resize guard: toggle snap on/off at breakpoint ── */
4186        var resizeTimer;
4187        window.addEventListener('resize', function() {
4188          clearTimeout(resizeTimer);
4189          resizeTimer = setTimeout(function() {
4190            var wide = window.innerWidth > MOBILE_BP;
4191            if (wide && !snapEnabled) {
4192              snapEnabled = true;
4193              attach();
4194            } else if (!wide && snapEnabled) {
4195              snapEnabled = false;
4196              detach();
4197            }
4198          }, 200);
4199        });
4200
4201        // Initial attach if desktop
4202        if (snapEnabled) attach();
4203      }
4204
4205      if (document.readyState === 'loading') {
4206        document.addEventListener('DOMContentLoaded', initSectionSnap);
4207      } else {
4208        initSectionSnap();
4209      }
4210    })();
4211    </script>
4211
4212        
4212<script>
4213    (function() {
4214      /**
4215       * Section Snap Scroll
4216       * ─────────────────────────────────────────────────────
4217       * Smooth snap between .product-feature-section blocks.
4218       * Desktop only (> 900px). Sections keep natural height.
4219       *
4220       * 1. User scrolls the page freely.
4221       * 2. When scrolling stops and a section top is near the
4222       *    viewport top, it nudges into alignment.
4223       * 3. Once aligned, wheel / key / touch gestures move
4224       *    one section at a time.
4225       * 4. At the first or last section, normal scroll resumes.
4226       * 5. Rapid aggressive scrolling bypasses snap (escape hatch).
4227       */
4228      var MOBILE_BP = 900;
4229
4230      function initSectionSnap() {
4231        var sections = Array.prototype.slice.call(
4232          document.querySelectorAll('.product-feature-section')
4233        );
4234        if (sections.length < 2) return;
4235
4236        var isSnapping  = false;
4237        var snapEnabled = window.innerWidth > MOBILE_BP;
4238
4239        /* ── Tuning constants ────────────────────────────── */
4240        var SNAP_THRESHOLD  = 60;    // px – top must be this close to count as "snapped"
4241        var NUDGE_THRESHOLD = 50;    // px – scroll-end nudge range
4242        var NUDGE_DEAD_ZONE = 3;     // px – already aligned, skip nudge
4243        var DELTA_THRESHOLD = 35;    // ignore small trackpad deltas
4244        var SNAP_COOLDOWN   = 1000;  // ms – fallback unlock timer
4245        var NUDGE_DELAY     = 320;   // ms – pause after scroll stops before nudge
4246        var RAPID_WINDOW    = 300;   // ms – rapid-scroll detection window
4247        var RAPID_COUNT     = 4;     // events in window = escape
4248
4249        var hasScrollEnd    = 'onscrollend' in window;
4250        var cooldownTimer   = null;
4251        var scrollTimer     = null;
4252        var wheelTimestamps = [];
4253
4254        /* ── Helpers ─────────────────────────────────────── */
4255
4256        /** Get fixed header height to offset scroll targets. */
4257        function getHeaderOffset() {
4258          var header = document.querySelector('.main-header');
4259          if (!header) return 0;
4260          var style = window.getComputedStyle(header);
4261          var pos = style.position;
4262          if (pos === 'fixed' || pos === 'sticky') return header.offsetHeight;
4263          return 0;
4264        }
4265
4266        /** Index of section whose top is within SNAP_THRESHOLD of header bottom, or -1. */
4267        function getSnappedSection() {
4268          var offset = getHeaderOffset();
4269          for (var i = 0; i < sections.length; i++) {
4270            if (Math.abs(sections[i].getBoundingClientRect().top - offset) < SNAP_THRESHOLD) {
4271              return i;
4272            }
4273          }
4274          return -1;
4275        }
4276
4277        /** Smooth-scroll to a section; lock input until settled. */
4278        function snapTo(index) {
4279          if (index < 0 || index >= sections.length) return;
4280          isSnapping = true;
4281
4282          var offset = getHeaderOffset();
4283          var targetY = sections[index].getBoundingClientRect().top + window.pageYOffset - offset;
4284          window.scrollTo({ top: targetY, behavior: 'smooth' });
4285
4286          // Prefer scrollend event; fall back to timeout
4287          if (hasScrollEnd) {
4288            var done = false;
4289            function unlock() {
4290              if (done) return;
4291              done = true;
4292              isSnapping = false;
4293              window.removeEventListener('scrollend', unlock);
4294              clearTimeout(cooldownTimer);
4295            }
4296            window.addEventListener('scrollend', unlock, { once: true });
4297            cooldownTimer = setTimeout(unlock, SNAP_COOLDOWN);
4298          } else {
4299            clearTimeout(cooldownTimer);
4300            cooldownTimer = setTimeout(function() { isSnapping = false; }, SNAP_COOLDOWN);
4301          }
4302        }
4303
4304        /**
4305         * Detect rapid scrolling (escape hatch).
4306         * If RAPID_COUNT wheel events fire within RAPID_WINDOW ms
4307         * the user is scrolling aggressively – let them free-scroll.
4308         */
4309        function isRapidScroll() {
4310          var now = Date.now();
4311          wheelTimestamps.push(now);
4312          while (wheelTimestamps.length && wheelTimestamps[0] < now - RAPID_WINDOW) {
4313            wheelTimestamps.shift();
4314          }
4315          return wheelTimestamps.length >= RAPID_COUNT;
4316        }
4317
4318        /* ── Event handlers ──────────────────────────────── */
4319
4320        /** Scroll-end nudge: after free scrolling stops, gently align. */
4321        function onScroll() {
4322          if (isSnapping || !snapEnabled) return;
4323          clearTimeout(scrollTimer);
4324          scrollTimer = setTimeout(function() {
4325            if (isSnapping) return;
4326            var offset = getHeaderOffset();
4327            for (var i = 0; i < sections.length; i++) {
4328              var dist = Math.abs(sections[i].getBoundingClientRect().top - offset);
4329              if (dist > NUDGE_DEAD_ZONE && dist < NUDGE_THRESHOLD) {
4330                snapTo(i);
4331                return;
4332              }
4333            }
4334          }, NUDGE_DELAY);
4335        }
4336
4337        /** Wheel: snap one section when aligned; ignore otherwise. */
4338        function onWheel(e) {
4339          if (!snapEnabled) return;
4340          if (isSnapping) { e.preventDefault(); return; }
4341          if (Math.abs(e.deltaY) < DELTA_THRESHOLD) return;
4342
4343          // Escape hatch – rapid scrolling bypasses snap
4344          if (isRapidScroll()) return;
4345
4346          var active = getSnappedSection();
4347          if (active === -1) return; // not in snap zone → normal scroll
4348
4349          var dir    = e.deltaY > 0 ? 1 : -1;
4350          var target = active + dir;
4351
4352          // Boundary: release to normal page scroll
4353          if (target < 0 || target >= sections.length) return;
4354
4355          e.preventDefault();
4356          snapTo(target);
4357        }
4358
4359        /** Keyboard: ArrowDown/Up, PageDown/Up. */
4360        function onKeydown(e) {
4361          if (!snapEnabled || isSnapping) return;
4362          var dir = 0;
4363          if (e.key === 'ArrowDown' || e.key === 'PageDown') dir = 1;
4364          else if (e.key === 'ArrowUp' || e.key === 'PageUp') dir = -1;
4365          if (!dir) return;
4366
4367          var active = getSnappedSection();
4368          if (active === -1) return;
4369
4370          var target = active + dir;
4371          if (target < 0 || target >= sections.length) return;
4372
4373          e.preventDefault();
4374          snapTo(target);
4375        }
4376
4377        /** Touch swipe: deliberate gesture only (>60px, <500ms). */
4378        var touchStartY = 0;
4379        var touchStartTime = 0;
4380
4381        function onTouchStart(e) {
4382          touchStartY    = e.touches[0].clientY;
4383          touchStartTime = Date.now();
4384        }
4385
4386        function onTouchEnd(e) {
4387          if (!snapEnabled || isSnapping) return;
4388          var dy = touchStartY - e.changedTouches[0].clientY;
4389          if (Math.abs(dy) < 60 || (Date.now() - touchStartTime) > 500) return;
4390
4391          var active = getSnappedSection();
4392          if (active === -1) return;
4393
4394          var dir    = dy > 0 ? 1 : -1;
4395          var target = active + dir;
4396          if (target < 0 || target >= sections.length) return;
4397          snapTo(target);
4398        }
4399
4400        /* ── Lifecycle ───────────────────────────────────── */
4401
4402        function attach() {
4403          window.addEventListener('scroll', onScroll, { passive: true });
4404          document.addEventListener('wheel', onWheel, { passive: false });
4405          document.addEventListener('keydown', onKeydown);
4406          document.addEventListener('touchstart', onTouchStart, { passive: true });
4407          document.addEventListener('touchend', onTouchEnd, { passive: true });
4408        }
4409
4410        function detach() {
4411          window.removeEventListener('scroll', onScroll);
4412          document.removeEventListener('wheel', onWheel);
4413          document.removeEventListener('keydown', onKeydown);
4414          document.removeEventListener('touchstart', onTouchStart);
4415          document.removeEventListener('touchend', onTouchEnd);
4416          clearTimeout(scrollTimer);
4417          clearTimeout(cooldownTimer);
4418          isSnapping = false;
4419        }
4420
4421        /* ── Resize guard: toggle snap on/off at breakpoint ── */
4422        var resizeTimer;
4423        window.addEventListener('resize', function() {
4424          clearTimeout(resizeTimer);
4425          resizeTimer = setTimeout(function() {
4426            var wide = window.innerWidth > MOBILE_BP;
4427            if (wide && !snapEnabled) {
4428              snapEnabled = true;
4429              attach();
4430            } else if (!wide && snapEnabled) {
4431              snapEnabled = false;
4432              detach();
4433            }
4434          }, 200);
4435        });
4436
4437        // Initial attach if desktop
4438        if (snapEnabled) attach();
4439      }
4440
4441      if (document.readyState === 'loading') {
4442        document.addEventListener('DOMContentLoaded', initSectionSnap);
4443      } else {
4444        initSectionSnap();
4445      }
4446    })();
4447    </script>
4447
4448        
4448<script>
4449    (function() {
4450      /**
4451       * Section Snap Scroll
4452       * ─────────────────────────────────────────────────────
4453       * Smooth snap between .product-feature-section blocks.
4454       * Desktop only (> 900px). Sections keep natural height.
4455       *
4456       * 1. User scrolls the page freely.
4457       * 2. When scrolling stops and a section top is near the
4458       *    viewport top, it nudges into alignment.
4459       * 3. Once aligned, wheel / key / touch gestures move
4460       *    one section at a time.
4461       * 4. At the first or last section, normal scroll resumes.
4462       * 5. Rapid aggressive scrolling bypasses snap (escape hatch).
4463       */
4464      var MOBILE_BP = 900;
4465
4466      function initSectionSnap() {
4467        var sections = Array.prototype.slice.call(
4468          document.querySelectorAll('.product-feature-section')
4469        );
4470        if (sections.length < 2) return;
4471
4472        var isSnapping  = false;
4473        var snapEnabled = window.innerWidth > MOBILE_BP;
4474
4475        /* ── Tuning constants ────────────────────────────── */
4476        var SNAP_THRESHOLD  = 60;    // px – top must be this close to count as "snapped"
4477        var NUDGE_THRESHOLD = 50;    // px – scroll-end nudge range
4478        var NUDGE_DEAD_ZONE = 3;     // px – already aligned, skip nudge
4479        var DELTA_THRESHOLD = 35;    // ignore small trackpad deltas
4480        var SNAP_COOLDOWN   = 1000;  // ms – fallback unlock timer
4481        var NUDGE_DELAY     = 320;   // ms – pause after scroll stops before nudge
4482        var RAPID_WINDOW    = 300;   // ms – rapid-scroll detection window
4483        var RAPID_COUNT     = 4;     // events in window = escape
4484
4485        var hasScrollEnd    = 'onscrollend' in window;
4486        var cooldownTimer   = null;
4487        var scrollTimer     = null;
4488        var wheelTimestamps = [];
4489
4490        /* ── Helpers ─────────────────────────────────────── */
4491
4492        /** Get fixed header height to offset scroll targets. */
4493        function getHeaderOffset() {
4494          var header = document.querySelector('.main-header');
4495          if (!header) return 0;
4496          var style = window.getComputedStyle(header);
4497          var pos = style.position;
4498          if (pos === 'fixed' || pos === 'sticky') return header.offsetHeight;
4499          return 0;
4500        }
4501
4502        /** Index of section whose top is within SNAP_THRESHOLD of header bottom, or -1. */
4503        function getSnappedSection() {
4504          var offset = getHeaderOffset();
4505          for (var i = 0; i < sections.length; i++) {
4506            if (Math.abs(sections[i].getBoundingClientRect().top - offset) < SNAP_THRESHOLD) {
4507              return i;
4508            }
4509          }
4510          return -1;
4511        }
4512
4513        /** Smooth-scroll to a section; lock input until settled. */
4514        function snapTo(index) {
4515          if (index < 0 || index >= sections.length) return;
4516          isSnapping = true;
4517
4518          var offset = getHeaderOffset();
4519          var targetY = sections[index].getBoundingClientRect().top + window.pageYOffset - offset;
4520          window.scrollTo({ top: targetY, behavior: 'smooth' });
4521
4522          // Prefer scrollend event; fall back to timeout
4523          if (hasScrollEnd) {
4524            var done = false;
4525            function unlock() {
4526              if (done) return;
4527              done = true;
4528              isSnapping = false;
4529              window.removeEventListener('scrollend', unlock);
4530              clearTimeout(cooldownTimer);
4531            }
4532            window.addEventListener('scrollend', unlock, { once: true });
4533            cooldownTimer = setTimeout(unlock, SNAP_COOLDOWN);
4534          } else {
4535            clearTimeout(cooldownTimer);
4536            cooldownTimer = setTimeout(function() { isSnapping = false; }, SNAP_COOLDOWN);
4537          }
4538        }
4539
4540        /**
4541         * Detect rapid scrolling (escape hatch).
4542         * If RAPID_COUNT wheel events fire within RAPID_WINDOW ms
4543         * the user is scrolling aggressively – let them free-scroll.
4544         */
4545        function isRapidScroll() {
4546          var now = Date.now();
4547          wheelTimestamps.push(now);
4548          while (wheelTimestamps.length && wheelTimestamps[0] < now - RAPID_WINDOW) {
4549            wheelTimestamps.shift();
4550          }
4551          return wheelTimestamps.length >= RAPID_COUNT;
4552        }
4553
4554        /* ── Event handlers ──────────────────────────────── */
4555
4556        /** Scroll-end nudge: after free scrolling stops, gently align. */
4557        function onScroll() {
4558          if (isSnapping || !snapEnabled) return;
4559          clearTimeout(scrollTimer);
4560          scrollTimer = setTimeout(function() {
4561            if (isSnapping) return;
4562            var offset = getHeaderOffset();
4563            for (var i = 0; i < sections.length; i++) {
4564              var dist = Math.abs(sections[i].getBoundingClientRect().top - offset);
4565              if (dist > NUDGE_DEAD_ZONE && dist < NUDGE_THRESHOLD) {
4566                snapTo(i);
4567                return;
4568              }
4569            }
4570          }, NUDGE_DELAY);
4571        }
4572
4573        /** Wheel: snap one section when aligned; ignore otherwise. */
4574        function onWheel(e) {
4575          if (!snapEnabled) return;
4576          if (isSnapping) { e.preventDefault(); return; }
4577          if (Math.abs(e.deltaY) < DELTA_THRESHOLD) return;
4578
4579          // Escape hatch – rapid scrolling bypasses snap
4580          if (isRapidScroll()) return;
4581
4582          var active = getSnappedSection();
4583          if (active === -1) return; // not in snap zone → normal scroll
4584
4585          var dir    = e.deltaY > 0 ? 1 : -1;
4586          var target = active + dir;
4587
4588          // Boundary: release to normal page scroll
4589          if (target < 0 || target >= sections.length) return;
4590
4591          e.preventDefault();
4592          snapTo(target);
4593        }
4594
4595        /** Keyboard: ArrowDown/Up, PageDown/Up. */
4596        function onKeydown(e) {
4597          if (!snapEnabled || isSnapping) return;
4598          var dir = 0;
4599          if (e.key === 'ArrowDown' || e.key === 'PageDown') dir = 1;
4600          else if (e.key === 'ArrowUp' || e.key === 'PageUp') dir = -1;
4601          if (!dir) return;
4602
4603          var active = getSnappedSection();
4604          if (active === -1) return;
4605
4606          var target = active + dir;
4607          if (target < 0 || target >= sections.length) return;
4608
4609          e.preventDefault();
4610          snapTo(target);
4611        }
4612
4613        /** Touch swipe: deliberate gesture only (>60px, <500ms). */
4614        var touchStartY = 0;
4615        var touchStartTime = 0;
4616
4617        function onTouchStart(e) {
4618          touchStartY    = e.touches[0].clientY;
4619          touchStartTime = Date.now();
4620        }
4621
4622        function onTouchEnd(e) {
4623          if (!snapEnabled || isSnapping) return;
4624          var dy = touchStartY - e.changedTouches[0].clientY;
4625          if (Math.abs(dy) < 60 || (Date.now() - touchStartTime) > 500) return;
4626
4627          var active = getSnappedSection();
4628          if (active === -1) return;
4629
4630          var dir    = dy > 0 ? 1 : -1;
4631          var target = active + dir;
4632          if (target < 0 || target >= sections.length) return;
4633          snapTo(target);
4634        }
4635
4636        /* ── Lifecycle ───────────────────────────────────── */
4637
4638        function attach() {
4639          window.addEventListener('scroll', onScroll, { passive: true });
4640          document.addEventListener('wheel', onWheel, { passive: false });
4641          document.addEventListener('keydown', onKeydown);
4642          document.addEventListener('touchstart', onTouchStart, { passive: true });
4643          document.addEventListener('touchend', onTouchEnd, { passive: true });
4644        }
4645
4646        function detach() {
4647          window.removeEventListener('scroll', onScroll);
4648          document.removeEventListener('wheel', onWheel);
4649          document.removeEventListener('keydown', onKeydown);
4650          document.removeEventListener('touchstart', onTouchStart);
4651          document.removeEventListener('touchend', onTouchEnd);
4652          clearTimeout(scrollTimer);
4653          clearTimeout(cooldownTimer);
4654          isSnapping = false;
4655        }
4656
4657        /* ── Resize guard: toggle snap on/off at breakpoint ── */
4658        var resizeTimer;
4659        window.addEventListener('resize', function() {
4660          clearTimeout(resizeTimer);
4661          resizeTimer = setTimeout(function() {
4662            var wide = window.innerWidth > MOBILE_BP;
4663            if (wide && !snapEnabled) {
4664              snapEnabled = true;
4665              attach();
4666            } else if (!wide && snapEnabled) {
4667              snapEnabled = false;
4668              detach();
4669            }
4670          }, 200);
4671        });
4672
4673        // Initial attach if desktop
4674        if (snapEnabled) attach();
4675      }
4676
4677      if (document.readyState === 'loading') {
4678        document.addEventListener('DOMContentLoaded', initSectionSnap);
4679      } else {
4680        initSectionSnap();
4681      }
4682    })();
4683    </script>
4683
4684        <style>
4685        /* ============================================
4686           GLOBAL DARK MODE TRANSITIONS
4687           ============================================ */
4688        
4689        /* Smooth transition for all elements when dark mode toggles */
4690        body.dark-mode-transition,
4691        body.dark-mode-transition *,
4692        body.dark-mode-transition *::before,
4693        body.dark-mode-transition *::after {
4694            transition: 
4695                background-color 0.4s ease,
4696                color 0.4s ease,
4697                border-color 0.4s ease,
4698                fill 0.4s ease,
4699                stroke 0.4s ease,
4700                box-shadow 0.4s ease !important;
4701        }
4702        
4703        /* ============================================
4704           DARK MODE TOGGLE BUTTON
4705           ============================================ */
4706        .nylas-darkmode-toggle {
4707            position: fixed;
4708            bottom: 24px;
4709            right: 24px;
4710            width: 48px;
4711            height: 48px;
4712            border-radius: 50%;
4713            background: #1a1a1a;
4714            border: 2px solid #333;
4715            cursor: pointer;
4716            display: flex;
4717            align-items: center;
4718            justify-content: center;
4719            z-index: 99999;
4720            transition: all 0.3s ease;
4721            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
4722            overflow: hidden;
4723        }
4724        
4725        .nylas-darkmode-toggle:hover {
4726            transform: scale(1.1);
4727            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
4728        }
4729        
4730        .nylas-darkmode-toggle:active {
4731            transform: scale(0.95);
4732        }
4733        
4734        /* Icon container for animation */
4735        .nylas-darkmode-toggle .icon-wrapper {
4736            position: relative;
4737            width: 24px;
4738            height: 24px;
4739        }
4740        
4741        .nylas-darkmode-toggle svg {
4742            position: absolute;
4743            top: 0;
4744            left: 0;
4745            width: 24px;
4746            height: 24px;
4747            transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
4748        }
4749        
4750        /* Moon icon (shown in light mode) */
4751        .nylas-darkmode-toggle .icon-moon {
4752            color: #f5f5f5;
4753            opacity: 1;
4754            transform: rotate(0deg) scale(1);
4755        }
4756        
4757        /* Sun icon (hidden in light mode) */
4758        .nylas-darkmode-toggle .icon-sun {
4759            color: #fbbf24;
4760            opacity: 0;
4761            transform: rotate(-90deg) scale(0.5);
4762        }
4763        
4764        /* ============================================
4765           DARK MODE ACTIVE STATE
4766           ============================================ */
4767        body.dark-mode .nylas-darkmode-toggle {
4768            background: #ffffff;
4769            border-color: #e5e5e5;
4770            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
4771        }
4772        
4773        body.dark-mode .nylas-darkmode-toggle:hover {
4774            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
4775        }
4776        
4777        /* Moon hides with rotation */
4778        body.dark-mode .nylas-darkmode-toggle .icon-moon {
4779            opacity: 0;
4780            transform: rotate(90deg) scale(0.5);
4781        }
4782        
4783        /* Sun appears with rotation */
4784        body.dark-mode .nylas-darkmode-toggle .icon-sun {
4785            opacity: 1;
4786            transform: rotate(0deg) scale(1);
4787        }
4788        
4789        /* Sun rays animation on hover */
4790        body.dark-mode .nylas-darkmode-toggle:hover .icon-sun {
4791            animation: sunPulse 1.5s ease-in-out infinite;
4792        }
4793        
4794        @keyframes sunPulse {
4795            0%, 100% { transform: rotate(0deg) scale(1); }
4796            50% { transform: rotate(15deg) scale(1.1); }
4797        }
4798        
4799        /* Moon glow animation on hover */
4800        body:not(.dark-mode) .nylas-darkmode-toggle:hover .icon-moon {
4801            animation: moonGlow 2s ease-in-out infinite;
4802        }
4803        
4804        @keyframes moonGlow {
4805            0%, 100% { filter: drop-shadow(0 0 0px rgba(255,255,255,0)); }
4806            50% { filter: drop-shadow(0 0 8px rgba(255,255,255,0.6)); }
4807        }
4808    </style>
4809    
4810    <button class="nylas-darkmode-toggle" id="nylas-darkmode-toggle" aria-label="Toggle dark mode" title="Toggle dark mode">
4811        <span class="icon-wrapper">
4812            <!-- Moon Icon (Light Mode) -->
4813            <svg class="icon-moon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
4814                <path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />
4815            </svg>
4816            <!-- Sun Icon (Dark Mode) -->
4817            <svg class="icon-sun" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
4818                <path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />
4819            </svg>
4820        </span>
4821    </button>
4822    
4823    
4823<script>
4824        (function() {
4825            const toggle = document.getElementById('nylas-darkmode-toggle');
4826            const body = document.body;
4827            const storageKey = 'nylas-dark-mode';
4828            
4829            // Check for saved preference (apply instantly on load, no transition)
4830            const savedMode = localStorage.getItem(storageKey);
4831            if (savedMode === 'true') {
4832                body.classList.add('dark-mode');
4833            }
4834            
4835            // Toggle handler with smooth transition
4836            toggle.addEventListener('click', function() {
4837                // Add transition class for smooth animation
4838                body.classList.add('dark-mode-transition');
4839                
4840                // Toggle dark mode
4841                body.classList.toggle('dark-mode');
4842                const isDark = body.classList.contains('dark-mode');
4843                localStorage.setItem(storageKey, isDark);
4844                
4845                // Remove transition class after animation completes
4846                setTimeout(function() {
4847                    body.classList.remove('dark-mode-transition');
4848                }, 500);
4849            });
4850        })();
4851    </script>
4851
4852    	
4852<script defer src="/.cloud/rum/otel-rum-exporter.js?v=1.0.1"></script>
vendor: 1 bytes, line 4852
4852
4853<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"df67842450844fa185a3a8a88950c8ba","spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 4853
4853
4854<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a4007aa92dac122a',t:'MTc5MDIzOTE3Mg=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
4854</body>
4855</html><!--
4856Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com
4857
4858Retrieved 35285 objects (4 MB) from Redis using PhpRedis (v6.3.0).
4859-->

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