<!DOCTYPE html>
<html lang="en-US">
<head>
		<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
	<link rel="profile" href="http://gmpg.org/xfn/11">
			<link rel="pingback" href="https://ceeveeglobal.com/xmlrpc.php">
		<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />

	<!-- This site is optimized with the Yoast SEO plugin v28.0 - https://yoast.com/product/yoast-seo-wordpress/ -->
	<title>FastAPI Email Verification API: How I Built It</title>
	<meta name="description" content="I built a free FastAPI email verification API to block junk Mautic signups — real code for syntax, disposable domain, role, and MX checks you can self-host." />
	<link rel="canonical" href="https://ceeveeglobal.com/fastapi-email-verification-api/" />
	<meta property="og:locale" content="en_US" />
	<meta property="og:type" content="article" />
	<meta property="og:title" content="FastAPI Email Verification API: How I Built It" />
	<meta property="og:description" content="I built a free FastAPI email verification API to block junk Mautic signups — real code for syntax, disposable domain, role, and MX checks you can self-host." />
	<meta property="og:url" content="https://ceeveeglobal.com/fastapi-email-verification-api/" />
	<meta property="og:site_name" content="The Beginner’s Playbook for Fixing WordPress Errors" />
	<meta property="article:published_time" content="2026-07-09T16:14:49+00:00" />
	<meta property="article:modified_time" content="2026-07-09T16:18:13+00:00" />
	<meta property="og:image" content="https://s3.ceeveeglobal.com/ceeveeglobalimages/fastapi-email-verification-api-featured.webp" />
	<meta property="og:image:width" content="919" />
	<meta property="og:image:height" content="689" />
	<meta property="og:image:type" content="image/webp" />
	<meta name="author" content="Dimuthu Harshana" />
	<meta name="twitter:card" content="summary_large_image" />
	<meta name="twitter:label1" content="Written by" />
	<meta name="twitter:data1" content="Dimuthu Harshana" />
	<meta name="twitter:label2" content="Est. reading time" />
	<meta name="twitter:data2" content="10 minutes" />
	<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/#article","isPartOf":{"@id":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/"},"author":{"name":"Dimuthu Harshana","@id":"https:\/\/staging.ceeveeglobal.com\/#\/schema\/person\/60094fdc0a885a9a749653fde05a3dc3"},"headline":"FastAPI Email Verification API: How I Built It","datePublished":"2026-07-09T16:14:49+00:00","dateModified":"2026-07-09T16:18:13+00:00","mainEntityOfPage":{"@id":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/"},"wordCount":1245,"commentCount":0,"publisher":{"@id":"https:\/\/staging.ceeveeglobal.com\/#\/schema\/person\/60094fdc0a885a9a749653fde05a3dc3"},"image":{"@id":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/#primaryimage"},"thumbnailUrl":"https:\/\/s3.ceeveeglobal.com\/ceeveeglobalimages\/fastapi-email-verification-api-featured.webp","articleSection":["Beginner Guides"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/","url":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/","name":"FastAPI Email Verification API: How I Built It","isPartOf":{"@id":"https:\/\/staging.ceeveeglobal.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/#primaryimage"},"image":{"@id":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/#primaryimage"},"thumbnailUrl":"https:\/\/s3.ceeveeglobal.com\/ceeveeglobalimages\/fastapi-email-verification-api-featured.webp","datePublished":"2026-07-09T16:14:49+00:00","dateModified":"2026-07-09T16:18:13+00:00","description":"I built a free FastAPI email verification API to block junk Mautic signups — real code for syntax, disposable domain, role, and MX checks you can self-host.","breadcrumb":{"@id":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/#primaryimage","url":"https:\/\/s3.ceeveeglobal.com\/ceeveeglobalimages\/fastapi-email-verification-api-featured.webp","contentUrl":"https:\/\/s3.ceeveeglobal.com\/ceeveeglobalimages\/fastapi-email-verification-api-featured.webp","width":919,"height":689,"caption":"fastapi email verification api tutorial guide"},{"@type":"BreadcrumbList","@id":"https:\/\/ceeveeglobal.com\/fastapi-email-verification-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/staging.ceeveeglobal.com\/"},{"@type":"ListItem","position":2,"name":"FastAPI Email Verification API: How I Built It"}]},{"@type":"WebSite","@id":"https:\/\/staging.ceeveeglobal.com\/#website","url":"https:\/\/staging.ceeveeglobal.com\/","name":"The Beginner’s Playbook for Fixing WordPress Errors","description":"Effortless Fixes for WordPress Errors, Designed for Beginners","publisher":{"@id":"https:\/\/staging.ceeveeglobal.com\/#\/schema\/person\/60094fdc0a885a9a749653fde05a3dc3"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/staging.ceeveeglobal.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/staging.ceeveeglobal.com\/#\/schema\/person\/60094fdc0a885a9a749653fde05a3dc3","name":"Dimuthu Harshana","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/s3.ceeveeglobal.com\/ceeveeglobalimages\/CEEVEE.png","url":"https:\/\/s3.ceeveeglobal.com\/ceeveeglobalimages\/CEEVEE.png","contentUrl":"https:\/\/s3.ceeveeglobal.com\/ceeveeglobalimages\/CEEVEE.png","width":250,"height":100,"caption":"Dimuthu Harshana"},"logo":{"@id":"https:\/\/s3.ceeveeglobal.com\/ceeveeglobalimages\/CEEVEE.png"},"sameAs":["https:\/\/ceeveeglobal.com"],"url":"https:\/\/ceeveeglobal.com\/author\/ceeveeadmin\/"}]}</script>
	<!-- / Yoast SEO plugin. -->


<link rel='dns-prefetch' href='//www.googletagmanager.com' />
<link rel="alternate" type="application/rss+xml" title="The Beginner’s Playbook for Fixing WordPress Errors &raquo; Feed" href="https://ceeveeglobal.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="The Beginner’s Playbook for Fixing WordPress Errors &raquo; Comments Feed" href="https://ceeveeglobal.com/comments/feed/" />
<link rel="alternate" type="application/rss+xml" title="The Beginner’s Playbook for Fixing WordPress Errors &raquo; FastAPI Email Verification API: How I Built It Comments Feed" href="https://ceeveeglobal.com/fastapi-email-verification-api/feed/" />
<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://ceeveeglobal.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fceeveeglobal.com%2Ffastapi-email-verification-api%2F" />
<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://ceeveeglobal.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fceeveeglobal.com%2Ffastapi-email-verification-api%2F&#038;format=xml" />
<style id="wp-img-auto-sizes-contain-inline-css">
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<style id="wp-emoji-styles-inline-css">

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<link rel='stylesheet' id='wp-block-library-css' href='https://ceeveeglobal.com/wp-includes/css/dist/block-library/common.min.css?ver=7.0' media='all' />
<style id="classic-theme-styles-inline-css">
/*! This file is auto-generated */
.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}
/*# sourceURL=/wp-includes/css/classic-themes.min.css */
</style>
<style id="wp-block-accordion-inline-css">
.wp-block-accordion{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/accordion/style.min.css */
</style>
<style id="wp-block-accordion-item-inline-css">
.wp-block-accordion-item.is-open>.wp-block-accordion-heading .wp-block-accordion-heading__toggle-icon{transform:rotate(45deg)}@media (prefers-reduced-motion:no-preference){.wp-block-accordion-item{transition:grid-template-rows .3s ease-out}.wp-block-accordion-item>.wp-block-accordion-heading .wp-block-accordion-heading__toggle-icon{transition:transform .2s ease-in-out}}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/accordion-item/style.min.css */
</style>
<style id="wp-block-archives-inline-css">
.wp-block-archives{box-sizing:border-box}.wp-block-archives-dropdown label{display:block}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/archives/style.min.css */
</style>
<style id="wp-block-avatar-inline-css">
.wp-block-avatar{line-height:0}.wp-block-avatar,.wp-block-avatar img{box-sizing:border-box}.wp-block-avatar.aligncenter{text-align:center}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/avatar/style.min.css */
</style>
<style id="wp-block-breadcrumbs-inline-css">
.wp-block-breadcrumbs{box-sizing:border-box}.wp-block-breadcrumbs ol{flex-wrap:wrap;list-style:none}.wp-block-breadcrumbs li,.wp-block-breadcrumbs ol{align-items:center;display:flex;margin:0;padding:0}.wp-block-breadcrumbs li:not(:last-child):after{content:var(--separator,"/");margin:0 .5em;opacity:.7}.wp-block-breadcrumbs span{color:inherit}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/breadcrumbs/style.min.css */
</style>
<style id="wp-block-button-inline-css">
.wp-block-button__link{align-content:center;box-sizing:border-box;cursor:pointer;display:inline-block;height:100%;text-align:center;word-break:break-word}.wp-block-button__link.aligncenter{text-align:center}.wp-block-button__link.alignright{text-align:right}:where(.wp-block-button__link){border-radius:9999px;box-shadow:none;padding:calc(.667em + 2px) calc(1.333em + 2px);text-decoration:none}.wp-block-button[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons>.wp-block-button.has-custom-width{max-width:none}.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{width:100%}.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-buttons>.wp-block-button.wp-block-button__width-25{width:calc(25% - var(--wp--style--block-gap, .5em)*.75)}.wp-block-buttons>.wp-block-button.wp-block-button__width-50{width:calc(50% - var(--wp--style--block-gap, .5em)*.5)}.wp-block-buttons>.wp-block-button.wp-block-button__width-75{width:calc(75% - var(--wp--style--block-gap, .5em)*.25)}.wp-block-buttons>.wp-block-button.wp-block-button__width-100{flex-basis:100%;width:100%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{width:25%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{width:50%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{width:75%}.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{border-radius:0}.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{border-radius:0!important}:root :where(.wp-block-button .wp-block-button__link.is-style-outline),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link){border:2px solid;padding:.667em 1.333em}:root :where(.wp-block-button .wp-block-button__link.is-style-outline:not(.has-text-color)),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color)){color:currentColor}:root :where(.wp-block-button .wp-block-button__link.is-style-outline:not(.has-background)),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-background)){background-color:initial;background-image:none}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/button/style.min.css */
</style>
<style id="wp-block-calendar-inline-css">
.wp-block-calendar{text-align:center}.wp-block-calendar td,.wp-block-calendar th{border:1px solid;padding:.25em}.wp-block-calendar th{font-weight:400}.wp-block-calendar caption{background-color:inherit}.wp-block-calendar table{border-collapse:collapse;width:100%}.wp-block-calendar table.has-background th{background-color:inherit}.wp-block-calendar table.has-text-color th{color:inherit}.wp-block-calendar :where(table:not(.has-text-color)){color:#40464d}.wp-block-calendar :where(table:not(.has-text-color)) td,.wp-block-calendar :where(table:not(.has-text-color)) th{border-color:#ddd}:where(.wp-block-calendar table:not(.has-background) th){background:#ddd}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/calendar/style.min.css */
</style>
<style id="wp-block-categories-inline-css">
.wp-block-categories{box-sizing:border-box}.wp-block-categories.alignleft{margin-right:2em}.wp-block-categories.alignright{margin-left:2em}.wp-block-categories.wp-block-categories-dropdown.aligncenter{text-align:center}.wp-block-categories .wp-block-categories__label:not(.screen-reader-text){display:block;width:100%}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/categories/style.min.css */
</style>
<style id="wp-block-comment-author-name-inline-css">
.wp-block-comment-author-name{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/comment-author-name/style.min.css */
</style>
<style id="wp-block-comment-content-inline-css">
.comment-awaiting-moderation{display:block;font-size:.875em;line-height:1.5}.wp-block-comment-content{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/comment-content/style.min.css */
</style>
<style id="wp-block-comment-date-inline-css">
.wp-block-comment-date{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/comment-date/style.min.css */
</style>
<style id="wp-block-comment-edit-link-inline-css">
.wp-block-comment-edit-link{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/comment-edit-link/style.min.css */
</style>
<style id="wp-block-comment-reply-link-inline-css">
.wp-block-comment-reply-link{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/comment-reply-link/style.min.css */
</style>
<style id="wp-block-comment-template-inline-css">
.wp-block-comment-template{box-sizing:border-box;list-style:none;margin-bottom:0;max-width:100%;padding:0}.wp-block-comment-template li{clear:both}.wp-block-comment-template ol{list-style:none;margin-bottom:0;max-width:100%;padding-left:2rem}.wp-block-comment-template.alignleft{float:left}.wp-block-comment-template.aligncenter{margin-left:auto;margin-right:auto;width:fit-content}.wp-block-comment-template.alignright{float:right}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/comment-template/style.min.css */
</style>
<style id="wp-block-comments-inline-css">
.wp-block-post-comments{box-sizing:border-box}.wp-block-post-comments .alignleft{float:left}.wp-block-post-comments .alignright{float:right}.wp-block-post-comments .navigation:after{clear:both;content:"";display:table}.wp-block-post-comments .commentlist{clear:both;list-style:none;margin:0;padding:0}.wp-block-post-comments .commentlist .comment{min-height:2.25em;padding-left:3.25em}.wp-block-post-comments .commentlist .comment p{font-size:1em;line-height:1.8;margin:1em 0}.wp-block-post-comments .commentlist .children{list-style:none;margin:0;padding:0}.wp-block-post-comments .comment-author{line-height:1.5}.wp-block-post-comments .comment-author .avatar{border-radius:1.5em;display:block;float:left;height:2.5em;margin-right:.75em;margin-top:.5em;width:2.5em}.wp-block-post-comments .comment-author cite{font-style:normal}.wp-block-post-comments .comment-meta{font-size:.875em;line-height:1.5}.wp-block-post-comments .comment-meta b{font-weight:400}.wp-block-post-comments .comment-meta .comment-awaiting-moderation{display:block;margin-bottom:1em;margin-top:1em}.wp-block-post-comments .comment-body .commentmetadata{font-size:.875em}.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-post-comments .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-post-comments .comment-reply-title{margin-bottom:0}.wp-block-post-comments .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-left:.5em}.wp-block-post-comments .reply{font-size:.875em;margin-bottom:1.4em}.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{border:1px solid #949494;font-family:inherit;font-size:1em}.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{padding:calc(.667em + 2px)}:where(.wp-block-post-comments input[type=submit]){border:none}.wp-block-comments{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/comments/style.min.css */
</style>
<style id="wp-block-comments-pagination-inline-css">
.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{font-size:inherit}.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow{display:inline-block;margin-right:1ch}.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow{display:inline-block;margin-left:1ch}.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-comments-pagination.aligncenter{justify-content:center}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/comments-pagination/style.min.css */
</style>
<link rel='stylesheet' id='wp-block-cover-css' href='https://ceeveeglobal.com/wp-includes/blocks/cover/style.min.css?ver=7.0' media='all' />
<style id="wp-block-details-inline-css">
.wp-block-details{box-sizing:border-box}.wp-block-details summary{cursor:pointer}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/details/style.min.css */
</style>
<style id="wp-block-file-inline-css">
.wp-block-file{box-sizing:border-box}.wp-block-file:not(.wp-element-button){font-size:.8em}.wp-block-file.aligncenter{text-align:center}.wp-block-file.alignright{text-align:right}.wp-block-file *+.wp-block-file__button{margin-left:.75em}:where(.wp-block-file){margin-bottom:1.5em}.wp-block-file__embed{margin-bottom:1em}:where(.wp-block-file__button){border-radius:2em;display:inline-block;padding:.5em 1em}:where(.wp-block-file__button):where(a):active,:where(.wp-block-file__button):where(a):focus,:where(.wp-block-file__button):where(a):hover,:where(.wp-block-file__button):where(a):visited{box-shadow:none;color:#fff;opacity:.85;text-decoration:none}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/file/style.min.css */
</style>
<style id="wp-block-footnotes-inline-css">
.editor-styles-wrapper,.entry-content{counter-reset:footnotes}a[data-fn].fn{counter-increment:footnotes;display:inline-flex;font-size:smaller;text-decoration:none;text-indent:-9999999px;vertical-align:super}a[data-fn].fn:after{content:"[" counter(footnotes) "]";float:left;text-indent:0}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/footnotes/style.min.css */
</style>
<link rel='stylesheet' id='wp-block-gallery-css' href='https://ceeveeglobal.com/wp-includes/blocks/gallery/style.min.css?ver=7.0' media='all' />
<style id="wp-block-heading-inline-css">
h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/heading/style.min.css */
</style>
<style id="wp-block-icon-inline-css">
.wp-block-icon{line-height:0}.wp-block-icon.aligncenter{display:flex;justify-content:center}.wp-block-icon svg{fill:currentColor;box-sizing:border-box}:where(.wp-block-icon) svg{height:100%;width:100%}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/icon/style.min.css */
</style>
<link rel='stylesheet' id='wp-block-image-css' href='https://ceeveeglobal.com/wp-includes/blocks/image/style.min.css?ver=7.0' media='all' />
<style id="wp-block-latest-comments-inline-css">
ol.wp-block-latest-comments{box-sizing:border-box;margin-left:0}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment)){line-height:1.1}:where(.wp-block-latest-comments:not([style*=line-height] .wp-block-latest-comments__comment-excerpt p)){line-height:1.8}.has-dates :where(.wp-block-latest-comments:not([style*=line-height])),.has-excerpts :where(.wp-block-latest-comments:not([style*=line-height])){line-height:1.5}.wp-block-latest-comments .wp-block-latest-comments{padding-left:0}.wp-block-latest-comments__comment{list-style:none;margin-bottom:1em}.has-avatars .wp-block-latest-comments__comment{list-style:none;min-height:2.25em}.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-excerpt,.has-avatars .wp-block-latest-comments__comment .wp-block-latest-comments__comment-meta{margin-left:3.25em}.wp-block-latest-comments__comment-excerpt p{font-size:.875em;margin:.36em 0 1.4em}.wp-block-latest-comments__comment-date{display:block;font-size:.75em}.wp-block-latest-comments .avatar,.wp-block-latest-comments__comment-avatar{border-radius:1.5em;display:block;float:left;height:2.5em;margin-right:.75em;width:2.5em}.wp-block-latest-comments[class*=-font-size] a,.wp-block-latest-comments[style*=font-size] a{font-size:inherit}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/latest-comments/style.min.css */
</style>
<style id="wp-block-latest-posts-inline-css">
.wp-block-latest-posts{box-sizing:border-box}.wp-block-latest-posts.alignleft{margin-right:2em}.wp-block-latest-posts.alignright{margin-left:2em}.wp-block-latest-posts.wp-block-latest-posts__list{list-style:none}.wp-block-latest-posts.wp-block-latest-posts__list li{clear:both;overflow-wrap:break-word}.wp-block-latest-posts.is-grid{display:flex;flex-wrap:wrap}.wp-block-latest-posts.is-grid li{margin:0 1.25em 1.25em 0;width:100%}@media (min-width:600px){.wp-block-latest-posts.columns-2 li{width:calc(50% - .625em)}.wp-block-latest-posts.columns-2 li:nth-child(2n){margin-right:0}.wp-block-latest-posts.columns-3 li{width:calc(33.33333% - .83333em)}.wp-block-latest-posts.columns-3 li:nth-child(3n){margin-right:0}.wp-block-latest-posts.columns-4 li{width:calc(25% - .9375em)}.wp-block-latest-posts.columns-4 li:nth-child(4n){margin-right:0}.wp-block-latest-posts.columns-5 li{width:calc(20% - 1em)}.wp-block-latest-posts.columns-5 li:nth-child(5n){margin-right:0}.wp-block-latest-posts.columns-6 li{width:calc(16.66667% - 1.04167em)}.wp-block-latest-posts.columns-6 li:nth-child(6n){margin-right:0}}:root :where(.wp-block-latest-posts.is-grid){padding:0}:root :where(.wp-block-latest-posts.wp-block-latest-posts__list){padding-left:0}.wp-block-latest-posts__post-author,.wp-block-latest-posts__post-date{display:block;font-size:.8125em}.wp-block-latest-posts__post-excerpt,.wp-block-latest-posts__post-full-content{margin-bottom:1em;margin-top:.5em}.wp-block-latest-posts__featured-image a{display:inline-block}.wp-block-latest-posts__featured-image img{height:auto;max-width:100%;width:auto}.wp-block-latest-posts__featured-image.alignleft{float:left;margin-right:1em}.wp-block-latest-posts__featured-image.alignright{float:right;margin-left:1em}.wp-block-latest-posts__featured-image.aligncenter{margin-bottom:1em;text-align:center}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/latest-posts/style.min.css */
</style>
<style id="wp-block-list-inline-css">
ol,ul{box-sizing:border-box}:root :where(.wp-block-list.has-background){padding:1.25em 2.375em}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/list/style.min.css */
</style>
<style id="wp-block-loginout-inline-css">
.wp-block-loginout{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/loginout/style.min.css */
</style>
<link rel='stylesheet' id='wp-block-media-text-css' href='https://ceeveeglobal.com/wp-includes/blocks/media-text/style.min.css?ver=7.0' media='all' />
<link rel='stylesheet' id='wp-block-navigation-css' href='https://ceeveeglobal.com/wp-includes/blocks/navigation/style.min.css?ver=7.0' media='all' />
<style id="wp-block-navigation-link-inline-css">
.wp-block-navigation .wp-block-navigation-item__label{overflow-wrap:break-word}.wp-block-navigation .wp-block-navigation-item__description{display:none}.link-ui-tools{outline:1px solid #f0f0f0;padding:8px}.link-ui-block-inserter{padding-top:8px}.link-ui-block-inserter__back{margin-left:8px;text-transform:uppercase}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/navigation-link/style.min.css */
</style>
<style id="wp-block-navigation-overlay-close-inline-css">
.wp-block-navigation-overlay-close{align-items:center;background:#0000;border:none;cursor:pointer;display:inline-flex;gap:.5em;justify-content:center;padding:0;text-decoration:none}.wp-block-navigation-overlay-close:focus{outline-offset:2px}.wp-block-navigation-overlay-close svg{fill:currentColor;display:block;flex-shrink:0;height:24px;width:24px}.wp-block-navigation-overlay-close .wp-block-navigation-overlay-close__text{align-items:center;display:inline-flex}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/navigation-overlay-close/style.min.css */
</style>
<style id="wp-block-page-list-inline-css">
.wp-block-navigation .wp-block-page-list{align-items:var(--navigation-layout-align,initial);background-color:inherit;display:flex;flex-direction:var(--navigation-layout-direction,initial);flex-wrap:var(--navigation-layout-wrap,wrap);justify-content:var(--navigation-layout-justify,initial)}.wp-block-navigation .wp-block-navigation-item{background-color:inherit}.wp-block-page-list{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/page-list/style.min.css */
</style>
<style id="wp-block-paragraph-inline-css">
.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/paragraph/style.min.css */
</style>
<style id="wp-block-post-author-inline-css">
.wp-block-post-author{box-sizing:border-box;display:flex;flex-wrap:wrap}.wp-block-post-author__byline{font-size:.5em;margin-bottom:0;margin-top:0;width:100%}.wp-block-post-author__avatar{margin-right:1em}.wp-block-post-author__bio{font-size:.7em;margin-bottom:.7em}.wp-block-post-author__content{flex-basis:0;flex-grow:1}.wp-block-post-author__name{margin:0}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-author/style.min.css */
</style>
<style id="wp-block-post-author-biography-inline-css">
.wp-block-post-author-biography{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-author-biography/style.min.css */
</style>
<style id="wp-block-post-author-name-inline-css">
.wp-block-post-author-name{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-author-name/style.min.css */
</style>
<style id="wp-block-post-comments-count-inline-css">
.wp-block-post-comments-count{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-comments-count/style.min.css */
</style>
<style id="wp-block-post-comments-form-inline-css">
:where(.wp-block-post-comments-form input:not([type=submit])),:where(.wp-block-post-comments-form textarea){border:1px solid #949494;font-family:inherit;font-size:1em}:where(.wp-block-post-comments-form input:where(:not([type=submit]):not([type=checkbox]))),:where(.wp-block-post-comments-form textarea){padding:calc(.667em + 2px)}.wp-block-post-comments-form{box-sizing:border-box}.wp-block-post-comments-form[style*=font-weight] :where(.comment-reply-title){font-weight:inherit}.wp-block-post-comments-form[style*=font-family] :where(.comment-reply-title){font-family:inherit}.wp-block-post-comments-form[class*=-font-size] :where(.comment-reply-title),.wp-block-post-comments-form[style*=font-size] :where(.comment-reply-title){font-size:inherit}.wp-block-post-comments-form[style*=line-height] :where(.comment-reply-title){line-height:inherit}.wp-block-post-comments-form[style*=font-style] :where(.comment-reply-title){font-style:inherit}.wp-block-post-comments-form[style*=letter-spacing] :where(.comment-reply-title){letter-spacing:inherit}.wp-block-post-comments-form :where(input[type=submit]){box-shadow:none;cursor:pointer;display:inline-block;overflow-wrap:break-word;text-align:center}.wp-block-post-comments-form .comment-form input:not([type=submit]):not([type=checkbox]):not([type=hidden]),.wp-block-post-comments-form .comment-form textarea{box-sizing:border-box;display:block;width:100%}.wp-block-post-comments-form .comment-form-author label,.wp-block-post-comments-form .comment-form-email label,.wp-block-post-comments-form .comment-form-url label{display:block;margin-bottom:.25em}.wp-block-post-comments-form .comment-form-cookies-consent{display:flex;gap:.25em}.wp-block-post-comments-form .comment-form-cookies-consent #wp-comment-cookies-consent{margin-top:.35em}.wp-block-post-comments-form .comment-reply-title{margin-bottom:0}.wp-block-post-comments-form .comment-reply-title :where(small){font-size:var(--wp--preset--font-size--medium,smaller);margin-left:.5em}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-comments-form/style.min.css */
</style>
<style id="wp-block-buttons-inline-css">
.wp-block-buttons{box-sizing:border-box}.wp-block-buttons.is-vertical{flex-direction:column}.wp-block-buttons.is-vertical>.wp-block-button:last-child{margin-bottom:0}.wp-block-buttons>.wp-block-button{display:inline-block;margin:0}.wp-block-buttons.is-content-justification-left{justify-content:flex-start}.wp-block-buttons.is-content-justification-left.is-vertical{align-items:flex-start}.wp-block-buttons.is-content-justification-center{justify-content:center}.wp-block-buttons.is-content-justification-center.is-vertical{align-items:center}.wp-block-buttons.is-content-justification-right{justify-content:flex-end}.wp-block-buttons.is-content-justification-right.is-vertical{align-items:flex-end}.wp-block-buttons.is-content-justification-space-between{justify-content:space-between}.wp-block-buttons.aligncenter{text-align:center}.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{margin-left:auto;margin-right:auto;width:100%}.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-buttons .wp-block-button__link{width:100%}.wp-block-button.aligncenter{text-align:center}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/buttons/style.min.css */
</style>
<style id="wp-block-post-comments-link-inline-css">
.wp-block-post-comments-link{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-comments-link/style.min.css */
</style>
<style id="wp-block-post-content-inline-css">
.wp-block-post-content{display:flow-root}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-content/style.min.css */
</style>
<style id="wp-block-post-date-inline-css">
.wp-block-post-date{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-date/style.min.css */
</style>
<style id="wp-block-post-excerpt-inline-css">
:where(.wp-block-post-excerpt){box-sizing:border-box;margin-bottom:var(--wp--style--block-gap);margin-top:var(--wp--style--block-gap)}.wp-block-post-excerpt__excerpt{margin-bottom:0;margin-top:0}.wp-block-post-excerpt__more-text{margin-bottom:0;margin-top:var(--wp--style--block-gap)}.wp-block-post-excerpt__more-link{display:inline-block}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-excerpt/style.min.css */
</style>
<style id="wp-block-post-featured-image-inline-css">
.wp-block-post-featured-image{margin-left:0;margin-right:0}.wp-block-post-featured-image a{display:block;height:100%}.wp-block-post-featured-image :where(img){box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom;width:100%}.wp-block-post-featured-image.alignfull img,.wp-block-post-featured-image.alignwide img{width:100%}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim{background-color:#000;inset:0;position:absolute}.wp-block-post-featured-image{position:relative}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-gradient{background-color:initial}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-0{opacity:0}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-10{opacity:.1}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-20{opacity:.2}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-30{opacity:.3}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-40{opacity:.4}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-50{opacity:.5}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-60{opacity:.6}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-70{opacity:.7}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-80{opacity:.8}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-90{opacity:.9}.wp-block-post-featured-image .wp-block-post-featured-image__overlay.has-background-dim-100{opacity:1}.wp-block-post-featured-image:where(.alignleft,.alignright){width:100%}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-featured-image/style.min.css */
</style>
<style id="wp-block-post-navigation-link-inline-css">
.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous{display:inline-block;margin-right:1ch}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-previous:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next{display:inline-block;margin-left:1ch}.wp-block-post-navigation-link .wp-block-post-navigation-link__arrow-next:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-post-navigation-link.has-text-align-left[style*="writing-mode: vertical-lr"],.wp-block-post-navigation-link.has-text-align-right[style*="writing-mode: vertical-rl"]{rotate:180deg}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-navigation-link/style.min.css */
</style>
<style id="wp-block-post-template-inline-css">
.wp-block-post-template{box-sizing:border-box;list-style:none;margin-bottom:0;margin-top:0;max-width:100%;padding:0}.wp-block-post-template.is-flex-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:1.25em}.wp-block-post-template.is-flex-container>li{margin:0;width:100%}@media (min-width:600px){.wp-block-post-template.is-flex-container.is-flex-container.columns-2>li{width:calc(50% - .625em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-3>li{width:calc(33.33333% - .83333em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-4>li{width:calc(25% - .9375em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-5>li{width:calc(20% - 1em)}.wp-block-post-template.is-flex-container.is-flex-container.columns-6>li{width:calc(16.66667% - 1.04167em)}}@media (max-width:600px){.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid.wp-block-post-template-is-layout-grid{grid-template-columns:1fr}}.wp-block-post-template-is-layout-constrained>li>.alignright,.wp-block-post-template-is-layout-flow>li>.alignright{float:right;margin-inline-end:0;margin-inline-start:2em}.wp-block-post-template-is-layout-constrained>li>.alignleft,.wp-block-post-template-is-layout-flow>li>.alignleft{float:left;margin-inline-end:2em;margin-inline-start:0}.wp-block-post-template-is-layout-constrained>li>.aligncenter,.wp-block-post-template-is-layout-flow>li>.aligncenter{margin-inline-end:auto;margin-inline-start:auto}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-template/style.min.css */
</style>
<style id="wp-block-post-terms-inline-css">
.wp-block-post-terms{box-sizing:border-box}.wp-block-post-terms .wp-block-post-terms__separator{white-space:pre-wrap}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-terms/style.min.css */
</style>
<style id="wp-block-post-time-to-read-inline-css">
.wp-block-post-time-to-read{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-time-to-read/style.min.css */
</style>
<style id="wp-block-post-title-inline-css">
.wp-block-post-title{box-sizing:border-box;word-break:break-word}.wp-block-post-title :where(a){display:inline-block;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:inherit}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/post-title/style.min.css */
</style>
<style id="wp-block-query-pagination-inline-css">
.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-next:last-of-type{margin-inline-start:auto}.wp-block-query-pagination.is-content-justification-space-between>.wp-block-query-pagination-previous:first-child{margin-inline-end:auto}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow{display:inline-block;margin-right:1ch}.wp-block-query-pagination .wp-block-query-pagination-previous-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-query-pagination .wp-block-query-pagination-next-arrow{display:inline-block;margin-left:1ch}.wp-block-query-pagination .wp-block-query-pagination-next-arrow:not(.is-arrow-chevron){transform:scaleX(1)}.wp-block-query-pagination.aligncenter{justify-content:center}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/query-pagination/style.min.css */
</style>
<style id="wp-block-query-title-inline-css">
.wp-block-query-title{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/query-title/style.min.css */
</style>
<style id="wp-block-query-total-inline-css">
.wp-block-query-total{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/query-total/style.min.css */
</style>
<style id="wp-block-read-more-inline-css">
.wp-block-read-more{display:block;width:fit-content}.wp-block-read-more:where(:not([style*=text-decoration])){text-decoration:none}.wp-block-read-more:where(:not([style*=text-decoration])):active,.wp-block-read-more:where(:not([style*=text-decoration])):focus{text-decoration:none}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/read-more/style.min.css */
</style>
<style id="wp-block-rss-inline-css">
ul.wp-block-rss.alignleft{margin-right:2em}ul.wp-block-rss.alignright{margin-left:2em}ul.wp-block-rss.is-grid{display:flex;flex-wrap:wrap;padding:0}ul.wp-block-rss.is-grid li{margin:0 1em 1em 0;width:100%}@media (min-width:600px){ul.wp-block-rss.columns-2 li{width:calc(50% - 1em)}ul.wp-block-rss.columns-3 li{width:calc(33.33333% - 1em)}ul.wp-block-rss.columns-4 li{width:calc(25% - 1em)}ul.wp-block-rss.columns-5 li{width:calc(20% - 1em)}ul.wp-block-rss.columns-6 li{width:calc(16.66667% - 1em)}}.wp-block-rss__item-author,.wp-block-rss__item-publish-date{display:block;font-size:.8125em}.wp-block-rss{box-sizing:border-box;list-style:none;padding:0}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/rss/style.min.css */
</style>
<style id="wp-block-search-inline-css">
.wp-block-search__button{margin-left:10px;word-break:normal}.wp-block-search__button.has-icon{line-height:0}.wp-block-search__button svg{fill:currentColor;height:1.25em;min-height:24px;min-width:24px;vertical-align:text-bottom;width:1.25em}:where(.wp-block-search__button){border:1px solid #ccc;padding:6px 10px}.wp-block-search__inside-wrapper{display:flex;flex:auto;flex-wrap:nowrap;max-width:100%}.wp-block-search__label{width:100%}.wp-block-search.wp-block-search__button-only .wp-block-search__button{box-sizing:border-box;display:flex;flex-shrink:0;justify-content:center;margin-left:0;max-width:100%}.wp-block-search.wp-block-search__button-only .wp-block-search__inside-wrapper{min-width:0!important;transition-property:width}.wp-block-search.wp-block-search__button-only .wp-block-search__input{flex-basis:100%;transition-duration:.3s}.wp-block-search.wp-block-search__button-only.wp-block-search__searchfield-hidden,.wp-block-search.wp-block-search__button-only.wp-block-search__searchfield-hidden .wp-block-search__inside-wrapper{overflow:hidden}.wp-block-search.wp-block-search__button-only.wp-block-search__searchfield-hidden .wp-block-search__input{border-left-width:0!important;border-right-width:0!important;flex-basis:0;flex-grow:0;margin:0;min-width:0!important;padding-left:0!important;padding-right:0!important;width:0!important}:where(.wp-block-search__input){appearance:none;border:1px solid #949494;flex-grow:1;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin-left:0;margin-right:0;min-width:3rem;padding:8px;text-decoration:unset!important;text-transform:inherit}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper){background-color:#fff;border:1px solid #949494;box-sizing:border-box;padding:4px}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input{border:none;border-radius:0;padding:0 4px}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) .wp-block-search__input:focus{outline:none}:where(.wp-block-search__button-inside .wp-block-search__inside-wrapper) :where(.wp-block-search__button){padding:4px 8px}.wp-block-search.aligncenter .wp-block-search__inside-wrapper{margin:auto}.wp-block[data-align=right] .wp-block-search.wp-block-search__button-only .wp-block-search__inside-wrapper{float:right}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/search/style.min.css */
</style>
<style id="wp-block-site-logo-inline-css">
.wp-block-site-logo{box-sizing:border-box;line-height:0}.wp-block-site-logo a{display:inline-block;line-height:0}.wp-block-site-logo.is-default-size img{height:auto;width:120px}.wp-block-site-logo img{height:auto;max-width:100%}.wp-block-site-logo a,.wp-block-site-logo img{border-radius:inherit}.wp-block-site-logo.aligncenter{margin-left:auto;margin-right:auto;text-align:center}:root :where(.wp-block-site-logo.is-style-rounded){border-radius:9999px}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/site-logo/style.min.css */
</style>
<style id="wp-block-site-tagline-inline-css">
.wp-block-site-tagline{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/site-tagline/style.min.css */
</style>
<style id="wp-block-site-title-inline-css">
.wp-block-site-title{box-sizing:border-box}.wp-block-site-title :where(a){color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;text-decoration:inherit}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/site-title/style.min.css */
</style>
<style id="wp-block-tag-cloud-inline-css">
.wp-block-tag-cloud{box-sizing:border-box}.wp-block-tag-cloud.aligncenter{justify-content:center;text-align:center}.wp-block-tag-cloud a{display:inline-block;margin-right:5px}.wp-block-tag-cloud span{display:inline-block;margin-left:5px;text-decoration:none}:root :where(.wp-block-tag-cloud.is-style-outline){display:flex;flex-wrap:wrap;gap:1ch}:root :where(.wp-block-tag-cloud.is-style-outline a){border:1px solid;font-size:unset!important;margin-right:0;padding:1ch 2ch;text-decoration:none!important}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/tag-cloud/style.min.css */
</style>
<style id="wp-block-term-count-inline-css">
.wp-block-term-count{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/term-count/style.min.css */
</style>
<style id="wp-block-term-description-inline-css">
:where(.wp-block-term-description){box-sizing:border-box;margin-bottom:var(--wp--style--block-gap);margin-top:var(--wp--style--block-gap)}.wp-block-term-description p{margin-bottom:0;margin-top:0}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/term-description/style.min.css */
</style>
<style id="wp-block-term-name-inline-css">
.wp-block-term-name{box-sizing:border-box}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/term-name/style.min.css */
</style>
<style id="wp-block-term-template-inline-css">
.wp-block-term-template{box-sizing:border-box;list-style:none;margin-bottom:0;margin-top:0;max-width:100%;padding:0}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/term-template/style.min.css */
</style>
<style id="wp-block-video-inline-css">
.wp-block-video{box-sizing:border-box}.wp-block-video video{height:auto;vertical-align:middle;width:100%}@supports (position:sticky){.wp-block-video [poster]{object-fit:cover}}.wp-block-video.aligncenter{text-align:center}.wp-block-video :where(figcaption){margin-bottom:1em;margin-top:.5em}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/video/style.min.css */
</style>
<style id="wp-block-accordion-heading-inline-css">
.wp-block-accordion-heading__toggle{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:flex;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;overflow:hidden;padding:var(--wp--preset--spacing--20,1em) 0;text-align:inherit;text-decoration:inherit;text-transform:inherit;width:100%;word-spacing:inherit}.wp-block-accordion-heading__toggle:not(:focus-visible){outline:none}.wp-block-accordion-heading__toggle:hover .wp-block-accordion-heading__toggle-title{text-decoration:underline}.wp-block-accordion-heading__toggle-title{flex:1}.wp-block-accordion-heading__toggle-icon{align-items:center;display:flex;height:1.2em;justify-content:center;width:1.2em}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/accordion-heading/style.min.css */
</style>
<style id="wp-block-accordion-panel-inline-css">
.wp-block-accordion-panel[aria-hidden=true],.wp-block-accordion-panel[inert]{display:none;margin-block-start:0}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/accordion-panel/style.min.css */
</style>
<style id="wp-block-audio-inline-css">
.wp-block-audio{box-sizing:border-box}.wp-block-audio :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-audio audio{min-width:300px;width:100%}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/audio/style.min.css */
</style>
<style id="wp-block-code-inline-css">
.wp-block-code{box-sizing:border-box}.wp-block-code code{direction:ltr;display:block;font-family:inherit;overflow-wrap:break-word;text-align:initial;white-space:pre-wrap}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/code/style.min.css */
</style>
<style id="wp-block-columns-inline-css">
.wp-block-columns{box-sizing:border-box;display:flex;flex-wrap:wrap!important}@media (min-width:782px){.wp-block-columns{flex-wrap:nowrap!important}}.wp-block-columns{align-items:normal!important}.wp-block-columns.are-vertically-aligned-top{align-items:flex-start}.wp-block-columns.are-vertically-aligned-center{align-items:center}.wp-block-columns.are-vertically-aligned-bottom{align-items:flex-end}@media (max-width:781px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:100%!important}}@media (min-width:782px){.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{flex-grow:0}}.wp-block-columns.is-not-stacked-on-mobile{flex-wrap:nowrap!important}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{flex-basis:0;flex-grow:1}.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{flex-grow:0}:where(.wp-block-columns){margin-bottom:1.75em}:where(.wp-block-columns.has-background){padding:1.25em 2.375em}.wp-block-column{flex-grow:1;min-width:0;overflow-wrap:break-word;word-break:break-word}.wp-block-column.is-vertically-aligned-top{align-self:flex-start}.wp-block-column.is-vertically-aligned-center{align-self:center}.wp-block-column.is-vertically-aligned-bottom{align-self:flex-end}.wp-block-column.is-vertically-aligned-stretch{align-self:stretch}.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{width:100%}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/columns/style.min.css */
</style>
<style id="wp-block-embed-inline-css">
.wp-block-embed.alignleft,.wp-block-embed.alignright,.wp-block[data-align=left]>[data-type="core/embed"],.wp-block[data-align=right]>[data-type="core/embed"]{max-width:360px;width:100%}.wp-block-embed.alignleft .wp-block-embed__wrapper,.wp-block-embed.alignright .wp-block-embed__wrapper,.wp-block[data-align=left]>[data-type="core/embed"] .wp-block-embed__wrapper,.wp-block[data-align=right]>[data-type="core/embed"] .wp-block-embed__wrapper{min-width:280px}.wp-block-cover .wp-block-embed{min-height:240px;min-width:320px}.wp-block-group.is-layout-flex .wp-block-embed{flex:1 1 0%;min-width:0}.wp-block-embed{overflow-wrap:break-word}.wp-block-embed :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-embed iframe{max-width:100%}.wp-block-embed__wrapper{position:relative}.wp-embed-responsive .wp-has-aspect-ratio .wp-block-embed__wrapper:before{content:"";display:block;padding-top:50%}.wp-embed-responsive .wp-has-aspect-ratio iframe{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.wp-embed-responsive .wp-embed-aspect-21-9 .wp-block-embed__wrapper:before{padding-top:42.85%}.wp-embed-responsive .wp-embed-aspect-18-9 .wp-block-embed__wrapper:before{padding-top:50%}.wp-embed-responsive .wp-embed-aspect-16-9 .wp-block-embed__wrapper:before{padding-top:56.25%}.wp-embed-responsive .wp-embed-aspect-4-3 .wp-block-embed__wrapper:before{padding-top:75%}.wp-embed-responsive .wp-embed-aspect-1-1 .wp-block-embed__wrapper:before{padding-top:100%}.wp-embed-responsive .wp-embed-aspect-9-16 .wp-block-embed__wrapper:before{padding-top:177.77%}.wp-embed-responsive .wp-embed-aspect-1-2 .wp-block-embed__wrapper:before{padding-top:200%}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/embed/style.min.css */
</style>
<style id="wp-block-group-inline-css">
.wp-block-group{box-sizing:border-box}:where(.wp-block-group.wp-block-group-is-layout-constrained){position:relative}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/group/style.min.css */
</style>
<style id="wp-block-math-inline-css">
.wp-block-math{overflow-x:auto;overflow-y:hidden}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/math/style.min.css */
</style>
<style id="wp-block-preformatted-inline-css">
.wp-block-preformatted{box-sizing:border-box;white-space:pre-wrap}:where(.wp-block-preformatted.has-background){padding:1.25em 2.375em}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/preformatted/style.min.css */
</style>
<style id="wp-block-pullquote-inline-css">
.wp-block-pullquote{box-sizing:border-box;margin:0 0 1em;overflow-wrap:break-word;padding:4em 0;text-align:center}.wp-block-pullquote blockquote,.wp-block-pullquote p{color:inherit}.wp-block-pullquote blockquote{margin:0}.wp-block-pullquote p{margin-top:0}.wp-block-pullquote p:last-child{margin-bottom:0}.wp-block-pullquote.alignleft,.wp-block-pullquote.alignright{max-width:420px}.wp-block-pullquote cite,.wp-block-pullquote footer{position:relative}.wp-block-pullquote .has-text-color a{color:inherit}.wp-block-pullquote.has-text-align-left blockquote{text-align:left}.wp-block-pullquote.has-text-align-right blockquote{text-align:right}.wp-block-pullquote.has-text-align-center blockquote{text-align:center}.wp-block-pullquote.is-style-solid-color{border:none}.wp-block-pullquote.is-style-solid-color blockquote{margin-left:auto;margin-right:auto;max-width:60%}.wp-block-pullquote.is-style-solid-color blockquote p{font-size:2em;margin-bottom:0;margin-top:0}.wp-block-pullquote.is-style-solid-color blockquote cite{font-style:normal;text-transform:none}.wp-block-pullquote :where(cite){color:inherit;display:block}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/pullquote/style.min.css */
</style>
<style id="wp-block-quote-inline-css">
.wp-block-quote{box-sizing:border-box;overflow-wrap:break-word}.wp-block-quote.is-large:where(:not(.is-style-plain)),.wp-block-quote.is-style-large:where(:not(.is-style-plain)){margin-bottom:1em;padding:0 1em}.wp-block-quote.is-large:where(:not(.is-style-plain)) p,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) p{font-size:1.5em;font-style:italic;line-height:1.6}.wp-block-quote.is-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-large:where(:not(.is-style-plain)) footer,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) cite,.wp-block-quote.is-style-large:where(:not(.is-style-plain)) footer{font-size:1.125em;text-align:right}.wp-block-quote>cite{display:block}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/quote/style.min.css */
</style>
<style id="wp-block-separator-inline-css">
@charset "UTF-8";.wp-block-separator{border:none;border-top:2px solid}:root :where(.wp-block-separator.is-style-dots){height:auto;line-height:1;text-align:center}:root :where(.wp-block-separator.is-style-dots):before{color:currentColor;content:"···";font-family:serif;font-size:1.5em;letter-spacing:2em;padding-left:2em}.wp-block-separator.is-style-dots{background:none!important;border:none!important}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/separator/style.min.css */
</style>
<link rel='stylesheet' id='wp-block-social-links-css' href='https://ceeveeglobal.com/wp-includes/blocks/social-links/style.min.css?ver=7.0' media='all' />
<style id="wp-block-spacer-inline-css">
.wp-block-spacer{clear:both}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/spacer/style.min.css */
</style>
<link rel='stylesheet' id='wp-block-table-css' href='https://ceeveeglobal.com/wp-includes/blocks/table/style.min.css?ver=7.0' media='all' />
<style id="wp-block-text-columns-inline-css">
.wp-block-text-columns,.wp-block-text-columns.aligncenter{display:flex}.wp-block-text-columns .wp-block-column{margin:0 1em;padding:0}.wp-block-text-columns .wp-block-column:first-child{margin-left:0}.wp-block-text-columns .wp-block-column:last-child{margin-right:0}.wp-block-text-columns.columns-2 .wp-block-column{width:50%}.wp-block-text-columns.columns-3 .wp-block-column{width:33.3333333333%}.wp-block-text-columns.columns-4 .wp-block-column{width:25%}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/text-columns/style.min.css */
</style>
<style id="wp-block-verse-inline-css">
pre.wp-block-verse{box-sizing:border-box;min-width:1em;overflow:auto;white-space:pre-wrap;word-break:break-word}:where(pre.wp-block-verse){font-family:inherit}
/*# sourceURL=https://ceeveeglobal.com/wp-includes/blocks/verse/style.min.css */
</style>
<style id="global-styles-inline-css">
: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--color--neve-link-color: var(--nv-primary-accent);--wp--preset--color--neve-link-hover-color: var(--nv-secondary-accent);--wp--preset--color--nv-site-bg: var(--nv-site-bg);--wp--preset--color--nv-light-bg: var(--nv-light-bg);--wp--preset--color--nv-dark-bg: var(--nv-dark-bg);--wp--preset--color--neve-text-color: var(--nv-text-color);--wp--preset--color--nv-text-dark-bg: var(--nv-text-dark-bg);--wp--preset--color--nv-c-1: var(--nv-c-1);--wp--preset--color--nv-c-2: var(--nv-c-2);--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }: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;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-neve-link-color-color{color: var(--wp--preset--color--neve-link-color) !important;}.has-neve-link-hover-color-color{color: var(--wp--preset--color--neve-link-hover-color) !important;}.has-nv-site-bg-color{color: var(--wp--preset--color--nv-site-bg) !important;}.has-nv-light-bg-color{color: var(--wp--preset--color--nv-light-bg) !important;}.has-nv-dark-bg-color{color: var(--wp--preset--color--nv-dark-bg) !important;}.has-neve-text-color-color{color: var(--wp--preset--color--neve-text-color) !important;}.has-nv-text-dark-bg-color{color: var(--wp--preset--color--nv-text-dark-bg) !important;}.has-nv-c-1-color{color: var(--wp--preset--color--nv-c-1) !important;}.has-nv-c-2-color{color: var(--wp--preset--color--nv-c-2) !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-neve-link-color-background-color{background-color: var(--wp--preset--color--neve-link-color) !important;}.has-neve-link-hover-color-background-color{background-color: var(--wp--preset--color--neve-link-hover-color) !important;}.has-nv-site-bg-background-color{background-color: var(--wp--preset--color--nv-site-bg) !important;}.has-nv-light-bg-background-color{background-color: var(--wp--preset--color--nv-light-bg) !important;}.has-nv-dark-bg-background-color{background-color: var(--wp--preset--color--nv-dark-bg) !important;}.has-neve-text-color-background-color{background-color: var(--wp--preset--color--neve-text-color) !important;}.has-nv-text-dark-bg-background-color{background-color: var(--wp--preset--color--nv-text-dark-bg) !important;}.has-nv-c-1-background-color{background-color: var(--wp--preset--color--nv-c-1) !important;}.has-nv-c-2-background-color{background-color: var(--wp--preset--color--nv-c-2) !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-neve-link-color-border-color{border-color: var(--wp--preset--color--neve-link-color) !important;}.has-neve-link-hover-color-border-color{border-color: var(--wp--preset--color--neve-link-hover-color) !important;}.has-nv-site-bg-border-color{border-color: var(--wp--preset--color--nv-site-bg) !important;}.has-nv-light-bg-border-color{border-color: var(--wp--preset--color--nv-light-bg) !important;}.has-nv-dark-bg-border-color{border-color: var(--wp--preset--color--nv-dark-bg) !important;}.has-neve-text-color-border-color{border-color: var(--wp--preset--color--neve-text-color) !important;}.has-nv-text-dark-bg-border-color{border-color: var(--wp--preset--color--nv-text-dark-bg) !important;}.has-nv-c-1-border-color{border-color: var(--wp--preset--color--nv-c-1) !important;}.has-nv-c-2-border-color{border-color: var(--wp--preset--color--nv-c-2) !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;}.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;}
:root :where(.wp-block-icon svg){width: 24px;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-term-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-term-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
/*# sourceURL=global-styles-inline-css */
</style>
<link rel='stylesheet' id='contact-form-7-css' href='https://ceeveeglobal.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.1.6' media='all' />
<link rel='stylesheet' id='neve-style-css' href='https://ceeveeglobal.com/wp-content/themes/neve/style.css?ver=3.8.13' media='all' />
<style id="neve-style-inline-css">
.nv-meta-list li.meta:not(:last-child):after { content:"/" }.nv-meta-list .no-mobile{
			display:none;
		}.nv-meta-list li.last::after{
			content: ""!important;
		}@media (min-width: 769px) {
			.nv-meta-list .no-mobile {
				display: inline-block;
			}
			.nv-meta-list li.last:not(:last-child)::after {
		 		content: "/" !important;
			}
		}
 :root{ --container: 748px;--postwidth:100%; --primarybtnbg: var(--nv-primary-accent); --primarybtnhoverbg: var(--nv-primary-accent); --primarybtncolor: #fff; --secondarybtncolor: var(--nv-primary-accent); --primarybtnhovercolor: #fff; --secondarybtnhovercolor: var(--nv-primary-accent);--primarybtnborderradius:3px;--secondarybtnborderradius:3px;--secondarybtnborderwidth:3px;--btnpadding:13px 15px;--primarybtnpadding:13px 15px;--secondarybtnpadding:calc(13px - 3px) calc(15px - 3px); --bodyfontfamily: Arial,Helvetica,sans-serif; --bodyfontsize: 15px; --bodylineheight: 1.6; --bodyletterspacing: 0px; --bodyfontweight: 400; --h1fontsize: 36px; --h1fontweight: 700; --h1lineheight: 1.2; --h1letterspacing: 0px; --h1texttransform: none; --h2fontsize: 28px; --h2fontweight: 700; --h2lineheight: 1.3; --h2letterspacing: 0px; --h2texttransform: none; --h3fontsize: 24px; --h3fontweight: 700; --h3lineheight: 1.4; --h3letterspacing: 0px; --h3texttransform: none; --h4fontsize: 20px; --h4fontweight: 700; --h4lineheight: 1.6; --h4letterspacing: 0px; --h4texttransform: none; --h5fontsize: 16px; --h5fontweight: 700; --h5lineheight: 1.6; --h5letterspacing: 0px; --h5texttransform: none; --h6fontsize: 14px; --h6fontweight: 700; --h6lineheight: 1.6; --h6letterspacing: 0px; --h6texttransform: none;--formfieldborderwidth:2px;--formfieldborderradius:3px; --formfieldbgcolor: var(--nv-site-bg); --formfieldbordercolor: #dddddd; --formfieldcolor: var(--nv-text-color);--formfieldpadding:10px 12px; } .single-post-container .alignfull > [class*="__inner-container"], .single-post-container .alignwide > [class*="__inner-container"]{ max-width:718px } .nv-meta-list{ --avatarsize: 20px; } .single .nv-meta-list{ --avatarsize: 20px; } .nv-post-cover{ --height: 250px;--padding:40px 15px;--justify: flex-start; --textalign: left; --valign: center; } .nv-post-cover .nv-title-meta-wrap, .nv-page-title-wrap, .entry-header{ --textalign: left; } .nv-is-boxed.nv-title-meta-wrap{ --padding:40px 15px; --bgcolor: var(--nv-dark-bg); } .nv-overlay{ --opacity: 50; --blendmode: normal; } .nv-is-boxed.nv-comments-wrap{ --padding:20px; } .nv-is-boxed.comment-respond{ --padding:20px; } .single:not(.single-product), .page{ --c-vspace:0 0 0 0;; } .global-styled{ --bgcolor: var(--nv-site-bg); } .header-top{ --rowbcolor: var(--nv-light-bg); --color: var(--nv-text-color); --bgcolor: var(--nv-site-bg); } .header-main{ --rowbcolor: var(--nv-light-bg); --color: var(--nv-text-color); --bgcolor: var(--nv-site-bg); } .header-bottom{ --rowbcolor: var(--nv-light-bg); --color: var(--nv-text-color); --bgcolor: var(--nv-site-bg); } .header-menu-sidebar-bg{ --justify: flex-start; --textalign: left;--flexg: 1;--wrapdropdownwidth: auto; --color: var(--nv-text-color); --bgcolor: var(--nv-site-bg); } .header-menu-sidebar{ width: 360px; } .builder-item--logo{ --maxwidth: 120px; --fs: 24px;--padding:10px 0;--margin:0; --textalign: left;--justify: flex-start; } .builder-item--nav-icon,.header-menu-sidebar .close-sidebar-panel .navbar-toggle{ --borderradius:0; } .builder-item--nav-icon{ --label-margin:0 5px 0 0;;--padding:10px 15px;--margin:0; } .builder-item--primary-menu{ --hovercolor: var(--nv-secondary-accent); --hovertextcolor: var(--nv-text-color); --activecolor: var(--nv-primary-accent); --spacing: 20px; --height: 25px;--padding:0;--margin:0; --fontsize: 1em; --lineheight: 1.6; --letterspacing: 0px; --fontweight: 500; --texttransform: none; --iconsize: 1em; } .hfg-is-group.has-primary-menu .inherit-ff{ --inheritedfw: 500; } .footer-top-inner .row{ grid-template-columns:1fr 1fr 1fr; --valign: flex-start; } .footer-top{ --rowbcolor: var(--nv-light-bg); --color: var(--nv-text-color); --bgcolor: var(--nv-site-bg); } .footer-main-inner .row{ grid-template-columns:1fr 1fr 1fr; --valign: flex-start; } .footer-main{ --rowbcolor: var(--nv-light-bg); --color: var(--nv-text-color); --bgcolor: var(--nv-site-bg); } .footer-bottom-inner .row{ grid-template-columns:1fr 1fr 1fr; --valign: flex-start; } .footer-bottom{ --rowbcolor: var(--nv-light-bg); --color: var(--nv-text-dark-bg); --bgcolor: var(--nv-dark-bg); } @media(min-width: 576px){ :root{ --container: 992px;--postwidth:50%;--btnpadding:13px 15px;--primarybtnpadding:13px 15px;--secondarybtnpadding:calc(13px - 3px) calc(15px - 3px); --bodyfontsize: 16px; --bodylineheight: 1.6; --bodyletterspacing: 0px; --h1fontsize: 38px; --h1lineheight: 1.2; --h1letterspacing: 0px; --h2fontsize: 30px; --h2lineheight: 1.2; --h2letterspacing: 0px; --h3fontsize: 26px; --h3lineheight: 1.4; --h3letterspacing: 0px; --h4fontsize: 22px; --h4lineheight: 1.5; --h4letterspacing: 0px; --h5fontsize: 18px; --h5lineheight: 1.6; --h5letterspacing: 0px; --h6fontsize: 14px; --h6lineheight: 1.6; --h6letterspacing: 0px; } .single-post-container .alignfull > [class*="__inner-container"], .single-post-container .alignwide > [class*="__inner-container"]{ max-width:962px } .nv-meta-list{ --avatarsize: 20px; } .single .nv-meta-list{ --avatarsize: 20px; } .nv-post-cover{ --height: 320px;--padding:60px 30px;--justify: flex-start; --textalign: left; --valign: center; } .nv-post-cover .nv-title-meta-wrap, .nv-page-title-wrap, .entry-header{ --textalign: left; } .nv-is-boxed.nv-title-meta-wrap{ --padding:60px 30px; } .nv-is-boxed.nv-comments-wrap{ --padding:30px; } .nv-is-boxed.comment-respond{ --padding:30px; } .single:not(.single-product), .page{ --c-vspace:0 0 0 0;; } .header-menu-sidebar-bg{ --justify: flex-start; --textalign: left;--flexg: 1;--wrapdropdownwidth: auto; } .header-menu-sidebar{ width: 360px; } .builder-item--logo{ --maxwidth: 120px; --fs: 24px;--padding:10px 0;--margin:0; --textalign: left;--justify: flex-start; } .builder-item--nav-icon{ --label-margin:0 5px 0 0;;--padding:10px 15px;--margin:0; } .builder-item--primary-menu{ --spacing: 20px; --height: 25px;--padding:0;--margin:0; --fontsize: 1em; --lineheight: 1.6; --letterspacing: 0px; --iconsize: 1em; } }@media(min-width: 960px){ :root{ --container: 1170px;--postwidth:33.333333333333%;--btnpadding:13px 15px;--primarybtnpadding:13px 15px;--secondarybtnpadding:calc(13px - 3px) calc(15px - 3px); --bodyfontsize: 16px; --bodylineheight: 1.7; --bodyletterspacing: 0px; --h1fontsize: 40px; --h1lineheight: 1.1; --h1letterspacing: 0px; --h2fontsize: 32px; --h2lineheight: 1.2; --h2letterspacing: 0px; --h3fontsize: 28px; --h3lineheight: 1.4; --h3letterspacing: 0px; --h4fontsize: 24px; --h4lineheight: 1.5; --h4letterspacing: 0px; --h5fontsize: 20px; --h5lineheight: 1.6; --h5letterspacing: 0px; --h6fontsize: 16px; --h6lineheight: 1.6; --h6letterspacing: 0px; } body:not(.single):not(.archive):not(.blog):not(.search):not(.error404) .neve-main > .container .col, body.post-type-archive-course .neve-main > .container .col, body.post-type-archive-llms_membership .neve-main > .container .col{ max-width: 100%; } body:not(.single):not(.archive):not(.blog):not(.search):not(.error404) .nv-sidebar-wrap, body.post-type-archive-course .nv-sidebar-wrap, body.post-type-archive-llms_membership .nv-sidebar-wrap{ max-width: 0%; } .neve-main > .archive-container .nv-index-posts.col{ max-width: 100%; } .neve-main > .archive-container .nv-sidebar-wrap{ max-width: 0%; } .neve-main > .single-post-container .nv-single-post-wrap.col{ max-width: 70%; } .single-post-container .alignfull > [class*="__inner-container"], .single-post-container .alignwide > [class*="__inner-container"]{ max-width:789px } .container-fluid.single-post-container .alignfull > [class*="__inner-container"], .container-fluid.single-post-container .alignwide > [class*="__inner-container"]{ max-width:calc(70% + 15px) } .neve-main > .single-post-container .nv-sidebar-wrap{ max-width: 30%; } .nv-meta-list{ --avatarsize: 20px; } .single .nv-meta-list{ --avatarsize: 20px; } .nv-post-cover{ --height: 400px;--padding:60px 40px;--justify: flex-start; --textalign: left; --valign: center; } .nv-post-cover .nv-title-meta-wrap, .nv-page-title-wrap, .entry-header{ --textalign: left; } .nv-is-boxed.nv-title-meta-wrap{ --padding:60px 40px; } .nv-is-boxed.nv-comments-wrap{ --padding:40px; } .nv-is-boxed.comment-respond{ --padding:40px; } .single:not(.single-product), .page{ --c-vspace:0 0 0 0;; } .header-menu-sidebar-bg{ --justify: flex-start; --textalign: left;--flexg: 1;--wrapdropdownwidth: auto; } .header-menu-sidebar{ width: 360px; } .builder-item--logo{ --maxwidth: 120px; --fs: 24px;--padding:10px 0;--margin:0; --textalign: left;--justify: flex-start; } .builder-item--nav-icon{ --label-margin:0 5px 0 0;;--padding:10px 15px;--margin:0; } .builder-item--primary-menu{ --spacing: 20px; --height: 25px;--padding:0;--margin:0; --fontsize: 1em; --lineheight: 1.6; --letterspacing: 0px; --iconsize: 1em; } }:root{--nv-primary-accent:#2f5aae;--nv-secondary-accent:#2f5aae;--nv-site-bg:#ffffff;--nv-light-bg:#f4f5f7;--nv-dark-bg:#121212;--nv-text-color:#272626;--nv-text-dark-bg:#ffffff;--nv-c-1:#9463ae;--nv-c-2:#be574b;--nv-fallback-ff:Arial, Helvetica, sans-serif;}
/*# sourceURL=neve-style-inline-css */
</style>
<link rel='stylesheet' id='neve-child-style-css' href='https://ceeveeglobal.com/wp-content/themes/neve-child/style.css?ver=1.0.1' media='all' />
<link rel='stylesheet' id='tablepress-default-css' href='https://ceeveeglobal.com/wp-content/tablepress-combined.min.css?ver=21' media='all' />
<script type="text/javascript">
            window._nslDOMReady = (function () {
                const executedCallbacks = new Set();
            
                return function (callback) {
                    /**
                    * Third parties might dispatch DOMContentLoaded events, so we need to ensure that we only run our callback once!
                    */
                    if (executedCallbacks.has(callback)) return;
            
                    const wrappedCallback = function () {
                        if (executedCallbacks.has(callback)) return;
                        executedCallbacks.add(callback);
                        callback();
                    };
            
                    if (document.readyState === "complete" || document.readyState === "interactive") {
                        wrappedCallback();
                    } else {
                        document.addEventListener("DOMContentLoaded", wrappedCallback);
                    }
                };
            })();
        </script><link rel="https://api.w.org/" href="https://ceeveeglobal.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://ceeveeglobal.com/wp-json/wp/v2/posts/16083" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://ceeveeglobal.com/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 7.0" />
<link rel='shortlink' href='https://ceeveeglobal.com/?p=16083' />
<meta name="generator" content="Site Kit by Google 1.182.0" /><!-- CVG snippet is active -->
<!-- Google AdSense meta tags added by Site Kit -->
<meta name="google-adsense-platform-account" content="ca-host-pub-2644536267352236">
<meta name="google-adsense-platform-domain" content="sitekit.withgoogle.com">
<!-- End Google AdSense meta tags added by Site Kit -->
      <meta name="onesignal" content="wordpress-plugin"/>
            <script>

      window.OneSignalDeferred = window.OneSignalDeferred || [];

      OneSignalDeferred.push(function(OneSignal) {
        var oneSignal_options = {};
        window._oneSignalInitOptions = oneSignal_options;

        oneSignal_options['serviceWorkerParam'] = { scope: '/wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/push/onesignal/' };
oneSignal_options['serviceWorkerPath'] = 'OneSignalSDKWorker.js';

        OneSignal.Notifications.setDefaultUrl("https://ceeveeglobal.com");

        oneSignal_options['wordpress'] = true;
oneSignal_options['appId'] = '00022bec-e359-41d5-a872-4a5807312eb0';
oneSignal_options['allowLocalhostAsSecureOrigin'] = true;
oneSignal_options['welcomeNotification'] = { };
oneSignal_options['welcomeNotification']['title'] = "";
oneSignal_options['welcomeNotification']['message'] = "";
oneSignal_options['path'] = "https://ceeveeglobal.com/wp-content/plugins/onesignal-free-web-push-notifications/sdk_files/";
oneSignal_options['promptOptions'] = { };
oneSignal_options['notifyButton'] = { };
oneSignal_options['notifyButton']['enable'] = true;
oneSignal_options['notifyButton']['position'] = 'bottom-right';
oneSignal_options['notifyButton']['theme'] = 'default';
oneSignal_options['notifyButton']['size'] = 'medium';
oneSignal_options['notifyButton']['showCredit'] = true;
oneSignal_options['notifyButton']['text'] = {};
              OneSignal.init(window._oneSignalInitOptions);
              OneSignal.Slidedown.promptPush()      });

      function documentInitOneSignal() {
        var oneSignal_elements = document.getElementsByClassName("OneSignal-prompt");

        var oneSignalLinkClickHandler = function(event) { OneSignal.Notifications.requestPermission(); event.preventDefault(); };        for(var i = 0; i < oneSignal_elements.length; i++)
          oneSignal_elements[i].addEventListener('click', oneSignalLinkClickHandler, false);
      }

      if (document.readyState === 'complete') {
           documentInitOneSignal();
      }
      else {
           window.addEventListener("load", function(event){
               documentInitOneSignal();
          });
      }
    </script>
<style class="wpcode-css-snippet">/* CVG Domain Generator Tool Page — modern reskin, scoped to page-id-16034 */
.page-id-16034 .nv-page-title-wrap {
    background: linear-gradient(135deg,#0f2942 0%,#1e5799 100%);
    padding: 38px 0 34px;
    margin-bottom: 0;
}
.page-id-16034 .nv-page-title-wrap .container,
.page-id-16034 .nv-page-title { max-width: 860px; margin: 0 auto; padding: 0 20px; }
.page-id-16034 .nv--yoast-breadcrumb,
.page-id-16034 .nv--yoast-breadcrumb a,
.page-id-16034 .nv--yoast-breadcrumb span { color: rgba(255,255,255,.65) !important; }
.page-id-16034 .nv--yoast-breadcrumb a:hover { color: #fff !important; }
.page-id-16034 .nv-page-title h1 {
    color: #fff;
    font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
    font-size: clamp(1.5rem,3.4vw,2.3rem);
    font-weight: 800;
    line-height: 1.3;
    margin: 10px 0 0;
}

.page-id-16034 .nv-content-wrap.entry-content {
    max-width: 860px;
    margin: 0 auto;
    padding: 38px 20px 60px;
    font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
    font-size: 1.05rem;
    line-height: 1.85;
    color: #2d3748;
}
.page-id-16034 .nv-content-wrap.entry-content > p:first-child {
    font-size: 1.1rem;
    color: #4a5568;
    margin-bottom: 30px;
}

.page-id-16034 .nv-content-wrap.entry-content h2 {
    font-size: 1.6rem;
    font-weight: 800;
    color: #0f2942;
    margin: 2.4rem 0 1rem;
    padding-bottom: 10px;
    border-bottom: 3px solid #f59e0b;
    display: inline-block;
}

/* Numbered steps (How to Use) */
.page-id-16034 .nv-content-wrap.entry-content ol {
    list-style: none;
    margin: 0 0 1.8rem;
    padding: 0;
    counter-reset: cvg-step;
}
.page-id-16034 .nv-content-wrap.entry-content ol > li {
    counter-increment: cvg-step;
    position: relative;
    padding: 14px 18px 14px 56px;
    margin-bottom: 10px;
    background: #f7fafc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
}
.page-id-16034 .nv-content-wrap.entry-content ol > li::before {
    content: counter(cvg-step);
    position: absolute;
    left: 16px; top: 50%;
    transform: translateY(-50%);
    width: 28px; height: 28px;
    border-radius: 50%;
    background: #1e5799;
    color: #fff;
    font-weight: 800;
    font-size: .85rem;
    display: flex; align-items: center; justify-content: center;
}

/* Checklists (Why Use / What Makes a Good Domain) */
.page-id-16034 .nv-content-wrap.entry-content ul {
    list-style: none;
    margin: 0 0 1.8rem;
    padding: 0;
}
.page-id-16034 .nv-content-wrap.entry-content ul > li {
    position: relative;
    padding: 4px 0 4px 30px;
    margin-bottom: 9px;
}
.page-id-16034 .nv-content-wrap.entry-content ul > li::before {
    content: "✓";
    position: absolute;
    left: 0; top: 4px;
    color: #22c55e;
    font-weight: 800;
}

/* FAQ accordion */
.page-id-16034 .cvg-faq {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    padding: 4px 20px;
    margin-bottom: 10px;
}
.page-id-16034 .cvg-faq[open] {
    border-color: #1e5799;
    box-shadow: 0 2px 12px rgba(15,41,66,.08);
}
.page-id-16034 .cvg-faq summary {
    cursor: pointer;
    padding: 14px 30px 14px 0;
    list-style: none;
    position: relative;
}
.page-id-16034 .cvg-faq summary::-webkit-details-marker { display: none; }
.page-id-16034 .cvg-faq summary::after {
    content: "+";
    position: absolute;
    right: 0; top: 12px;
    font-size: 1.4rem;
    font-weight: 700;
    color: #1e5799;
    transition: transform .2s;
}
.page-id-16034 .cvg-faq[open] summary::after { transform: rotate(45deg); }
.page-id-16034 .cvg-faq summary h3 {
    display: inline;
    font-size: 1.02rem;
    font-weight: 700;
    color: #0f2942;
}
.page-id-16034 .cvg-faq p {
    margin: 0 0 16px;
    color: #4a5568;
    font-size: .95rem;
}

@media (max-width: 600px) {
    .page-id-16034 .nv-content-wrap.entry-content { padding: 28px 16px 44px; }
    .page-id-16034 .nv-content-wrap.entry-content ol > li { padding-left: 48px; }
}
</style><link rel="icon" href="https://s3.ceeveeglobal.com/ceeveeglobalimages/cropped-Untitled-YouTube-Icon-32x32.png" sizes="32x32" />
<link rel="icon" href="https://s3.ceeveeglobal.com/ceeveeglobalimages/cropped-Untitled-YouTube-Icon-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://s3.ceeveeglobal.com/ceeveeglobalimages/cropped-Untitled-YouTube-Icon-180x180.png" />
<meta name="msapplication-TileImage" content="https://s3.ceeveeglobal.com/ceeveeglobalimages/cropped-Untitled-YouTube-Icon-270x270.png" />
<style type="text/css">div.nsl-container[data-align="left"] {
    text-align: left;
}

div.nsl-container[data-align="center"] {
    text-align: center;
}

div.nsl-container[data-align="right"] {
    text-align: right;
}


div.nsl-container div.nsl-container-buttons a[data-plugin="nsl"] {
    text-decoration: none;
    box-shadow: none;
    border: 0;
}

div.nsl-container .nsl-container-buttons {
    display: flex;
    padding: 5px 0;
}

div.nsl-container.nsl-container-block .nsl-container-buttons {
    display: inline-grid;
    grid-template-columns: minmax(145px, auto);
}

div.nsl-container-block-fullwidth .nsl-container-buttons {
    flex-flow: column;
    align-items: center;
}

div.nsl-container-block-fullwidth .nsl-container-buttons a,
div.nsl-container-block .nsl-container-buttons a {
    flex: 1 1 auto;
    display: block;
    margin: 5px 0;
    width: 100%;
}

div.nsl-container-inline {
    margin: -5px;
    text-align: left;
}

div.nsl-container-inline .nsl-container-buttons {
    justify-content: center;
    flex-wrap: wrap;
}

div.nsl-container-inline .nsl-container-buttons a {
    margin: 5px;
    display: inline-block;
}

div.nsl-container-grid .nsl-container-buttons {
    flex-flow: row;
    align-items: center;
    flex-wrap: wrap;
}

div.nsl-container-grid .nsl-container-buttons a {
    flex: 1 1 auto;
    display: block;
    margin: 5px;
    max-width: 280px;
    width: 100%;
}

@media only screen and (min-width: 650px) {
    div.nsl-container-grid .nsl-container-buttons a {
        width: auto;
    }
}

div.nsl-container .nsl-button {
    cursor: pointer;
    vertical-align: top;
    border-radius: 4px;
}

div.nsl-container .nsl-button-default {
    color: #fff;
    display: flex;
}

div.nsl-container .nsl-button-icon {
    display: inline-block;
}

div.nsl-container .nsl-button-svg-container {
    flex: 0 0 auto;
    padding: 8px;
    display: flex;
    align-items: center;
}

div.nsl-container svg {
    height: 24px;
    width: 24px;
    vertical-align: top;
}

div.nsl-container .nsl-button-default div.nsl-button-label-container {
    margin: 0 24px 0 12px;
    padding: 10px 0;
    font-family: Helvetica, Arial, sans-serif;
    font-size: 16px;
    line-height: 20px;
    letter-spacing: .25px;
    overflow: hidden;
    text-align: center;
    text-overflow: clip;
    white-space: nowrap;
    flex: 1 1 auto;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-transform: none;
    display: inline-block;
}

div.nsl-container .nsl-button-google[data-skin="light"] {
    box-shadow: inset 0 0 0 1px #747775;
    color: #1f1f1f;
}

div.nsl-container .nsl-button-google[data-skin="dark"] {
    box-shadow: inset 0 0 0 1px #8E918F;
    color: #E3E3E3;
}

div.nsl-container .nsl-button-google[data-skin="neutral"] {
    color: #1F1F1F;
}

div.nsl-container .nsl-button-google div.nsl-button-label-container {
    font-family: "Roboto Medium", Roboto, Helvetica, Arial, sans-serif;
}

div.nsl-container .nsl-button-apple .nsl-button-svg-container {
    padding: 0 6px;
}

div.nsl-container .nsl-button-apple .nsl-button-svg-container svg {
    height: 40px;
    width: auto;
}

div.nsl-container .nsl-button-apple[data-skin="light"] {
    color: #000;
    box-shadow: 0 0 0 1px #000;
}

div.nsl-container .nsl-button-facebook[data-skin="white"] {
    color: #000;
    box-shadow: inset 0 0 0 1px #000;
}

div.nsl-container .nsl-button-facebook[data-skin="light"] {
    color: #1877F2;
    box-shadow: inset 0 0 0 1px #1877F2;
}

div.nsl-container .nsl-button-spotify[data-skin="white"] {
    color: #191414;
    box-shadow: inset 0 0 0 1px #191414;
}

div.nsl-container .nsl-button-apple div.nsl-button-label-container {
    font-size: 17px;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}

div.nsl-container .nsl-button-slack div.nsl-button-label-container {
    font-size: 17px;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}

div.nsl-container .nsl-button-slack[data-skin="light"] {
    color: #000000;
    box-shadow: inset 0 0 0 1px #DDDDDD;
}

div.nsl-container .nsl-button-tiktok[data-skin="light"] {
    color: #161823;
    box-shadow: 0 0 0 1px rgba(22, 24, 35, 0.12);
}


div.nsl-container .nsl-button-kakao {
    color: rgba(0, 0, 0, 0.85);
}

.nsl-clear {
    clear: both;
}

.nsl-container {
    clear: both;
}

.nsl-disabled-provider .nsl-button {
    filter: grayscale(1);
    opacity: 0.8;
}

/*Button align start*/

div.nsl-container-inline[data-align="left"] .nsl-container-buttons {
    justify-content: flex-start;
}

div.nsl-container-inline[data-align="center"] .nsl-container-buttons {
    justify-content: center;
}

div.nsl-container-inline[data-align="right"] .nsl-container-buttons {
    justify-content: flex-end;
}


div.nsl-container-grid[data-align="left"] .nsl-container-buttons {
    justify-content: flex-start;
}

div.nsl-container-grid[data-align="center"] .nsl-container-buttons {
    justify-content: center;
}

div.nsl-container-grid[data-align="right"] .nsl-container-buttons {
    justify-content: flex-end;
}

div.nsl-container-grid[data-align="space-around"] .nsl-container-buttons {
    justify-content: space-around;
}

div.nsl-container-grid[data-align="space-between"] .nsl-container-buttons {
    justify-content: space-between;
}

/* Button align end*/

/* Redirect */

#nsl-redirect-overlay {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    position: fixed;
    z-index: 1000000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    backdrop-filter: blur(1px);
    background-color: RGBA(0, 0, 0, .32);;
}

#nsl-redirect-overlay-container {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    background-color: white;
    padding: 30px;
    border-radius: 10px;
}

#nsl-redirect-overlay-spinner {
    content: '';
    display: block;
    margin: 20px;
    border: 9px solid RGBA(0, 0, 0, .6);
    border-top: 9px solid #fff;
    border-radius: 50%;
    box-shadow: inset 0 0 0 1px RGBA(0, 0, 0, .6), 0 0 0 1px RGBA(0, 0, 0, .6);
    width: 40px;
    height: 40px;
    animation: nsl-loader-spin 2s linear infinite;
}

@keyframes nsl-loader-spin {
    0% {
        transform: rotate(0deg)
    }
    to {
        transform: rotate(360deg)
    }
}

#nsl-redirect-overlay-title {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
    font-size: 18px;
    font-weight: bold;
    color: #3C434A;
}

#nsl-redirect-overlay-text {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
    text-align: center;
    font-size: 14px;
    color: #3C434A;
}

/* Redirect END*/</style><style type="text/css">/* Notice fallback */
#nsl-notices-fallback {
    position: fixed;
    right: 10px;
    top: 10px;
    z-index: 10000;
}

.admin-bar #nsl-notices-fallback {
    top: 42px;
}

#nsl-notices-fallback > div {
    position: relative;
    background: #fff;
    border-left: 4px solid #fff;
    box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .1);
    margin: 5px 15px 2px;
    padding: 1px 20px;
}

#nsl-notices-fallback > div.error {
    display: block;
    border-left-color: #dc3232;
}

#nsl-notices-fallback > div.updated {
    display: block;
    border-left-color: #46b450;
}

#nsl-notices-fallback p {
    margin: .5em 0;
    padding: 2px;
}

#nsl-notices-fallback > div:after {
    position: absolute;
    right: 5px;
    top: 5px;
    content: '\00d7';
    display: block;
    height: 16px;
    width: 16px;
    line-height: 16px;
    text-align: center;
    font-size: 20px;
    cursor: pointer;
}</style>	</head>

<body class="wp-singular post-template-default single single-post postid-16083 single-format-standard wp-custom-logo wp-theme-neve wp-child-theme-neve-child  nv-blog-grid nv-sidebar-right menu_sidebar_slide_left" id="neve_body" >

<div class="wrapper">
	
	<header id="cvg-header" role="banner">
		<div class="cvg-header-inner">

			<div class="cvg-logo">
									<a href="https://ceeveeglobal.com/" class="custom-logo-link" rel="home"><img width="250" height="100" src="https://s3.ceeveeglobal.com/ceeveeglobalimages/CEEVEE.png" class="custom-logo" alt="ceeveeglobal" decoding="async" /></a>							</div>

			<nav id="cvg-primary-nav" class="cvg-nav" role="navigation"
				aria-label="Primary Navigation">
				<ul id="menu-main-menue" class="cvg-menu"><li id="menu-item-15994" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-15994"><a href="https://ceeveeglobal.com/error-library/">Error Database</a></li>
<li id="menu-item-16036" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-16036"><a href="https://ceeveeglobal.com/free-domain-name-generator/">AI Domain Generator</a></li>
<li id="menu-item-16059" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-16059"><a href="https://ceeveeglobal.com/tools-i-use/">Tools I Use</a></li>
<li id="menu-item-15582" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15582"><a href="https://ceeveeglobal.com/blog/">Blog</a></li>
<li id="menu-item-14180" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14180"><a href="https://ceeveeglobal.com/newsletter/">Newsletter</a></li>
</ul>			</nav>

			<div class="cvg-header-actions">
									<a href="https://ceeveeglobal.com/wp-login.php?redirect_to=https%3A%2F%2Fceeveeglobal.com%2Ffastapi-email-verification-api%2F" class="cvg-btn">
						Login					</a>
								<button class="cvg-hamburger" id="cvg-hamburger"
					aria-expanded="false"
					aria-controls="cvg-primary-nav"
					aria-label="Toggle menu">
					<span></span><span></span><span></span>
				</button>
			</div>

		</div><!-- .cvg-header-inner -->
	</header><!-- #cvg-header -->

		
	<main id="content" class="neve-main">
	
    <style>
    /* ============================================================
       CVG Single Post Layout  —  .cvg-sp prefix
       ============================================================ */
    .cvg-sp *, .cvg-sp *::before, .cvg-sp *::after { box-sizing: border-box; }
    .cvg-sp {
        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
        background: #ffffff;
        color: #1a202c;
        overflow-x: clip;
    }

    /* Reading progress bar */
    .cvg-sp-progress {
        position: fixed;
        top: 0; left: 0;
        width: 0%;
        height: 3px;
        background: #FE6103;
        z-index: 9999;
        transition: width 0.1s linear;
    }

    /* ---- Hero ---- */
    .cvg-sp-hero {
        position: relative;
        width: 100%;
        min-height: 520px;
        background: #1a202c;
        overflow: hidden;
        display: flex;
        align-items: flex-end;
    }
    .cvg-sp-hero-bg {
        position: absolute;
        inset: 0;
        background-size: cover;
        background-position: center;
        background-repeat: no-repeat;
        transform: scale(1.04);
        transition: transform 10s ease;
    }
    .cvg-sp-hero:hover .cvg-sp-hero-bg { transform: scale(1.07); }
    .cvg-sp-hero-overlay {
        position: absolute;
        inset: 0;
        background: linear-gradient(to top,
            rgba(0,0,0,0.88) 0%,
            rgba(0,0,0,0.45) 50%,
            rgba(0,0,0,0.08) 100%);
    }
    .cvg-sp-hero-content {
        position: relative;
        z-index: 2;
        width: 100%;
        max-width: 1240px;
        margin: 0 auto;
        padding: 70px 30px 55px;
    }
    .cvg-sp-cat-tag {
        display: inline-block;
        background: #FE6103;
        color: #fff !important;
        font-size: 0.72rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 1.2px;
        padding: 6px 16px;
        border-radius: 20px;
        text-decoration: none !important;
        margin-bottom: 18px;
        transition: background 0.2s;
    }
    .cvg-sp-cat-tag:hover { background: #e55602; }
    .cvg-sp-title {
        font-size: clamp(1.75rem, 3.8vw, 2.9rem);
        font-weight: 800;
        line-height: 1.25;
        color: #ffffff;
        margin: 0 0 20px;
        max-width: 880px;
        text-shadow: 0 2px 10px rgba(0,0,0,0.35);
    }
    .cvg-sp-meta {
        display: flex;
        align-items: center;
        flex-wrap: wrap;
        gap: 10px;
        color: rgba(255,255,255,0.85);
        font-size: 0.9rem;
    }
    .cvg-sp-meta-avatar {
        width: 38px; height: 38px;
        border-radius: 50%;
        object-fit: cover;
        border: 2px solid rgba(255,255,255,0.55);
        flex-shrink: 0;
    }
    .cvg-sp-meta a { color: rgba(255,255,255,0.9) !important; text-decoration: none !important; }
    .cvg-sp-meta a:hover { color: #FE6103 !important; }
    .cvg-sp-meta-dot { opacity: 0.45; }
    .cvg-sp-read-badge {
        background: rgba(254,97,3,0.22);
        color: #FE6103;
        padding: 3px 11px;
        border-radius: 12px;
        font-size: 0.78rem;
        font-weight: 700;
    }

    /* ---- Container ---- */
    .cvg-sp-wrap {
        max-width: 1240px;
        margin: 0 auto;
        padding: 0 30px;
    }

    /* ---- Two-column layout ---- */
    .cvg-sp-layout {
        display: grid;
        grid-template-columns: 1fr 340px;
        gap: 55px;
        padding: 55px 0 65px;
        align-items: start;
    }

    /* ---- Article body ---- */
    .cvg-sp-main { min-width: 0; }
    .cvg-sp-body {
        font-size: 1.05rem;
        line-height: 1.88;
        color: #2d3748;
        word-break: break-word;
        overflow-wrap: break-word;
    }
    .cvg-sp-body > *:first-child { margin-top: 0; }
    .cvg-sp-body h2 {
        font-size: 1.75rem; font-weight: 800;
        color: #1a202c; margin: 2.2rem 0 1rem; line-height: 1.3;
    }
    .cvg-sp-body h3 {
        font-size: 1.35rem; font-weight: 700;
        color: #1a202c; margin: 1.9rem 0 0.8rem;
    }
    .cvg-sp-body h4 {
        font-size: 1.1rem; font-weight: 700;
        color: #1a202c; margin: 1.6rem 0 0.7rem;
    }
    .cvg-sp-body p { margin-bottom: 1.5rem; }
    .cvg-sp-body a { color: #FE6103; text-decoration: underline; text-underline-offset: 2px; }
    .cvg-sp-body a:hover { color: #e55602; }
    .cvg-sp-body ul, .cvg-sp-body ol { margin: 0 0 1.5rem 1.8rem; }
    .cvg-sp-body li { margin-bottom: 0.5rem; }
    .cvg-sp-body blockquote {
        border-left: 4px solid #FE6103;
        background: #fff7f0;
        margin: 2rem 0;
        padding: 20px 26px;
        border-radius: 0 8px 8px 0;
        font-style: italic;
        color: #4a5568;
        font-size: 1.08rem;
    }
    .cvg-sp-body blockquote p { margin-bottom: 0; }
    .cvg-sp-body pre {
        background: #1a202c;
        color: #e2e8f0;
        border-radius: 8px;
        padding: 22px;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        margin: 1.5rem 0;
        font-size: 0.9rem;
        font-family: 'Fira Code', Consolas, 'Courier New', monospace;
    }
    .cvg-sp-body code {
        background: #f0f4f8;
        color: #c7254e;
        border-radius: 4px;
        padding: 2px 6px;
        font-size: 0.88em;
        font-family: 'Fira Code', Consolas, 'Courier New', monospace;
    }
    .cvg-sp-body pre code { background: none; color: inherit; padding: 0; }
    .cvg-sp-body img {
        max-width: 100%; height: auto;
        border-radius: 8px; margin: 1.5rem 0;
        box-shadow: 0 2px 12px rgba(0,0,0,0.08);
    }
    .cvg-sp-body table {
        width: 100%; border-collapse: collapse;
        margin: 1.5rem 0; font-size: 0.95rem;
    }
    .cvg-sp-body table th {
        background: #1a202c; color: #fff;
        padding: 12px 16px; text-align: left; font-weight: 700;
    }
    .cvg-sp-body table td { padding: 11px 16px; border-bottom: 1px solid #e2e8f0; }
    .cvg-sp-body table tr:nth-child(even) td { background: #f7fafc; }
    .cvg-sp-body figure { margin: 2rem 0; }
    .cvg-sp-body figcaption {
        text-align: center; font-size: 0.85rem;
        color: #718096; margin-top: 8px; font-style: italic;
    }

    /* In-content Ad */
    .cvg-sp-ad-inline {
        background: #f7fafc;
        border: 1px solid #e2e8f0;
        border-radius: 8px;
        padding: 14px 16px;
        text-align: center;
        margin: 2.2rem 0;
        clear: both;
    }
    .cvg-sp-ad-label {
        display: block;
        font-size: 0.62rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 1px;
        color: #c0c8d5;
        margin-bottom: 7px;
    }

    /* Post-end Ad */
    .cvg-sp-ad-end {
        background: #f7fafc;
        border: 1px solid #e2e8f0;
        border-radius: 8px;
        padding: 14px 16px;
        text-align: center;
        margin: 2.5rem 0;
    }

    /* Tags */
    .cvg-sp-tags {
        display: flex; flex-wrap: wrap; gap: 8px;
        margin: 2rem 0;
        padding-top: 1.8rem;
        border-top: 1px solid #e2e8f0;
    }
    .cvg-sp-tag {
        display: inline-block;
        background: #f7fafc;
        color: #4a5568;
        font-size: 0.82rem; font-weight: 600;
        padding: 5px 15px;
        border-radius: 20px;
        text-decoration: none !important;
        border: 1px solid #e2e8f0;
        transition: all 0.2s;
    }
    .cvg-sp-tag:hover { background: #FE6103; color: #fff !important; border-color: #FE6103; }

    /* Author Box */
    .cvg-sp-author-box {
        background: linear-gradient(135deg, #f7fafc 0%, #edf2f7 100%);
        border-radius: 12px;
        padding: 28px 30px;
        display: flex;
        gap: 20px;
        align-items: flex-start;
        margin: 2.5rem 0;
        border: 1px solid #e2e8f0;
    }
    .cvg-sp-author-avatar-lg {
        width: 80px; height: 80px;
        border-radius: 50%;
        object-fit: cover;
        flex-shrink: 0;
        border: 3px solid #FE6103;
    }
    .cvg-sp-author-by {
        font-size: 0.72rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.6px;
        color: #FE6103;
        display: block;
        margin-bottom: 4px;
    }
    .cvg-sp-author-name {
        font-size: 1.1rem; font-weight: 700; color: #1a202c; margin-bottom: 8px;
    }
    .cvg-sp-author-name a { color: #1a202c !important; text-decoration: none !important; }
    .cvg-sp-author-name a:hover { color: #FE6103 !important; }
    .cvg-sp-author-desc { font-size: 0.94rem; color: #4a5568; line-height: 1.7; }

    /* ---- Comments (modern reskin, CSS only) ---- */
    .cvg-sp-comments {
        margin-top: 3.5rem;
        padding-top: 2.5rem;
        border-top: 3px solid #FE6103;
    }
    .cvg-sp-comments .comments-title {
        font-size: 1.35rem; font-weight: 800;
        color: #1a202c; margin: 0 0 1.8rem;
        padding-bottom: 0; border: none;
    }

    /* Comment list */
    .cvg-sp-comments .comment-list { list-style: none; margin: 0 0 2.5rem; padding: 0; }
    .cvg-sp-comments .comment-list li { list-style: none; }
    .cvg-sp-comments .comment-body {
        padding: 20px 0;
        border-bottom: 1px solid #f0f4f8;
        overflow: hidden;
    }
    .cvg-sp-comments .comment-list > li:last-child > .comment-body,
    .cvg-sp-comments .comment-list > li:last-child > article { border-bottom: none; }

    /* Avatar float */
    .cvg-sp-comments .comment-author .avatar {
        float: left;
        width: 48px !important; height: 48px !important;
        border-radius: 50%;
        border: 2px solid #e2e8f0;
        margin: 0 14px 8px 0;
        display: block;
    }

    /* Commenter name */
    .cvg-sp-comments .comment-author .fn {
        font-weight: 700; font-size: 0.97rem; font-style: normal;
    }
    .cvg-sp-comments .comment-author .fn a { color: #1a202c !important; text-decoration: none; }
    .cvg-sp-comments .comment-author .fn a:hover { color: #FE6103 !important; }
    .cvg-sp-comments .comment-author .says { display: none; }

    /* Date */
    .cvg-sp-comments .comment-metadata {
        font-size: 0.78rem; color: #a0aec0; margin: 2px 0 10px;
    }
    .cvg-sp-comments .comment-metadata a { color: #a0aec0 !important; text-decoration: none; }
    .cvg-sp-comments .comment-metadata a:hover { color: #FE6103 !important; }

    /* Comment text */
    .cvg-sp-comments .comment-content p {
        font-size: 0.95rem; line-height: 1.78; color: #2d3748; margin: 0 0 0.4rem;
    }

    /* Reply link */
    .cvg-sp-comments .reply { margin-top: 10px; }
    .cvg-sp-comments .comment-reply-link {
        font-size: 0.74rem; font-weight: 700; text-transform: uppercase;
        letter-spacing: 0.5px; color: #FE6103 !important; text-decoration: none !important;
        border: 1.5px solid rgba(254,97,3,0.35); padding: 3px 13px;
        border-radius: 20px; transition: all 0.2s; display: inline-block;
    }
    .cvg-sp-comments .comment-reply-link:hover {
        background: #FE6103; color: #fff !important; border-color: #FE6103;
    }

    /* Nested replies */
    .cvg-sp-comments .children {
        margin: 0 0 0 48px; padding: 0 0 0 20px;
        list-style: none;
        border-left: 2px solid #fee9d8;
    }

    /* Awaiting moderation badge */
    .cvg-sp-comments .comment-awaiting-moderation {
        font-size: 0.82rem; color: #a0aec0; font-style: italic;
        background: #fffbf5; border-radius: 4px;
        padding: 4px 10px; display: inline-block; margin-bottom: 8px;
    }

    /* ---- Reply form ---- */
    #respond {
        background: #f7fafc;
        border: 1px solid #e2e8f0;
        border-radius: 14px;
        padding: 28px 30px;
        margin-top: 2rem;
    }
    #respond .comment-reply-title {
        font-size: 1.25rem; font-weight: 800;
        color: #1a202c; margin: 0 0 16px;
    }
    #respond .comment-reply-title small { display: block; margin-top: 4px; }
    #respond .comment-reply-title small a {
        font-size: 0.78rem; font-weight: 400;
        color: #a0aec0; text-decoration: none;
    }
    #respond .comment-reply-title small a:hover { color: #FE6103; }
    #respond .logged-in-as,
    #respond .comment-notes {
        font-size: 0.86rem; color: #718096; margin: 0 0 18px;
    }
    #respond .logged-in-as a,
    #respond .comment-notes a { color: #FE6103; text-decoration: none; }
    #respond label {
        display: block; font-size: 0.77rem; font-weight: 700;
        text-transform: uppercase; letter-spacing: 0.5px;
        color: #4a5568; margin-bottom: 5px;
    }
    #respond .required { color: #FE6103; }
    #respond input[type="text"],
    #respond input[type="email"],
    #respond input[type="url"],
    #respond textarea {
        width: 100%; box-sizing: border-box;
        padding: 11px 15px;
        border: 1.5px solid #e2e8f0; border-radius: 8px;
        font-size: 0.95rem; font-family: inherit; color: #1a202c;
        background: #fff; outline: none;
        transition: border-color 0.2s, box-shadow 0.2s;
    }
    #respond input[type="text"]:focus,
    #respond input[type="email"]:focus,
    #respond input[type="url"]:focus,
    #respond textarea:focus {
        border-color: #FE6103;
        box-shadow: 0 0 0 3px rgba(254,97,3,0.1);
    }
    #respond textarea { min-height: 130px; resize: vertical; }
    #respond .comment-form-comment,
    #respond .comment-form-author,
    #respond .comment-form-email,
    #respond .comment-form-url { margin: 0 0 14px; }
    #respond .comment-form-cookies-consent {
        display: flex; align-items: flex-start; gap: 9px;
        font-size: 0.83rem; color: #718096; margin-bottom: 16px;
    }
    #respond .comment-form-cookies-consent input[type="checkbox"] {
        margin-top: 3px; flex-shrink: 0; width: auto;
    }
    #respond .form-submit { margin: 0; }
    #respond #submit {
        background: #FE6103; color: #fff; border: none;
        padding: 12px 32px; border-radius: 8px;
        font-size: 0.95rem; font-weight: 700; font-family: inherit;
        cursor: pointer; transition: background 0.2s, transform 0.15s;
        letter-spacing: 0.3px;
    }
    #respond #submit:hover { background: #e55602; transform: translateY(-1px); }
    #respond #submit:active { transform: none; }

    /* Name + Email side by side on wider screens */
    @media (min-width: 600px) {
        #respond .comment-form-author,
        #respond .comment-form-email {
            display: inline-block;
            width: calc(50% - 8px);
            vertical-align: top;
        }
        #respond .comment-form-author { margin-right: 14px; }
    }
    @media (max-width: 600px) {
        #respond { padding: 20px 16px; }
        .cvg-sp-comments .children { margin-left: 16px; padding-left: 10px; }
    }

    /* ---- Sidebar ---- */
    .cvg-sp-sidebar {
        position: -webkit-sticky;
        position: sticky;
        top: 85px;
        align-self: start;
        height: fit-content;
        display: flex;
        flex-direction: column;
        gap: 28px;
    }
    .cvg-sp-sidebar-ad {
        background: #f7fafc;
        border: 1px solid #e2e8f0;
        border-radius: 8px;
        padding: 14px;
        text-align: center;
        min-height: 280px;
    }
    .cvg-sp-popular-heading {
        font-size: 1.05rem; font-weight: 800;
        color: #1a202c; margin-bottom: 14px;
        padding-bottom: 12px;
        border-bottom: 3px solid #FE6103;
    }
    .cvg-sp-popular-item {
        display: flex; gap: 12px;
        padding: 12px 0;
        border-bottom: 1px solid #f0f4f8;
        text-decoration: none !important;
        align-items: flex-start;
    }
    .cvg-sp-popular-item:last-child { border-bottom: none; }
    .cvg-sp-pop-thumb {
        width: 68px; height: 52px;
        object-fit: cover;
        border-radius: 6px;
        flex-shrink: 0;
        background: #e2e8f0;
    }
    .cvg-sp-pop-title {
        font-size: 0.87rem; font-weight: 700;
        color: #1a202c; line-height: 1.4;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        margin-bottom: 5px;
    }
    .cvg-sp-popular-item:hover .cvg-sp-pop-title { color: #FE6103; }
    .cvg-sp-pop-date { font-size: 0.74rem; color: #a0aec0; }

    /* ---- Related Posts ---- */
    .cvg-sp-related-wrap {
        background: #f7fafc;
        padding: 60px 0;
        border-top: 1px solid #e2e8f0;
    }
    .cvg-sp-related-heading {
        font-size: 1.9rem; font-weight: 800;
        color: #1a202c; margin-bottom: 28px;
    }
    .cvg-sp-related-grid {
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 24px;
    }
    .cvg-sp-related-card {
        background: #fff; border-radius: 10px;
        overflow: hidden;
        box-shadow: 0 2px 10px rgba(0,0,0,0.06);
        transition: all 0.3s ease;
        text-decoration: none !important;
        display: block;
    }
    .cvg-sp-related-card:hover {
        transform: translateY(-5px);
        box-shadow: 0 10px 28px rgba(0,0,0,0.11);
    }
    .cvg-sp-related-img {
        width: 100%; height: 180px;
        object-fit: cover;
        background: linear-gradient(135deg, #e2e8f0, #cbd5e0);
        display: block;
    }
    .cvg-sp-related-body { padding: 18px; }
    .cvg-sp-related-cat {
        font-size: 0.68rem; font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.5px; color: #FE6103;
        display: block; margin-bottom: 7px;
    }
    .cvg-sp-related-title {
        font-size: 1rem; font-weight: 700;
        color: #1a202c; line-height: 1.4;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        margin-bottom: 9px;
    }
    .cvg-sp-related-card:hover .cvg-sp-related-title { color: #FE6103; }
    .cvg-sp-related-date { font-size: 0.78rem; color: #718096; }

    /* ---- Responsive ---- */
    @media (max-width: 1060px) {
        .cvg-sp-layout { grid-template-columns: 1fr 290px; gap: 36px; }
    }
    @media (max-width: 768px) {
        .cvg-sp-hero { min-height: 380px; }
        .cvg-sp-hero-content { padding: 50px 20px 40px; }
        .cvg-sp-layout {
            grid-template-columns: 1fr;
            gap: 0;
            padding: 30px 0 40px;
        }
        .cvg-sp-wrap { padding: 0 16px; overflow-x: clip; max-width: 100%; width: 100%; box-sizing: border-box; }
        .cvg-sp-layout > * { min-width: 0; max-width: 100%; }
        .cvg-sp-sidebar {
            position: static;
            padding-top: 30px;
            margin-top: 20px;
            border-top: 1px solid #e2e8f0;
        }
        .cvg-sp-sidebar-ad { min-height: 0; }
        .cvg-sp-related-grid { grid-template-columns: 1fr 1fr; }
        .cvg-sp-body table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; white-space: nowrap; }
    }
    @media (max-width: 520px) {
        .cvg-sp-hero { min-height: 320px; }
        .cvg-sp-title { font-size: 1.55rem; }
        .cvg-sp-body { font-size: 1rem; }
        .cvg-sp-body h2 { font-size: 1.4rem; }
        .cvg-sp-body h3 { font-size: 1.2rem; }
        .cvg-sp-related-grid { grid-template-columns: 1fr; }
        .cvg-sp-author-box { flex-direction: column; align-items: center; text-align: center; padding: 20px 18px; }
    }
    @media (max-width: 480px) {
        .cvg-sp-hero-content { padding: 30px 15px 25px; }
        .cvg-sp-sidebar { display: none; }
        .cvg-sp-wrap { padding: 0 14px; }
    }
    @media (max-width: 375px) {
        .cvg-sp-wrap       { padding: 0 14px; }
        .cvg-sp-body       { font-size: 0.97rem; line-height: 1.8; }
        .cvg-sp-body h2    { font-size: 1.3rem; }
        .cvg-sp-body h3    { font-size: 1.15rem; }
        .cvg-sp-author-box { padding: 18px 14px; }
        .cvg-sp-body pre   { padding: 14px; font-size: 0.82rem; }
    }
    </style>

    <div class="cvg-sp">

        <!-- Reading progress bar -->
        <div class="cvg-sp-progress" id="cvgSpProgress"></div>

        <!-- Hero -->
        <div class="cvg-sp-hero">
                            <div class="cvg-sp-hero-bg" style="background-image:url('https://s3.ceeveeglobal.com/ceeveeglobalimages/fastapi-email-verification-api-featured.webp')"></div>
                        <div class="cvg-sp-hero-overlay"></div>
            <div class="cvg-sp-hero-content">
                                    <a class="cvg-sp-cat-tag" href="https://ceeveeglobal.com/category/beginner-guides/">Beginner Guides</a>
                                <h1 class="cvg-sp-title">FastAPI Email Verification API: How I Built It</h1>
                <div class="cvg-sp-meta">
                    <img class="cvg-sp-meta-avatar"
                         src="https://secure.gravatar.com/avatar/c3e54562a45a51f985aa195e42dbbd4eb2532fe20320c4d3b0fbfe68f2d1a566?s=80&#038;d=mm&#038;r=g"
                         alt="Dimuthu Harshana">
                    <span>By <a href="https://ceeveeglobal.com/author/ceeveeadmin/">Dimuthu Harshana</a></span>
                    <span class="cvg-sp-meta-dot">•</span>
                    <span>July 9, 2026</span>
                    <span class="cvg-sp-meta-dot">•</span>
                    <span class="cvg-sp-read-badge">10 min read</span>
                </div>
            </div>
        </div>

        <!-- Main layout -->
        <div class="cvg-sp-wrap">
            <div class="cvg-sp-layout">

                <!-- Article -->
                <main class="cvg-sp-main" id="cvgSpContent">
                    <div class="cvg-sp-body">
                        <p>My Mautic contact list was filling up with garbage. Fake domains, throwaway addresses, bot signups that never open a single email. Every campaign I sent had a chunk of it just bouncing into nowhere.</p>
<blockquote><p><strong>Quick Answer:</strong> I built a small FastAPI email verification API — it checks every email against four things: valid syntax, a disposable-domain blocklist, role-based prefixes like info@ or admin@, and a live DNS MX record lookup, before anything is trusted. It&#8217;s live on my own tools API today, and you can build your own copy in about 10 minutes.</p></blockquote>
<h2>What You Need</h2>
<ul>
<li>Python 3.9 or newer</li>
<li>About 10 minutes and a terminal</li>
<li>A Mautic instance or any signup form, if you want to wire this in for real — optional for just trying the API</li>
<li>Basic FastAPI familiarity helps, but every route here is short enough to follow cold</li>
</ul>
<h2>What I Tried First — And Why It Wasn&#8217;t Enough</h2>
<p>My first fix was a cleanup script, not a filter. I wrote <code>mautic-cleanup.py</code> to scan every contact already in Mautic through its REST API, flag anything on a disposable-domain list or still unconfirmed after 30 days, and delete the flagged ones.</p><div class="cvg-sp-ad-inline">
        <span class="cvg-sp-ad-label">Advertisement</span>
        <ins class="adsbygoogle"
             style="display:block;text-align:center;"
             data-ad-layout="in-article"
             data-ad-format="fluid"
             data-ad-client="ca-pub-1276528077047118"
             data-ad-slot="7320547851"></ins>
    </div><div id="cvg-optin-wrap" style="background:#f0f7ff;border:1px solid #d0e4f7;border-radius:8px;padding:24px 28px;margin:28px 0;font-family:inherit;">
<p style="margin:0 0 6px;font-size:18px;font-weight:700;color:#1a1a2e;">Get free WordPress &amp; AI tips</p>
<p style="margin:0 0 16px;font-size:14px;color:#555;">Join 500+ readers. No spam, unsubscribe anytime.</p>
<form autocomplete="off" method="POST" action="https://mautic.aibuilttools.com/form/submit" id="mauticform_cvgoptin" style="display:flex;flex-wrap:wrap;gap:10px;">
<input type="text" name="mauticform[firstname]" placeholder="First name" style="flex:1;min-width:140px;padding:10px 14px;border:1px solid #ccc;border-radius:5px;font-size:14px;">
<input type="email" name="mauticform[email]" id="cvg-optin-email" placeholder="your@email.com" required style="flex:2;min-width:200px;padding:10px 14px;border:1px solid #ccc;border-radius:5px;font-size:14px;">
<button type="submit" style="padding:10px 22px;background:#2271b1;color:#fff;border:none;border-radius:5px;font-size:14px;font-weight:600;cursor:pointer;white-space:nowrap;">Subscribe Free &#8594;</button>
<input type="hidden" name="mauticform[formId]" value="1">
<input type="hidden" name="mauticform[formName]" value="cvgmainoptin">
<input type="hidden" name="mauticform[return]" value="">
<input type="text" name="hp_url" id="cvg-hp-url" tabindex="-1" autocomplete="off" aria-hidden="true" style="position:absolute;left:-9999px;opacity:0;height:0;width:0;pointer-events:none;">
</form>
<p id="cvg-optin-ok" style="display:none;color:#1a7e2f;font-weight:600;margin:12px 0 0;">Thanks! Check your inbox to confirm your subscription.</p>
<p id="cvg-optin-err" style="display:none;color:#e74c3c;font-size:13px;margin:8px 0 0;"></p>
</div>
<script>document.getElementById("mauticform_cvgoptin").addEventListener("submit",function(e){e.preventDefault();var f=this,hp=document.getElementById("cvg-hp-url"),em=document.getElementById("cvg-optin-email"),err=document.getElementById("cvg-optin-err");if(hp&&hp.value!==""){f.style.display="none";document.getElementById("cvg-optin-ok").style.display="block";return;}var DISP=["mailinator.com","guerrillamail.com","tempmail.com","throwaway.email","yopmail.com","sharklasers.com","trashmail.com","dispostable.com","maildrop.cc","mailnull.com","spamgourmet.com","spam4.me","trashmail.io","mytemp.email","fakeinbox.com","grr.la","guerrillamailblock.com","binkmail.com","devnullmail.com","mailinater.com","spamavert.com","tempemail.net","temporarymail.com","tempr.email"];var dom=(em.value.split("@")[1]||"").toLowerCase();if(DISP.indexOf(dom)>-1){err.textContent="Please use a real email address.";err.style.display="block";em.style.borderColor="#e74c3c";return;}err.style.display="none";em.style.borderColor="";fetch(f.action,{method:"POST",body:new FormData(f)}).then(function(){f.style.display="none";document.getElementById("cvg-optin-ok").style.display="block";}).catch(function(){f.submit();});});</script></p>
<pre><code class="language-python">DISPOSABLE_DOMAINS = {
    "mailinator.com", "guerrillamail.com", "tempmail.com", "throwaway.email",
    "yopmail.com", "sharklasers.com", "trashmail.com", "dispostable.com",
    # ...786 domains total in my full list
}
# In production this loads from a text file instead of a hardcoded set —
# same idea, just easier to keep adding to as new disposable domains show up.

CUTOFF_DAYS = 30  # unconfirmed contacts older than this are considered bots

def is_bot(contact):
    reasons = []
    email = (contact.get("fields", {}).get("core", {}).get("email", {}).get("value") or "").lower()
    if not email:
        reasons.append("no email")
        return reasons

    domain = email.split("@")[-1] if "@" in email else ""
    if domain in DISPOSABLE_DOMAINS:
        reasons.append(f"disposable domain: {domain}")

    confirmed = contact.get("fields", {}).get("core", {}).get("confirmed", {}).get("value")
    date_added_str = contact.get("dateAdded", "")
    if str(confirmed) in ("0", "false", "") and date_added_str:
        date_added = datetime.fromisoformat(date_added_str.replace("Z", "+00:00"))
        age_days = (datetime.now(timezone.utc) - date_added).days
        if age_days >= CUTOFF_DAYS:
            reasons.append(f"unconfirmed {age_days}d")

    return reasons</code></pre>
<p>Any contact that comes back with a reason gets flagged. The script pulls every contact through Mautic&#8217;s <code>/api/v2/contacts</code> endpoint first, paginating 200 at a time, then runs this check against each one.</p>
<p>It ran as a dry run by default and only deleted with <code>--delete</code>. It worked — I cleared out a real batch of bots the first time I ran it. But it&#8217;s reactive: junk still landed in Mautic first, and I was cleaning up a mess instead of stopping it at the door.</p>
<h2>What Actually Fixed It — Building a FastAPI Email Verification API</h2>
<p>The real fix was moving the check to <em>before</em> a signup gets accepted, not after. So I built a standalone FastAPI endpoint — <code>/email/verify</code> — that scores every address before anything touches Mautic.</p>
<p>I keep it as its own router file, <code>app/routers/email_tools.py</code>, with the disposable-domain list in a separate <code>app/data/disposable_domains.txt</code> so it&#8217;s not baked into the code. One line in <code>main.py</code> wires it into the app:</p>
<pre><code class="language-python">app.include_router(email_tools.router, tags=["email_tools"])</code></pre>
<p>That&#8217;s the same pattern most FastAPI apps use to stay organized as you add more tools — each feature gets its own router file instead of one giant main.py.</p>
<h3>The Four Checks</h3>
<p>Each email goes through four gates, in order, and stops at the first one it fails:</p>
<pre><code class="language-python">import re
import dns.resolver

SYNTAX_RE = re.compile(r'^[^@\s]+@[^@\s]+\.[^@\s]{2,}$')

ROLE_PREFIXES = {
    "info", "admin", "support", "noreply", "no-reply", "postmaster",
    "webmaster", "contact", "sales", "help", "billing", "abuse",
    "security", "hostmaster", "mailer-daemon", "marketing", "newsletter",
}

def check_mx(domain: str) -> bool:
    try:
        dns.resolver.resolve(domain, "MX")
        return True
    except Exception:
        return False

def verify_single(email: str) -> dict:
    email = email.strip().lower()
    checks = {"syntax": False, "has_mx": False, "is_disposable": False, "is_role_based": False}
    score = 0

    if not SYNTAX_RE.match(email):
        return {"email": email, "is_valid": False, "score": 0, "checks": checks, "reason": "Invalid email format"}
    checks["syntax"] = True
    score += 25

    local, domain = email.split("@", 1)

    if domain in DISPOSABLE_DOMAINS:
        checks["is_disposable"] = True
        return {"email": email, "is_valid": False, "score": score, "checks": checks, "reason": "Disposable email domain not accepted"}
    score += 25

    if local in ROLE_PREFIXES:
        checks["is_role_based"] = True
        return {"email": email, "is_valid": False, "score": score, "checks": checks, "reason": "Role-based addresses not accepted (e.g. info@, admin@)"}
    score += 25

    has_mx = check_mx(domain)
    checks["has_mx"] = has_mx
    if not has_mx:
        return {"email": email, "is_valid": False, "score": score, "checks": checks, "reason": "Email domain has no mail server (MX record missing)"}
    score += 25

    return {"email": email, "is_valid": True, "score": score, "checks": checks, "reason": None}</code></pre>
<p>The scoring stops early. If the syntax is wrong, you get a score of 0 back immediately — there&#8217;s no point checking MX records on something that isn&#8217;t even shaped like an email. Each passed check adds 25 points, so a fully valid address always scores 100.</p>
<blockquote><p>💡 <strong>Dimu&#8217;s Note:</strong> the role-based rejection was the one I almost skipped. But <code>info@company.com</code> is a real inbox someone reads — just not the person who signed up for your newsletter. Blocking it kept my open-rate numbers honest.</p></blockquote>
<h3>Why the Checks Run in a Thread Executor</h3>
<p><code>dns.resolver.resolve()</code> is blocking — it waits on a real network call, and so does reading the disposable-domain file. Call either one directly inside an <code>async def</code> route and it freezes the whole event loop, not just that one request. Every other request waiting on your API stalls with it.</p>
<p>The fix is one line per call:</p>
<pre><code class="language-python">loop = asyncio.get_event_loop()
result = await loop.run_in_executor(None, verify_single, email)</code></pre>
<p><code>run_in_executor</code> pushes the blocking function onto a background thread pool and hands control straight back to the event loop. Your API stays responsive to every other request while that one DNS lookup is still working. This is the part most FastAPI tutorials skip — and it&#8217;s the difference between an endpoint that scales and one that falls over the moment two people hit it at once.</p>
<h3>Three Endpoints</h3>
<p>I exposed the checker three ways, so it fits however I end up calling it:</p>
<pre><code class="language-python">@router.get("/email/verify")
async def verify_email_get(email: str = Query(...)):
    loop = asyncio.get_event_loop()
    result = await loop.run_in_executor(None, verify_single, email)
    return {"success": True, "message": f"Email is {'valid' if result['is_valid'] else 'invalid'}", "result": result}

@router.post("/email/verify")
async def verify_email_post(body: dict):
    email = body.get("email", "")
    loop = asyncio.get_event_loop()
    result = await loop.run_in_executor(None, verify_single, email)
    return {"success": True, "message": f"Email is {'valid' if result['is_valid'] else 'invalid'}", "result": result}

@router.post("/email/verify-bulk")
async def verify_email_bulk(body: BulkEmailVerifyRequest):
    emails = body.emails[:50]  # hard cap so one request can't hammer DNS 5000 times
    loop = asyncio.get_event_loop()
    tasks = [loop.run_in_executor(None, verify_single, e) for e in emails]
    results = await asyncio.gather(*tasks)
    valid_count = sum(1 for r in results if r["is_valid"])
    return {"success": True, "result": {"results": results, "summary": {"total": len(results), "valid": valid_count, "invalid": len(results) - valid_count}}}</code></pre>
<p>The bulk endpoint gathers all the executor calls concurrently with <code>asyncio.gather</code>, so 50 emails don&#8217;t verify one at a time — they all run in parallel threads at once.</p>
<h3>Try It Yourself — Self-Host in About 10 Minutes</h3>
<p>You don&#8217;t need my full tools API to run this — it&#8217;s one router file. Here&#8217;s the minimal setup:</p>
<pre><code class="language-bash">pip install fastapi uvicorn dnspython</code></pre>
<p>Drop <code>verify_single</code>, <code>check_mx</code>, and the three routes above into a single <code>main.py</code>, wire the router into a FastAPI app, then run it:</p>
<pre><code class="language-python">from fastapi import FastAPI, APIRouter, Query
from pydantic import BaseModel
from typing import List

router = APIRouter()

class BulkEmailVerifyRequest(BaseModel):
    emails: List[str]

# ...paste verify_single(), check_mx(), and the three @router routes here...

app = FastAPI()
app.include_router(router)</code></pre>
<pre><code class="language-bash">uvicorn main:app --host 0.0.0.0 --port 8000</code></pre>
<p>Then test it:</p>
<pre><code class="language-bash">curl "http://localhost:8000/email/verify?email=test@mailinator.com"</code></pre>
<pre><code class="language-json">{
  "success": true,
  "message": "Email is invalid",
  "result": {
    "email": "test@mailinator.com",
    "is_valid": false,
    "score": 25,
    "checks": {"syntax": true, "has_mx": false, "is_disposable": true, "is_role_based": false},
    "reason": "Disposable email domain not accepted"
  }
}</code></pre>
<p>FastAPI also builds an interactive docs page automatically — mine&#8217;s at <code>/customdocs</code> since I renamed the default route, yours will sit at <code>localhost:8000/docs</code> if you didn&#8217;t touch it. You can test all three endpoints straight from the browser there, no curl needed.</p>
<p>If you&#8217;re putting this on a real domain instead of localhost, I run mine on a Contabo VPS — cheap enough that a small side API like this barely registers on the bill.</p>
<h2>Quick Reference</h2>
<table>
<tr>
<th>Endpoint</th>
<th>Method</th>
<th>Body / Query</th>
<th>Use case</th>
</tr>
<tr>
<td>/email/verify</td>
<td>GET</td>
<td>?email=user@example.com</td>
<td>Quick single check, e.g. from a frontend form</td>
</tr>
<tr>
<td>/email/verify</td>
<td>POST</td>
<td>{&#8220;email&#8221;: &#8220;&#8230;&#8221;}</td>
<td>Same check, from server-to-server calls</td>
</tr>
<tr>
<td>/email/verify-bulk</td>
<td>POST</td>
<td>{&#8220;emails&#8221;: [&#8230;]}, max 50</td>
<td>Cleaning an existing list before import</td>
</tr>
</table>
<pre><code class="language-bash">curl -X POST "http://localhost:8000/email/verify" \
  -H "Content-Type: application/json" \
  -d '{"email": "someone@gmail.com"}'</code></pre>
<pre><code class="language-bash">curl -X POST "http://localhost:8000/email/verify-bulk" \
  -H "Content-Type: application/json" \
  -d '{"emails": ["a@gmail.com", "b@mailinator.com", "info@company.com"]}'</code></pre>
<h2>Advanced Tips</h2>
<p>My live version sits behind an API key, since it shares one FastAPI app with a dozen other tools I&#8217;ve built. Instead of decorating every single route with a dependency, I gate the whole app in one place:</p>
<pre><code class="language-python">class APIKeyMiddleware(BaseHTTPMiddleware):
    async def dispatch(self, request: Request, call_next):
        if request.url.path not in WHITELISTED_PATHS:
            api_key = request.headers.get(API_KEY_NAME)
            if api_key != API_KEY:
                return JSONResponse(status_code=401, content={"detail": "Invalid API key"})
        return await call_next(request)

app.add_middleware(APIKeyMiddleware)</code></pre>
<p>One middleware class, one line to register it, every route protected except the ones I explicitly whitelist, like the docs page. If you&#8217;re only running the email verifier alone, you probably don&#8217;t need this yet — but the moment you add a second tool to the same app, it&#8217;s worth doing before you&#8217;re pasting the same <code>Depends()</code> onto every route.</p>
<p>The 50-email cap on the bulk endpoint is doing similar work. It&#8217;s not a technical limit, it&#8217;s a guardrail — without it, one request could try to trigger 5,000 DNS lookups and tie up your thread pool for everyone else.</p>
<h2>Frequently Asked Questions</h2>
<h3>Does this replace SMTP-level email verification?</h3>
<p>No. This checks that the domain <em>can</em> receive mail via its MX record, not that the specific mailbox exists. Full SMTP verification means connecting to the mail server and asking directly — slower, and a lot of providers block or fake that response anyway.</p>
<h3>Why not just use a paid email verification API?</h3>
<p>Cost, mostly. Most paid APIs charge per lookup once you&#8217;re past a small free tier. For a Mautic list that&#8217;s mostly WordPress and dev-tool signups, syntax plus disposable plus role plus MX catches the obvious junk without a monthly bill.</p>
<h3>How do I keep the disposable domain list current?</h3>
<p>Mine started small and grew every time a new one slipped through in Mautic — it&#8217;s at 786 domains now. There are public lists on GitHub you can seed from, then keep adding whatever gets past you.</p>
<h3>Will this catch every bot signup?</h3>
<p>No — a bot using a real Gmail address passes every check here. This stops the lazy, high-volume junk: disposable domains, malformed addresses, dead domains — which was most of what was hitting my Mautic list.</p>
<h2>Final Thoughts</h2>
<p>The real lesson wasn&#8217;t the code — it was catching the problem at the door instead of mopping up after. <code>mautic-cleanup.py</code> still runs occasionally as a backstop, but the verification API is what actually changed my numbers.</p>
<p>This endpoint isn&#8217;t wired into my Mautic signup form yet — that&#8217;s next. I&#8217;m also planning to open a version of this up as a free public tool on <a href="https://aibuilttools.com">aibuilttools.com</a>, where you&#8217;ll be able to grab an API key by joining my list — if that&#8217;s useful to you, keep an eye on that page.</p>
                    </div>

                    
                    <!-- Ad C — Post End -->
                    <div class="cvg-sp-ad-end">
                        <span class="cvg-sp-ad-label">Advertisement</span>
                        <ins class="adsbygoogle"
                             style="display:block"
                             data-ad-client="ca-pub-1276528077047118"
                             data-ad-slot="5671041374"
                             data-ad-format="auto"
                             data-full-width-responsive="true"></ins>
                    </div>

                    <!-- Author box -->
                    <div class="cvg-sp-author-box">
                        <img class="cvg-sp-author-avatar-lg"
                             src="https://secure.gravatar.com/avatar/c3e54562a45a51f985aa195e42dbbd4eb2532fe20320c4d3b0fbfe68f2d1a566?s=80&#038;d=mm&#038;r=g"
                             alt="Dimuthu Harshana">
                        <div>
                            <span class="cvg-sp-author-by">Written by</span>
                            <div class="cvg-sp-author-name">
                                <a href="https://ceeveeglobal.com/author/ceeveeadmin/">Dimuthu Harshana</a>
                            </div>
                                                    </div>
                    </div>

                    <!-- Comments -->
                                        <div class="cvg-sp-comments">
                        
<div id="comments" class="comments-area">
		<div id="respond" class="comment-respond nv-is-boxed">
		<h2 id="reply-title" class="comment-reply-title">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/fastapi-email-verification-api/feed/#respond" style="display:none;">Cancel reply</a></small></h2><p class="must-log-in">You must be <a href="https://ceeveeglobal.com/wp-login.php?redirect_to=https%3A%2F%2Fceeveeglobal.com%2Ffastapi-email-verification-api%2F">logged in</a> to post a comment.</p>	</div><!-- #respond -->
	</div>
                    </div>
                                    </main>

                <!-- Sidebar -->
                <aside class="cvg-sp-sidebar">
                    <!-- Ad A — Sidebar -->
                    <div class="cvg-sp-sidebar-ad">
                        <span class="cvg-sp-ad-label">Advertisement</span>
                        <ins class="adsbygoogle"
                             style="display:block"
                             data-ad-client="ca-pub-1276528077047118"
                             data-ad-slot="6699837308"
                             data-ad-format="auto"
                             data-full-width-responsive="true"></ins>
                    </div>

                                        <div class="cvg-sp-popular-widget">
                        <h3 class="cvg-sp-popular-heading">Popular Posts</h3>
                                                <a class="cvg-sp-popular-item"
                           href="https://ceeveeglobal.com/ssl-http-https-wordpress-guide/">
                                                        <img class="cvg-sp-pop-thumb"
                                 src="https://s3.ceeveeglobal.com/ceeveeglobalimages/Understanding-SSL-HTTP-and-HTTPS.png"
                                 alt="Understanding SSL, HTTP, and HTTPS: A Comprehensive Guide for WordPress Users"
                                 loading="lazy">
                                                        <div>
                                <span class="cvg-sp-pop-title">Understanding SSL, HTTP, and HTTPS: A Comprehensive Guide for WordPress Users</span>
                                <span class="cvg-sp-pop-date">Mar 19, 2025</span>
                            </div>
                        </a>
                                                <a class="cvg-sp-popular-item"
                           href="https://ceeveeglobal.com/memory-size-exhausted-how-to-fix-it/">
                                                        <img class="cvg-sp-pop-thumb"
                                 src="https://s3.ceeveeglobal.com/ceeveeglobalimages/wordpress-fatal-error-allowed-memory-size.webp"
                                 alt="How to Fix the WordPress Fatal Error: Allowed Memory Size Exhausted"
                                 loading="lazy">
                                                        <div>
                                <span class="cvg-sp-pop-title">How to Fix the WordPress Fatal Error: Allowed Memory Size Exhausted</span>
                                <span class="cvg-sp-pop-date">Feb 27, 2023</span>
                            </div>
                        </a>
                                                <a class="cvg-sp-popular-item"
                           href="https://ceeveeglobal.com/http-error-500-in-wordpress/">
                                                        <img class="cvg-sp-pop-thumb"
                                 src="https://s3.ceeveeglobal.com/ceeveeglobalimages/http-error-500.png"
                                 alt="Fixing HTTP Error 500 in WordPress: Troubleshooting Steps &amp; Solutions"
                                 loading="lazy">
                                                        <div>
                                <span class="cvg-sp-pop-title">Fixing HTTP Error 500 in WordPress: Troubleshooting Steps &amp; Solutions</span>
                                <span class="cvg-sp-pop-date">May 8, 2024</span>
                            </div>
                        </a>
                                                <a class="cvg-sp-popular-item"
                           href="https://ceeveeglobal.com/your-connection-is-not-private/">
                                                        <img class="cvg-sp-pop-thumb"
                                 src="https://s3.ceeveeglobal.com/ceeveeglobalimages/how-to-fix-your-connection-is-not-private-error.png"
                                 alt="Mastering Your Connection is Not Private Error &#8211; How to Fix it &amp; Secure Your Activities"
                                 loading="lazy">
                                                        <div>
                                <span class="cvg-sp-pop-title">Mastering Your Connection is Not Private Error &#8211; How to Fix it &amp; Secure Your Activities</span>
                                <span class="cvg-sp-pop-date">Jun 7, 2024</span>
                            </div>
                        </a>
                                                <a class="cvg-sp-popular-item"
                           href="https://ceeveeglobal.com/how-i-fixed-wordpress-white-screen-of-death-what-actually-worked/">
                                                        <img class="cvg-sp-pop-thumb"
                                 src="https://s3.ceeveeglobal.com/ceeveeglobalimages/white-screen-of-deth.webp"
                                 alt="How I Fixed WordPress White Screen of Death — What Actually Worked"
                                 loading="lazy">
                                                        <div>
                                <span class="cvg-sp-pop-title">How I Fixed WordPress White Screen of Death — What Actually Worked</span>
                                <span class="cvg-sp-pop-date">Jun 8, 2026</span>
                            </div>
                        </a>
                                            </div>
                                    </aside>

            </div>
        </div>

        <!-- Related Posts -->
                <div class="cvg-sp-related-wrap">
            <div class="cvg-sp-wrap">
                <h2 class="cvg-sp-related-heading">You May Also Like</h2>
                <div class="cvg-sp-related-grid">
                                        <a class="cvg-sp-related-card"
                       href="https://ceeveeglobal.com/mautic-5-missing-in-coolify-heres-how-to-fix-it-with-docker-compose/">
                                                    <img class="cvg-sp-related-img"
                                 src="https://s3.ceeveeglobal.com/ceeveeglobalimages/Mautic_fix_Docker_Compose.webp"
                                 alt="Mautic 5 Missing in Coolify? Here’s How to Fix It with Docker Compose"
                                 loading="lazy">
                                                <div class="cvg-sp-related-body">
                                                            <span class="cvg-sp-related-cat">BEGINNER GUIDES</span>
                                                        <div class="cvg-sp-related-title">Mautic 5 Missing in Coolify? Here’s How to Fix It with Docker Compose</div>
                            <span class="cvg-sp-related-date">May 25, 2026</span>
                        </div>
                    </a>
                                        <a class="cvg-sp-related-card"
                       href="https://ceeveeglobal.com/essential-wordpress-code-concepts-beginners-guide/">
                                                    <img class="cvg-sp-related-img"
                                 src="https://s3.ceeveeglobal.com/ceeveeglobalimages/8-Essential-WordPress-Code-Concepts-Every-Beginner-Should-Master.webp"
                                 alt="8 Essential WordPress Code Concepts Every Beginner Should Master (With Real Examples)"
                                 loading="lazy">
                                                <div class="cvg-sp-related-body">
                                                            <span class="cvg-sp-related-cat">BEGINNER GUIDES</span>
                                                        <div class="cvg-sp-related-title">8 Essential WordPress Code Concepts Every Beginner Should Master (With Real Examples)</div>
                            <span class="cvg-sp-related-date">Nov 8, 2025</span>
                        </div>
                    </a>
                                        <a class="cvg-sp-related-card"
                       href="https://ceeveeglobal.com/build-an-ai-chatbot-into-wordpress/">
                                                    <img class="cvg-sp-related-img"
                                 src="https://s3.ceeveeglobal.com/ceeveeglobalimages/How-to-Build-and-Integrate-an-AI-Chatbot-into-Your-WordPress-Site-A-Complete-Guide.webp"
                                 alt="How to Build and Integrate an AI Chatbot into Your WordPress Site: A Complete Guide"
                                 loading="lazy">
                                                <div class="cvg-sp-related-body">
                                                            <span class="cvg-sp-related-cat">BEGINNER GUIDES</span>
                                                        <div class="cvg-sp-related-title">How to Build and Integrate an AI Chatbot into Your WordPress Site: A Complete Guide</div>
                            <span class="cvg-sp-related-date">Nov 3, 2025</span>
                        </div>
                    </a>
                                    </div>
            </div>
        </div>
        
    </div><!-- .cvg-sp -->

    <script>
    // Reading progress bar
    (function() {
        var bar  = document.getElementById('cvgSpProgress');
        var body = document.getElementById('cvgSpContent');
        if (!bar || !body) return;
        window.addEventListener('scroll', function() {
            var total     = body.offsetHeight - window.innerHeight;
            var scrolled  = window.pageYOffset - body.offsetTop;
            var pct       = total > 0 ? Math.min(100, Math.max(0, (scrolled / total) * 100)) : 0;
            bar.style.width = pct + '%';
        }, { passive: true });
    })();

    // AdSense init (prevents duplicate push)
    window.addEventListener('load', function() {
        if (window.cvgSpAdsInit) return;
        window.cvgSpAdsInit = true;
        document.querySelectorAll('.cvg-sp .adsbygoogle').forEach(function(ad, i) {
            setTimeout(function() {
                if (!ad.getAttribute('data-adsbygoogle-status')) {
                    try { (adsbygoogle = window.adsbygoogle || []).push({}); } catch(e) {}
                }
            }, i * 300);
        });
    });
    </script>

    <!--WPFC_FOOTER_START-->
	</main><!--/.neve-main-->

	
	<footer id="cvg-footer" role="contentinfo">
		<div class="cvg-footer-inner">

			<div class="cvg-footer-about">
				<h3>About Us</h3>
				<p>At <strong>CeeVeeGlobal</strong>, we specialize in WordPress solutions and AI innovation for web design and digital marketing. Our mission is to empower your online success with expert guidance and cutting-edge tools.</p>
			</div>

			<div class="cvg-footer-links">
				<h3>Quick Links</h3>
				<ul>
					<li><a href="https://ceeveeglobal.com/about-us/">About Us</a></li>
					<li><a href="https://ceeveeglobal.com/privacy-policy/">Privacy Policy</a></li>
					<li><a href="https://ceeveeglobal.com/terms-and-conditions/">Terms and Conditions</a></li>
					<li><a href="https://ceeveeglobal.com/refund-policy/">Refund Policy</a></li>
					<li><a href="https://ceeveeglobal.com/contact/">Contact Us</a></li>
				</ul>
			</div>

			<div class="cvg-footer-social">
				<h3>Follow Us</h3>
				<div class="cvg-social-icons">
					<a href="https://medium.com/@ceeveeglobal" target="_blank" rel="noopener noreferrer" aria-label="Medium">
						<i class="fab fa-medium"></i>
					</a>
					<a href="https://www.facebook.com/CeeVeeFb" target="_blank" rel="noopener noreferrer" aria-label="Facebook">
						<i class="fab fa-facebook"></i>
					</a>
					<a href="https://x.com/CeeVeeGlobal1" target="_blank" rel="noopener noreferrer" aria-label="X (Twitter)">
						<i class="fab fa-x-twitter"></i>
					</a>
					<a href="https://www.youtube.com/channel/UCM6fiBrZV9svTVgJIEqG54A" target="_blank" rel="noopener noreferrer" aria-label="YouTube">
						<i class="fab fa-youtube"></i>
					</a>
				</div>
			</div>

		</div><!-- .cvg-footer-inner -->

		<div class="cvg-footer-copyright">
			<p>&copy; 2026 CeeVeeGlobal All Rights Reserved</p>
		</div>
	</footer><!-- #cvg-footer -->

</div><!--/.wrapper-->

<script>
(function () {
	var btn = document.getElementById('cvg-hamburger');
	var nav = document.getElementById('cvg-primary-nav');
	if (btn && nav) {
		btn.addEventListener('click', function () {
			var open = nav.classList.toggle('cvg-nav-open');
			btn.setAttribute('aria-expanded', open ? 'true' : 'false');
		});
	}
}());
</script>

<script type="speculationrules">
{"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/neve-child/*","/wp-content/themes/neve/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<link rel='stylesheet' id='aal_style-css' href='https://ceeveeglobal.com/wp-content/plugins/wp-auto-affiliate-links/css/style.css?ver=7.0' media='all' />
<script id="wp-hooks-js" src="https://ceeveeglobal.com/wp-includes/js/dist/hooks.min.js?ver=7496969728ca0f95732d"></script>
<script id="wp-i18n-js" src="https://ceeveeglobal.com/wp-includes/js/dist/i18n.min.js?ver=781d11515ad3d91786ec"></script>
<script id="wp-i18n-js-after">
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
//# sourceURL=wp-i18n-js-after
</script>
<script id="swv-js" src="https://ceeveeglobal.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.6"></script>
<script id="contact-form-7-js-before">
var wpcf7 = {
    "api": {
        "root": "https:\/\/ceeveeglobal.com\/wp-json\/",
        "namespace": "contact-form-7\/v1"
    },
    "cached": 1
};
//# sourceURL=contact-form-7-js-before
</script>
<script id="contact-form-7-js" src="https://ceeveeglobal.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.6"></script>
<script id="neve-script-js-extra">
var NeveProperties = {"ajaxurl":"https://ceeveeglobal.com/wp-admin/admin-ajax.php","nonce":"c960eb75cc","isRTL":"","isCustomize":""};
//# sourceURL=neve-script-js-extra
</script>
<script id="neve-script-js" src="https://ceeveeglobal.com/wp-content/themes/neve/assets/js/build/modern/frontend.js?ver=3.8.13" async></script>
<script id="neve-script-js-after">
	var html = document.documentElement;
	var theme = html.getAttribute('data-neve-theme') || 'light';
	var variants = {"logo":{"light":{"src":"https:\/\/s3.ceeveeglobal.com\/ceeveeglobalimages\/CEEVEE.png","srcset":false,"sizes":"(max-width: 250px) 100vw, 250px"},"dark":{"src":"https:\/\/s3.ceeveeglobal.com\/ceeveeglobalimages\/CEEVEE.png","srcset":false,"sizes":"(max-width: 250px) 100vw, 250px"},"same":true}};

	function setCurrentTheme( theme ) {
		var pictures = document.getElementsByClassName( 'neve-site-logo' );
		for(var i = 0; i<pictures.length; i++) {
			var picture = pictures.item(i);
			if( ! picture ) {
				continue;
			};
			var fileExt = picture.src.slice((Math.max(0, picture.src.lastIndexOf(".")) || Infinity) + 1);
			if ( fileExt === 'svg' ) {
				picture.removeAttribute('width');
				picture.removeAttribute('height');
				picture.style = 'width: var(--maxwidth)';
			}
			var compId = picture.getAttribute('data-variant');
			if ( compId && variants[compId] ) {
				var isConditional = variants[compId]['same'];
				if ( theme === 'light' || isConditional || variants[compId]['dark']['src'] === false ) {
					picture.src = variants[compId]['light']['src'];
					picture.srcset = variants[compId]['light']['srcset'] || '';
					picture.sizes = variants[compId]['light']['sizes'];
					continue;
				};
				picture.src = variants[compId]['dark']['src'];
				picture.srcset = variants[compId]['dark']['srcset'] || '';
				picture.sizes = variants[compId]['dark']['sizes'];
			};
		};
	};

	var observer = new MutationObserver(function(mutations) {
		mutations.forEach(function(mutation) {
			if (mutation.type == 'attributes') {
				theme = html.getAttribute('data-neve-theme');
				setCurrentTheme(theme);
			};
		});
	});

	observer.observe(html, {
		attributes: true
	});
function toggleAriaClick() { function toggleAriaExpanded(toggle = 'true') { document.querySelectorAll('button.navbar-toggle').forEach(function(el) { if ( el.classList.contains('caret-wrap') ) { return; } el.setAttribute('aria-expanded', 'true' === el.getAttribute('aria-expanded') ? 'false' : toggle); }); } toggleAriaExpanded(); if ( document.body.hasAttribute('data-ftrap-listener') ) { return; } document.body.setAttribute('data-ftrap-listener', 'true'); document.addEventListener('ftrap-end', function() { toggleAriaExpanded('false'); }); }
//# sourceURL=neve-script-js-after
</script>
<script async data-wp-strategy="async" fetchpriority="low" id="comment-reply-js" src="https://ceeveeglobal.com/wp-includes/js/comment-reply.min.js?ver=7.0"></script>
<script id="google-recaptcha-js" src="https://www.google.com/recaptcha/api.js?render=6LeKW-8ZAAAAAFCLCnV0QoL6ZpqXJ3LQwXSA9X2r&#038;ver=3.0"></script>
<script id="wp-polyfill-js" src="https://ceeveeglobal.com/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0"></script>
<script id="wpcf7-recaptcha-js-before">
var wpcf7_recaptcha = {
    "sitekey": "6LeKW-8ZAAAAAFCLCnV0QoL6ZpqXJ3LQwXSA9X2r",
    "actions": {
        "homepage": "homepage",
        "contactform": "contactform"
    }
};
//# sourceURL=wpcf7-recaptcha-js-before
</script>
<script id="wpcf7-recaptcha-js" src="https://ceeveeglobal.com/wp-content/plugins/contact-form-7/modules/recaptcha/index.js?ver=6.1.6"></script>
<script data-wp-strategy="defer" defer id="remote_sdk-js" src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js?ver=1.0.0"></script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://ceeveeglobal.com/wp-includes/js/wp-emoji-release.min.js?ver=7.0"}}
</script>
<script type="module">
/*! This file is auto-generated */
const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,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\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let 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("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});
//# sourceURL=https://ceeveeglobal.com/wp-includes/js/wp-emoji-loader.min.js
</script>
<script type="text/javascript">(function (undefined) {let scriptOptions={"_localizedStrings":{"redirect_overlay_title":"Hold On","redirect_overlay_text":"You are being redirected to another page,<br>it may take a few seconds.","webview_notification_text":"The selected provider doesn't support embedded browsers!"},"_targetWindow":"prefer-popup","_redirectOverlay":"overlay-with-spinner-and-message","_unsupportedWebviewBehavior":""};
/**
 * Used when Cross-Origin-Opener-Policy blocked the access to the opener. We can't have a reference of the opened windows, so we should attempt to refresh only the windows that has opened popups.
 */
window._nslHasOpenedPopup = false;
window._nslWebViewNoticeElement = null;

window.NSLPopup = function (url, title, w, h) {

    /**
     * Cross-Origin-Opener-Policy blocked the access to the opener
     */
    if (typeof BroadcastChannel === "function") {
        const _nslLoginBroadCastChannel = new BroadcastChannel('nsl_login_broadcast_channel');
        _nslLoginBroadCastChannel.onmessage = (event) => {
            if (window?._nslHasOpenedPopup && event.data?.action === 'redirect') {
                window._nslHasOpenedPopup = false;

                const url = event.data?.href;
                _nslLoginBroadCastChannel.close();
                if (typeof window.nslRedirect === 'function') {
                    window.nslRedirect(url);
                } else {
                    window.opener.location = url;
                }
            }
        };
    }

    const userAgent = navigator.userAgent,
        mobile = function () {
            return /\b(iPhone|iP[ao]d)/.test(userAgent) ||
                /\b(iP[ao]d)/.test(userAgent) ||
                /Android/i.test(userAgent) ||
                /Mobile/i.test(userAgent);
        },
        screenX = window.screenX !== undefined ? window.screenX : window.screenLeft,
        screenY = window.screenY !== undefined ? window.screenY : window.screenTop,
        outerWidth = window.outerWidth !== undefined ? window.outerWidth : document.documentElement.clientWidth,
        outerHeight = window.outerHeight !== undefined ? window.outerHeight : document.documentElement.clientHeight - 22,
        targetWidth = mobile() ? null : w,
        targetHeight = mobile() ? null : h,
        left = parseInt(screenX + (outerWidth - targetWidth) / 2, 10),
        right = parseInt(screenY + (outerHeight - targetHeight) / 2.5, 10),
        features = [];
    if (targetWidth !== null) {
        features.push('width=' + targetWidth);
    }
    if (targetHeight !== null) {
        features.push('height=' + targetHeight);
    }
    features.push('left=' + left);
    features.push('top=' + right);
    features.push('scrollbars=1');

    const newWindow = window.open(url, title, features.join(','));

    if (window.focus) {
        newWindow.focus();
    }

    window._nslHasOpenedPopup = true;

    return newWindow;
};

let isWebView = null;

function checkWebView() {
    if (isWebView === null) {
        function _detectOS(ua) {
            if (/Android/.test(ua)) {
                return "Android";
            } else if (/iPhone|iPad|iPod/.test(ua)) {
                return "iOS";
            } else if (/Windows/.test(ua)) {
                return "Windows";
            } else if (/Mac OS X/.test(ua)) {
                return "Mac";
            } else if (/CrOS/.test(ua)) {
                return "Chrome OS";
            } else if (/Firefox/.test(ua)) {
                return "Firefox OS";
            }
            return "";
        }

        function _detectBrowser(ua) {
            let android = /Android/.test(ua);

            if (/Opera Mini/.test(ua) || / OPR/.test(ua) || / OPT/.test(ua)) {
                return "Opera";
            } else if (/CriOS/.test(ua)) {
                return "Chrome for iOS";
            } else if (/Edge/.test(ua)) {
                return "Edge";
            } else if (android && /Silk\//.test(ua)) {
                return "Silk";
            } else if (/Chrome/.test(ua)) {
                return "Chrome";
            } else if (/Firefox/.test(ua)) {
                return "Firefox";
            } else if (android) {
                return "AOSP";
            } else if (/MSIE|Trident/.test(ua)) {
                return "IE";
            } else if (/Safari\//.test(ua)) {
                return "Safari";
            } else if (/AppleWebKit/.test(ua)) {
                return "WebKit";
            }
            return "";
        }

        function _detectBrowserVersion(ua, browser) {
            if (browser === "Opera") {
                return /Opera Mini/.test(ua) ? _getVersion(ua, "Opera Mini/") :
                    / OPR/.test(ua) ? _getVersion(ua, " OPR/") :
                        _getVersion(ua, " OPT/");
            } else if (browser === "Chrome for iOS") {
                return _getVersion(ua, "CriOS/");
            } else if (browser === "Edge") {
                return _getVersion(ua, "Edge/");
            } else if (browser === "Chrome") {
                return _getVersion(ua, "Chrome/");
            } else if (browser === "Firefox") {
                return _getVersion(ua, "Firefox/");
            } else if (browser === "Silk") {
                return _getVersion(ua, "Silk/");
            } else if (browser === "AOSP") {
                return _getVersion(ua, "Version/");
            } else if (browser === "IE") {
                return /IEMobile/.test(ua) ? _getVersion(ua, "IEMobile/") :
                    /MSIE/.test(ua) ? _getVersion(ua, "MSIE ")
                        :
                        _getVersion(ua, "rv:");
            } else if (browser === "Safari") {
                return _getVersion(ua, "Version/");
            } else if (browser === "WebKit") {
                return _getVersion(ua, "WebKit/");
            }
            return "0.0.0";
        }

        function _getVersion(ua, token) {
            try {
                return _normalizeSemverString(ua.split(token)[1].trim().split(/[^\w\.]/)[0]);
            } catch (o_O) {
            }
            return "0.0.0";
        }

        function _normalizeSemverString(version) {
            const ary = version.split(/[\._]/);
            return (parseInt(ary[0], 10) || 0) + "." +
                (parseInt(ary[1], 10) || 0) + "." +
                (parseInt(ary[2], 10) || 0);
        }

        function _isWebView(ua, os, browser, version, options) {
            switch (os + browser) {
                case "iOSSafari":
                    return false;
                case "iOSWebKit":
                    return _isWebView_iOS(options);
                case "AndroidAOSP":
                    return false;
                case "AndroidChrome":
                    return parseFloat(version) >= 42 ? /; wv/.test(ua) : /\d{2}\.0\.0/.test(version) ? true : _isWebView_Android(options);
            }
            return false;
        }

        function _isWebView_iOS(options) {
            const document = (window["document"] || {});

            if ("WEB_VIEW" in options) {
                return options["WEB_VIEW"];
            }
            return !("fullscreenEnabled" in document || "webkitFullscreenEnabled" in document || false);
        }

        function _isWebView_Android(options) {
            if ("WEB_VIEW" in options) {
                return options["WEB_VIEW"];
            }
            return !("requestFileSystem" in window || "webkitRequestFileSystem" in window || false);
        }

        const options = {},
            nav = window.navigator || {},
            ua = nav.userAgent || "",
            os = _detectOS(ua),
            browser = _detectBrowser(ua),
            browserVersion = _detectBrowserVersion(ua, browser);

        isWebView = _isWebView(ua, os, browser, browserVersion, options);
    }

    return isWebView;
}

function isAllowedWebViewForUserAgent(provider) {
    const facebookAllowedWebViews = [
        'Instagram',
        'FBAV',
        'FBAN'
    ];
    let whitelist = [];

    if (provider && provider === 'facebook') {
        whitelist = facebookAllowedWebViews;
    }

    const nav = window.navigator || {},
        ua = nav.userAgent || "";

    if (whitelist.length && ua.match(new RegExp(whitelist.join('|')))) {
        return true;
    }

    return false;
}

function disableButtonInWebView(providerButtonElement) {
    if (providerButtonElement) {
        providerButtonElement.classList.add('nsl-disabled-provider');
        providerButtonElement.setAttribute('href', '#');

        providerButtonElement.addEventListener('pointerdown', (e) => {
            if (!window._nslWebViewNoticeElement) {
                window._nslWebViewNoticeElement = document.createElement('div');
                window._nslWebViewNoticeElement.id = "nsl-notices-fallback";
                window._nslWebViewNoticeElement.addEventListener('pointerdown', function (e) {
                    this.parentNode.removeChild(this);
                    window._nslWebViewNoticeElement = null;
                });
                const webviewNoticeHTML = '<div class="error"><p>' + scriptOptions._localizedStrings.webview_notification_text + '</p></div>';

                window._nslWebViewNoticeElement.insertAdjacentHTML("afterbegin", webviewNoticeHTML);
                document.body.appendChild(window._nslWebViewNoticeElement);
            }
        });
    }

}

window._nslDOMReady(function () {

    window.nslRedirect = function (url) {
        if (scriptOptions._redirectOverlay) {
            const overlay = document.createElement('div');
            overlay.id = "nsl-redirect-overlay";
            let overlayHTML = '';
            const overlayContainer = "<div id='nsl-redirect-overlay-container'>",
                overlayContainerClose = "</div>",
                overlaySpinner = "<div id='nsl-redirect-overlay-spinner'></div>",
                overlayTitle = "<p id='nsl-redirect-overlay-title'>" + scriptOptions._localizedStrings.redirect_overlay_title + "</p>",
                overlayText = "<p id='nsl-redirect-overlay-text'>" + scriptOptions._localizedStrings.redirect_overlay_text + "</p>";

            switch (scriptOptions._redirectOverlay) {
                case "overlay-only":
                    break;
                case "overlay-with-spinner":
                    overlayHTML = overlayContainer + overlaySpinner + overlayContainerClose;
                    break;
                default:
                    overlayHTML = overlayContainer + overlaySpinner + overlayTitle + overlayText + overlayContainerClose;
                    break;
            }

            overlay.insertAdjacentHTML("afterbegin", overlayHTML);
            document.body.appendChild(overlay);
        }

        window.location = url;
    };

    let targetWindow = scriptOptions._targetWindow || 'prefer-popup',
        lastPopup = false;


    document.addEventListener('click', function (e) {
        if (e.target) {
            const buttonLinkElement = e.target.closest('a[data-plugin="nsl"][data-action="connect"]') || e.target.closest('a[data-plugin="nsl"][data-action="link"]');
            if (buttonLinkElement) {
                if (lastPopup && !lastPopup.closed) {
                    e.preventDefault();
                    lastPopup.focus();
                } else {

                    let href = buttonLinkElement.href,
                        success = false;
                    if (href.indexOf('?') !== -1) {
                        href += '&';
                    } else {
                        href += '?';
                    }

                    const redirectTo = buttonLinkElement.dataset.redirect;
                    if (redirectTo === 'current') {
                        href += 'redirect=' + encodeURIComponent(window.location.href) + '&';
                    } else if (redirectTo && redirectTo !== '') {
                        href += 'redirect=' + encodeURIComponent(redirectTo) + '&';
                    }

                    if (targetWindow !== 'prefer-same-window' && checkWebView()) {
                        targetWindow = 'prefer-same-window';
                    }

                    if (targetWindow === 'prefer-popup') {
                        lastPopup = NSLPopup(href + 'display=popup', 'nsl-social-connect', buttonLinkElement.dataset.popupwidth, buttonLinkElement.dataset.popupheight);
                        if (lastPopup) {
                            success = true;
                            e.preventDefault();
                        }
                    } else if (targetWindow === 'prefer-new-tab') {
                        const newTab = window.open(href + 'display=popup', '_blank');
                        if (newTab) {
                            if (window.focus) {
                                newTab.focus();
                            }
                            success = true;
                            window._nslHasOpenedPopup = true;
                            e.preventDefault();
                        }
                    }

                    if (!success) {
                        window.location = href;
                        e.preventDefault();
                    }
                }
            }
        }
    });

    let buttonCountChanged = false;

    const googleLoginButtons = document.querySelectorAll(' a[data-plugin="nsl"][data-provider="google"]');
    if (googleLoginButtons.length && checkWebView()) {
        googleLoginButtons.forEach(function (googleLoginButton) {
            if (scriptOptions._unsupportedWebviewBehavior === 'disable-button') {
                disableButtonInWebView(googleLoginButton);
            } else {
                googleLoginButton.remove();
                buttonCountChanged = true;
            }
        });
    }

    const facebookLoginButtons = document.querySelectorAll(' a[data-plugin="nsl"][data-provider="facebook"]');
    if (facebookLoginButtons.length && checkWebView() && /Android/.test(window.navigator.userAgent) && !isAllowedWebViewForUserAgent('facebook')) {
        facebookLoginButtons.forEach(function (facebookLoginButton) {
            if (scriptOptions._unsupportedWebviewBehavior === 'disable-button') {
                disableButtonInWebView(facebookLoginButton);
            } else {
                facebookLoginButton.remove();
                buttonCountChanged = true;
            }
        });
    }

    const separators = document.querySelectorAll('div.nsl-separator');
    if (buttonCountChanged && separators.length) {
        separators.forEach(function (separator) {
            const separatorParentNode = separator.parentNode;
            if (separatorParentNode) {
                const separatorButtonContainer = separatorParentNode.querySelector('div.nsl-container-buttons');
                if (separatorButtonContainer && !separatorButtonContainer.hasChildNodes()) {
                    separator.remove();
                }
            }
        })
    }
});})();</script>    <div class="cvg-disclosure-bar">
        <p>This site contains affiliate links. If you make a purchase through one of these links,
        we may earn a small commission at no extra cost to you.
        <a href="https://ceeveeglobal.com/tools-i-use/#disclosure">Learn more</a>.</p>
    </div>
    <style>
    .cvg-disclosure-bar{background:#f9fafb;border-top:1px solid #e5e7eb;padding:12px 20px;text-align:center;
        font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',sans-serif;}
    .cvg-disclosure-bar p{margin:0;font-size:13px;color:#1f2937;line-height:1.5;}
    .cvg-disclosure-bar a{color:#2563eb;text-decoration:underline;}
    .cvg-disclosure-bar a:hover{color:#1d4ed8;}
    @media (max-width:480px){.cvg-disclosure-bar p{font-size:12px;}}
    </style>
    </body>
</html>
<!--
Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com

Retrieved 2877 objects (941 KB) from Redis using Predis (v2.4.0).
-->
