PageSourceSearch

https://clpvd.org/search/

html clpvd.org collected 2026-09-24 10:24:17 UTC 111,246 bytes, 3,031 lines download raw bytes

1<!DOCTYPE html><html lang="en-US" prefix="og: https://ogp.me/ns#"><head ><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><link rel="alternate" hreflang="en" href="https://clpvd.org/search/" /><link rel="alternate" hreflang="es" href="https://clpvd.org/es/search/" /><title>Search - Community Libraries of Providence</title><meta name="description" content="Search"/><meta name="robots" content="index, follow, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/><link rel="canonical" href="https://clpvd.org/search/" /><meta property="og:locale" content="en_US" /><meta property="og:type" content="article" /><meta property="og:title" content="Search - Community Libraries of Providence" /><meta property="og:description" content="Search" /><meta property="og:url" content="https://clpvd.org/search/" /><meta property="og:site_name" content="Community Libraries of Providence" /><meta property="og:updated_time" content="2023-08-23T11:11:34-04:00" /><meta property="article:published_time" content="2023-01-03T17:02:32-05:00" /><meta property="article:modified_time" content="2023-08-23T11:11:34-04:00" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="Search - Community Libraries of Providence" /><meta name="twitter:description" content="Search" /><meta name="twitter:label1" content="Time to read" /><meta name="twitter:data1" content="Less than a minute" /> 
1<script type="application/ld+json" class="rank-math-schema">{"@context":"https://schema.org","@graph":[{"@type":["Person","Organization"],"@id":"https://clpvd.org/#person","name":"Community Libraries of Providence"},{"@type":"WebSite","@id":"https://clpvd.org/#website","url":"https://clpvd.org","name":"Community Libraries of Providence","publisher":{"@id":"https://clpvd.org/#person"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https://clpvd.org/search/#breadcrumb","itemListElement":[{"@type":"ListItem","position":"1","item":{"@id":"https://clpvd.org","name":"Home"}},{"@type":"ListItem","position":"2","item":{"@id":"https://clpvd.org/search/","name":"Search"}}]},{"@type":"WebPage","@id":"https://clpvd.org/search/#webpage","url":"https://clpvd.org/search/","name":"Search - Community Libraries of Providence","datePublished":"2023-01-03T17:02:32-05:00","dateModified":"2023-08-23T11:11:34-04:00","isPartOf":{"@id":"https://clpvd.org/#website"},"inLanguage":"en-US","breadcrumb":{"@id":"https://clpvd.org/search/#breadcrumb"}},{"@type":"Person","@id":"https://clpvd.org/author/vwm-web-dev/","name":"VWM Web Dev","url":"https://clpvd.org/author/vwm-web-dev/","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/0b54900b91a783680163c1fdb585dd3e0c0ee9fdfcef02b829706eccd80aa6c5?s=96&amp;d=mm&amp;r=g","url":"https://secure.gravatar.com/avatar/0b54900b91a783680163c1fdb585dd3e0c0ee9fdfcef02b829706eccd80aa6c5?s=96&amp;d=mm&amp;r=g","caption":"VWM Web Dev","inLanguage":"en-US"},"sameAs":["https://clpvd.org"]},{"@type":"Article","headline":"Search - Community Libraries of Providence","datePublished":"2023-01-03T17:02:32-05:00","dateModified":"2023-08-23T11:11:34-04:00","author":{"@id":"https://clpvd.org/author/vwm-web-dev/","name":"VWM Web Dev"},"publisher":{"@id":"https://clpvd.org/#person"},"description":"Search","name":"Search - Community Libraries of Providence","@id":"https://clpvd.org/search/#richSnippet","isPartOf":{"@id":"https://clpvd.org/search/#webpage"},"inLanguage":"en-US","mainEntityOfPage":{"@id":"https://clpvd.org/search/#webpage"}}]}</script>
1 <link rel='dns-prefetch' href='//use.fontawesome.com' /><link rel='dns-prefetch' href='//cdnjs.cloudflare.com' /><link rel='dns-prefetch' href='//p.typekit.net' /><link rel='dns-prefetch' href='//use.typekit.net' /><link rel='dns-prefetch' href='//www.googletagmanager.com' /><link rel='dns-prefetch' href='//analytics.google.com' /><link rel="alternate" type="application/rss+xml" title="Community Libraries of Providence &raquo; Feed" href="https://clpvd.org/feed/" /><link rel="alternate" type="application/rss+xml" title="Community Libraries of Providence &raquo; Comments Feed" href="https://clpvd.org/comments/feed/" /><link rel="alternate" type="text/calendar" title="Community Libraries of Providence &raquo; iCal Feed" href="https://clpvd.org/events/?ical=1" /><link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://clpvd.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fclpvd.org%2Fsearch%2F" /><link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://clpvd.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fclpvd.org%2Fsearch%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}
2/*# sourceURL=wp-img-auto-sizes-contain-inline-css */</style><link data-optimized="1" rel='stylesheet' id='tribe-events-pro-mini-calendar-block-styles-css' href='https://clpvd.org/wp-content/litespeed/css/f4f4403d42687da093eb24958d84c381.css?ver=c7d4b' media='all' /><link data-optimized="1" rel='stylesheet' id='sbi-tokens-local-css' href='https://clpvd.org/wp-content/litespeed/css/310a00bd269e6e5822e8f6c5d1acacfe.css?ver=df111' media='all' /><link data-optimized="1" rel='stylesheet' id='sbi_styles-css' href='https://clpvd.org/wp-content/litespeed/css/2d45b5f2a46e9077a774f921f6e26538.css?ver=69017' media='all' /><link data-optimized="1" rel='stylesheet' id='focus-pro-css' href='https://clpvd.org/wp-content/litespeed/css/4c7a7a8fba75683145806f8ea3f06149.css?ver=4d712' media='all' /><style id="wp-block-library-inline-css">:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
2--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
3
4/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */</style><style id="classic-theme-styles-inline-css">/*! This file is auto-generated */
5.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}
6/*# sourceURL=/wp-includes/css/classic-themes.min.css */</style><style id="font-awesome-svg-styles-default-inline-css">.svg-inline--fa {
7  display: inline-block;
8  height: 1em;
9  overflow: visible;
10  vertical-align: -.125em;
11}
12/*# sourceURL=font-awesome-svg-styles-default-inline-css */</style><link data-optimized="1" rel='stylesheet' id='font-awesome-svg-styles-css' href='https://clpvd.org/wp-content/litespeed/css/a93591626e8268094cad917e885a7473.css?ver=a7473' media='all' /><style id="font-awesome-svg-styles-inline-css">.wp-block-font-awesome-icon svg::before,
13   .wp-rich-text-font-awesome-icon svg::before {content: unset;}
14/*# sourceURL=font-awesome-svg-styles-inline-css */</style><link rel='stylesheet' id='font-awesome-official-css' href='https://use.fontawesome.com/releases/v6.7.2/css/all.css' media='all' integrity="sha384-nRgPTkuX86pH8yjPJUAFuASXQSSl2/bBUiNV47vSYpKFxHJhbcrGnmlYpYJMeD7a" crossorigin="anonymous" /><link rel='stylesheet' id='font-awesome-official-v4shim-css' href='https://use.fontawesome.com/releases/v6.7.2/css/v4-shims.css' media='all' integrity="sha384-npPMK6zwqNmU3qyCCxEcWJkLBNYxEFM1nGgSoAWuCCXqVVz0cvwKEMfyTNkOxM2N" crossorigin="anonymous" /><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--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,
140) 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);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}: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-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
14.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;}
15/*# sourceURL=global-styles-inline-css */</style><style id="fl-builder-layout-3808-inline-css">/**
16 * Base CSS used by the builder's layout, including rows
17 * and columns. Any module specific global CSS should be
18 * included in fl-builder-layout-modules.css.
19 */
20
21/* Grid
22------------------------------------------------------ */
23
24.fl-builder-content *,
25.fl-builder-content *:before,
26.fl-builder-content *:after {
27	-webkit-box-sizing: border-box;
28	-moz-box-sizing: border-box;
29	box-sizing: border-box;
30}
31.fl-row:before,
32.fl-row:after,
33.fl-row-content:before,
34.fl-row-content:after,
35.fl-col-group:before,
36.fl-col-group:after,
37.fl-col:before,
38.fl-col:after,
39.fl-module:not([data-accepts], .fl-ds-block):before,
40.fl-module:not([data-accepts], .fl-ds-block):after,
41.fl-module-content:before,
42.fl-module-content:after {
43	display: table;
44	content: " ";
45}
46.fl-row:after,
47.fl-row-content:after,
48.fl-col-group:after,
49.fl-col:after,
50.fl-module:not([data-accepts], .fl-ds-block):after,
51.fl-module-content:after {
52	clear: both;
53}
54.fl-clear {
55	clear: both;
56}
57
58/* Rows
59------------------------------------------------------ */
60
61.fl-row,
62.fl-row-content {
63	margin-left: auto;
64	margin-right: auto;
65	min-width: 0;
66}
67.fl-row-content-wrap {
68	position: relative;
69}
70
71/* Photo Bg */
72.fl-builder-mobile .fl-row-bg-photo .fl-row-content-wrap {
73	background-attachment: scroll;
74}
75
76/* Video and Embed Code Bg */
77.fl-row-bg-video,
78.fl-row-bg-video .fl-row-content,
79.fl-row-bg-embed,
80.fl-row-bg-embed .fl-row-content {
81	position: relative;
82}
83
84.fl-row-bg-video .fl-bg-video,
85.fl-row-bg-embed .fl-bg-embed-code {
86	bottom: 0;
87	left: 0;
88	overflow: hidden;
89	position: absolute;
90	right: 0;
91	top: 0;
92}
93
94.fl-row-bg-video .fl-bg-video video,
95.fl-row-bg-embed .fl-bg-embed-code video {
96	bottom: 0;
97	left: 0px;
98	max-width: none;
99	position: absolute;
100	right: 0;
101	top: 0px;
102}
103.fl-row-bg-video .fl-bg-video video {
104	min-width: 100%;
105	min-height: 100%;
106	width: auto;
107	height: auto;
108}
109.fl-row-bg-video .fl-bg-video iframe,
110.fl-row-bg-embed .fl-bg-embed-code iframe {
111	pointer-events: none;
112	width: 100vw;
113  	height: 56.25vw; /* Given a 16:9 aspect ratio, 9/16*100 = 56.25 */
114  	max-width: none;
115  	min-height: 100vh;
116  	min-width: 177.77vh; /* Given a 16:9 aspect ratio, 16/9*100 = 177.77 */
117  	position: absolute;
118  	top: 50%;
119  	left: 50%;
120	-ms-transform: translate(-50%, -50%); /* IE 9 */
121	-webkit-transform: translate(-50%, -50%); /* Chrome, Safari, Opera */
122  	transform: translate(-50%, -50%);
123}
124.fl-bg-video-fallback {
125	background-position: 50% 50%;
126	background-repeat: no-repeat;
127	background-size: cover;
128	bottom: 0px;
129	left: 0px;
130	position: absolute;
131	right: 0px;
132	top: 0px;
133}
134
135/* Slideshow Bg */
136.fl-row-bg-slideshow,
137.fl-row-bg-slideshow .fl-row-content {
138	position: relative;
139}
140.fl-row .fl-bg-slideshow {
141	bottom: 0;
142	left: 0;
143	overflow: hidden;
144	position: absolute;
145	right: 0;
146	top: 0;
147	z-index: 0;
148}
149.fl-builder-edit .fl-row .fl-bg-slideshow * {
150	bottom: 0;
151	height: auto !important;
152	left: 0;
153	position: absolute !important;
154	right: 0;
155	top: 0;
156}
157
158/* Row Bg Overlay */
159.fl-row-bg-overlay .fl-row-content-wrap:after {
160	border-radius: inherit;
161	content: '';
162	display: block;
163	position: absolute;
164	top: 0;
165	right: 0;
166	bottom: 0;
167	left: 0;
168	z-index: 0;
169}
170.fl-row-bg-overlay .fl-row-content {
171	position: relative;
172	z-index: 1;
173}
174
175/* Full Height Rows */
176.fl-row-default-height .fl-row-content-wrap,
177.fl-row-custom-height .fl-row-content-wrap {
178	display: -webkit-box;
179	display: -webkit-flex;
180	display: -ms-flexbox;
181	display: flex;
182	min-height: 100vh;
183}
184.fl-row-overlap-top .fl-row-content-wrap {
185	display: -webkit-inline-box;
186	display: -webkit-inline-flex;
187	display: -moz-inline-box;
188	display: -ms-inline-flexbox;
189	display: inline-flex;
190	width: 100%;
191}
192.fl-row-default-height .fl-row-content-wrap,
193.fl-row-custom-height .fl-row-content-wrap {
194	min-height: 0;
195}
196
197.fl-row-default-height .fl-row-content,
198.fl-row-full-height .fl-row-content,
199.fl-row-custom-height .fl-row-content {
200  -webkit-box-flex: 1 1 auto;
201  	 -moz-box-flex: 1 1 auto;
202  	  -webkit-flex: 1 1 auto;
203  		  -ms-flex: 1 1 auto;
204  			  flex: 1 1 auto;
205}
206.fl-row-default-height .fl-row-full-width.fl-row-content,
207.fl-row-full-height .fl-row-full-width.fl-row-content,
208.fl-row-custom-height .fl-row-full-width.fl-row-content {
209	max-width: 100%;
210	width: 100%;
211}
212
213/* Full height align center */
214.fl-row-default-height.fl-row-align-center .fl-row-content-wrap,
215.fl-row-full-height.fl-row-align-center .fl-row-content-wrap,
216.fl-row-custom-height.fl-row-align-center .fl-row-content-wrap {
217	-webkit-align-items: center;
218	-webkit-box-align: center;
219	-webkit-box-pack: center;
220	-webkit-justify-content: center;
221	-ms-flex-align: center;
222	-ms-flex-pack: center;
223	justify-content: center;
224	align-items: center;
225}
226
227/* Full height align bottom */
228.fl-row-default-height.fl-row-align-bottom .fl-row-content-wrap,
229.fl-row-full-height.fl-row-align-bottom .fl-row-content-wrap,
230.fl-row-custom-height.fl-row-align-bottom .fl-row-content-wrap {
231	-webkit-align-items: flex-end;
232	-webkit-justify-content: flex-end;
233	-webkit-box-align: end;
234	-webkit-box-pack: end;
235	-ms-flex-align: end;
236	-ms-flex-pack: end;
237	justify-content: flex-end;
238	align-items: flex-end;
239}
240
241/* Column Groups
242------------------------------------------------------ */
243.fl-col-group-equal-height {
244	display: flex;
245	flex-wrap: wrap;
246	width: 100%;
247}
248.fl-col-group-equal-height.fl-col-group-has-child-loading {
249	flex-wrap: nowrap;
250}
251.fl-col-group-equal-height .fl-col,
252.fl-col-group-equal-height .fl-col-content {
253	display: flex;
254	flex: 1 1 auto;
255}
256.fl-col-group-equal-height .fl-col-content {
257	flex-direction: column;
258	flex-shrink: 1;
259	min-width: 1px;
260	max-width: 100%;
261	width: 100%;
262}
263.fl-col-group-equal-height:before,
264.fl-col-group-equal-height .fl-col:before,
265.fl-col-group-equal-height .fl-col-content:before,
266.fl-col-group-equal-height:after,
267.fl-col-group-equal-height .fl-col:after,
268.fl-col-group-equal-height .fl-col-content:after{
269	content: none;
270}
271
272/* Equal height align top */
273.fl-col-group-nested.fl-col-group-equal-height.fl-col-group-align-top .fl-col-content,
274.fl-col-group-equal-height.fl-col-group-align-top .fl-col-content {
275	justify-content: flex-start;
276}
277
278/* Equal height align center */
279.fl-col-group-nested.fl-col-group-equal-height.fl-col-group-align-center .fl-col-content,
280.fl-col-group-equal-height.fl-col-group-align-center .fl-col-content {
281	justify-content: center;
282}
283
284/* Equal height align bottom */
285.fl-col-group-nested.fl-col-group-equal-height.fl-col-group-align-bottom .fl-col-content,
286.fl-col-group-equal-height.fl-col-group-align-bottom .fl-col-content {
287	justify-content: flex-end;
288}
289
290.fl-col-group-equal-height.fl-col-group-align-center .fl-col-group {
291	width: 100%;
292}
293
294/* Columns
295------------------------------------------------------ */
296
297.fl-col {
298	float: left;
299	min-height: 1px;
300}
301
302/* Column Bg Overlay */
303.fl-col-bg-overlay .fl-col-content {
304	position: relative;
305}
306.fl-col-bg-overlay .fl-col-content:after {
307	border-radius: inherit;
308	content: '';
309	display: block;
310	position: absolute;
311	top: 0;
312	right: 0;
313	bottom: 0;
314	left: 0;
315	z-index: 0;
316}
317.fl-col-bg-overlay .fl-module {
318	position: relative;
319	z-index: 2;
320}
321
322/* Templates
323------------------------------------------------------ */
324
325.single:not(.woocommerce).single-fl-builder-template .fl-content {
326	width: 100%;
327}
328
329/* Shapes & Patterns
330------------------------------------------------------- */
331.fl-builder-layer {
332	position: absolute;
333	top:0;
334	left:0;
335	right: 0;
336	bottom: 0;
337	z-index: 0;
338	pointer-events: none;
339	overflow: hidden;
340}
341.fl-builder-shape-layer {
342	z-index: 0;
343}
344.fl-builder-shape-layer.fl-builder-bottom-edge-layer {
345	z-index: 1;
346}
347.fl-row-bg-overlay .fl-builder-shape-layer {
348	z-index: 1;
349}
350.fl-row-bg-overlay .fl-builder-shape-layer.fl-builder-bottom-edge-layer {
351	z-index: 2;
352}
353.fl-row-has-layers .fl-row-content {
354	z-index: 1;
355}
356.fl-row-bg-overlay .fl-row-content {
357	z-index: 2;
358}
359
360.fl-builder-layer > * {
361	display: block;
362	position: absolute;
363	top:0;
364	left:0;
365	width: 100%;
366}
367.fl-builder-layer + .fl-row-content {
368	position: relative;
369}
370.fl-builder-layer .fl-shape {
371	fill: #aaa;
372	stroke: none;
373	stroke-width: 0;
374	width:100%;
375}
376/**
377Fix ipad parallax issue on safari
378https://core.trac.wordpress.org/ticket/48802
379https://core.trac.wordpress.org/ticket/49285
380https://github.com/WordPress/gutenberg/issues/17718
381*/
382@supports (-webkit-touch-callout: inherit) {
383  .fl-row.fl-row-bg-parallax .fl-row-content-wrap,
384  .fl-row.fl-row-bg-fixed .fl-row-content-wrap {
385    background-position: center !important;
386    background-attachment: scroll !important;
387  }
388}
389
390@supports (-webkit-touch-callout: none) {
391	.fl-row.fl-row-bg-fixed .fl-row-content-wrap {
392		background-position: center !important;
393		background-attachment: scroll !important;
394	}
395}
396/**
397 * Base CSS used by all (or many) modules. This file should
398 * not contain any generic layout CSS that doesn't apply to
399 * modules. That belongs in fl-builder-layout.css.
400 */
401
402/* Utilities
403------------------------------------------------------ */
404
405.fl-clearfix:before,
406.fl-clearfix:after {
407	display: table;
408	content: " ";
409}
410.fl-clearfix:after {
411	clear: both;
412}
413.sr-only {
414	position: absolute;
415	width: 1px;
416	height: 1px;
417	padding: 0;
418	overflow: hidden;
419	clip: rect(0,0,0,0);
420	white-space: nowrap;
421	border: 0;
422}
423
424/* Buttons
425------------------------------------------------------ */
426
427.fl-builder-content .fl-button:is(a, button),
428.fl-builder-content a.fl-button:visited {
429	border-radius: 4px;
430	display: inline-block;
431	font-size: 16px;
432	font-weight: normal;
433	line-height: 18px;
434	padding: 12px 24px;
435	text-decoration: none;
436	text-shadow: none;
437	cursor: pointer;
438}
439.fl-builder-content .fl-button:hover {
440	text-decoration: none;
441}
442.fl-builder-content .fl-button:active {
443	position: relative;
444	top: 1px;
445}
446.fl-builder-content .fl-button-width-full .fl-button {
447	width: 100%;
448	display: block;
449	text-align: center;
450}
451.fl-builder-content .fl-button-width-custom .fl-button {
452	display: inline-block;
453	text-align: center;
454	max-width: 100%;
455}
456.fl-builder-content .fl-button-left {
457	text-align: left;
458}
459.fl-builder-content .fl-button-center {
460	text-align: center;
461}
462.fl-builder-content .fl-button-right {
463	text-align: right;
464}
465.fl-builder-content .fl-button i {
466	font-size: 1.3em;
467	height: auto;
468	margin-right:8px;
469	vertical-align: middle;
470	width: auto;
471}
472.fl-builder-content .fl-button i.fl-button-icon-after {
473	margin-left: 8px;
474	margin-right: 0;
475}
476.fl-builder-content .fl-button-has-icon .fl-button-text {
477	vertical-align: middle;
478}
479
480/* Icons
481------------------------------------------------------ */
482
483.fl-icon-wrap {
484	display: inline-block;
485}
486.fl-icon {
487	display: table-cell;
488	vertical-align: middle;
489}
490.fl-icon a {
491	text-decoration: none;
492}
493.fl-icon i {
494	float: right;
495	height: auto;
496	width: auto;
497}
498.fl-icon i:before {
499	border: none !important;
500	height: auto;
501	width: auto;
502}
503.fl-icon-text {
504	display: table-cell;
505	text-align: left;
506	padding-left: 15px;
507	vertical-align: middle;
508}
509.fl-icon-text-empty {
510	display: none;
511}
512.fl-icon-text *:last-child {
513	margin: 0 !important;
514	padding: 0 !important;
515}
516.fl-icon-text a {
517	text-decoration: none;
518}
519.fl-icon-text span {
520	display: block;
521}
522.fl-icon-text span.mce-edit-focus {
523	min-width: 1px;
524}
525
526/* Photos
527------------------------------------------------------ */
528
529.fl-module img {
530	max-width: 100%;
531}
532.fl-photo {
533	line-height: 0;
534	position: relative;
535}
536.fl-photo-align-left {
537	text-align: left;
538}
539.fl-photo-align-center {
540	text-align: center;
541}
542.fl-photo-align-right {
543	text-align: right;
544}
545.fl-photo-content {
546	display: inline-block;
547	line-height: 0;
548	position: relative;
549	max-width: 100%;
550}
551.fl-photo-img-svg {
552	width: 100%;
553}
554.fl-photo-content img {
555	display: inline;
556	height: auto;
557	max-width: 100%;
558}
559.fl-photo-crop-circle img {
560	-webkit-border-radius: 100%;
561	-moz-border-radius: 100%;
562	border-radius: 100%;
563}
564.fl-photo-caption {
565	font-size: 13px;
566	line-height: 18px;
567	overflow: hidden;
568	text-overflow: ellipsis;
569}
570.fl-photo-caption-below {
571	padding-bottom: 20px;
572	padding-top: 10px;
573}
574.fl-photo-caption-hover {
575	background: rgba(0,0,0,0.7);
576	bottom: 0;
577	color: #fff;
578	left: 0;
579	opacity: 0;
580	filter: alpha(opacity = 0);
581	padding: 10px 15px;
582	position: absolute;
583	right: 0;
584	-webkit-transition:opacity 0.3s ease-in;
585	-moz-transition:opacity 0.3s ease-in;
586	transition:opacity 0.3s ease-in;
587}
588.fl-photo-content:hover .fl-photo-caption-hover {
589	opacity: 100;
590	filter: alpha(opacity = 100);
591}
592
593/* Pagination
594------------------------------------------------------ */
595
596.fl-builder-pagination,
597.fl-builder-pagination-load-more {
598	padding: 40px 0;
599}
600.fl-builder-pagination ul.page-numbers {
601	list-style: none;
602	margin: 0;
603	padding: 0;
604	text-align: center;
605}
606.fl-builder-pagination li {
607	display: inline-block;
608	list-style: none;
609	margin: 0;
610	padding: 0;
611}
612.fl-builder-pagination li a.page-numbers,
613.fl-builder-pagination li span.page-numbers {
614	border: 1px solid #e6e6e6;
615	display: inline-block;
616	padding: 5px 10px;
617	margin: 0 0 5px;
618}
619.fl-builder-pagination li a.page-numbers:hover,
620.fl-builder-pagination li span.current {
621	background: #f5f5f5;
622	text-decoration: none;
623}
624
625/* Slideshows
626------------------------------------------------------ */
627
628.fl-slideshow,
629.fl-slideshow * {
630	-webkit-box-sizing: content-box;
631	-moz-box-sizing: content-box;
632	box-sizing: content-box;
633
634}
635.fl-slideshow .fl-slideshow-image img {
636	max-width: none !important;
637}
638.fl-slideshow-social {
639	line-height: 0 !important;
640}
641.fl-slideshow-social * {
642	margin: 0 !important;
643}
644
645/* Sliders
646------------------------------------------------------ */
647
648.fl-builder-content .bx-wrapper .bx-viewport {
649	background: transparent;
650	border: none;
651	box-shadow: none;
652	left: 0;
653}
654
655/* Lightbox
656------------------------------------------------------ */
657
658.mfp-wrap button.mfp-arrow,
659.mfp-wrap button.mfp-arrow:active,
660.mfp-wrap button.mfp-arrow:hover,
661.mfp-wrap button.mfp-arrow:focus {
662	background: transparent !important;
663	border: none !important;
664	outline: none;
665	position: absolute;
666	top: 50%;
667	box-shadow: none !important;
668}
669.mfp-wrap .mfp-close,
670.mfp-wrap .mfp-close:active,
671.mfp-wrap .mfp-close:hover,
672.mfp-wrap .mfp-close:focus {
673	background: transparent !important;
674	border: none !important;
675	outline: none;
676	position: absolute;
677	top: 0;
678	box-shadow: none !important;
679}
680.admin-bar .mfp-wrap .mfp-close,
681.admin-bar .mfp-wrap .mfp-close:active,
682.admin-bar .mfp-wrap .mfp-close:hover,
683.admin-bar .mfp-wrap .mfp-close:focus {
684	top: 32px!important;
685}
686img.mfp-img {
687	padding: 0;
688}
689.mfp-counter {
690	display: none;
691}
692
693.mfp-wrap .mfp-preloader.fa {
694	font-size: 30px;
695}
696
697/* Form Fields
698------------------------------------------------------ */
699
700.fl-form-field {
701	margin-bottom: 15px;
702}
703.fl-form-field input.fl-form-error {
704	border-color: #DD6420;
705}
706.fl-form-error-message {
707	clear: both;
708	color: #DD6420;
709	display: none;
710	padding-top: 8px;
711	font-size: 12px;
712	font-weight: lighter;
713}
714.fl-form-button-disabled {
715	opacity: 0.5;
716}
717
718/* Animations
719------------------------------------------------------ */
720
721.fl-animation {
722	opacity: 0;
723}
724body.fl-no-js .fl-animation {
725	opacity: 1;
726}
727.fl-builder-preview .fl-animation,
728.fl-builder-edit .fl-animation,
729.fl-animated {
730	opacity: 1;
731}
732.fl-animated {
733	animation-fill-mode: both;
734}
735
736/* Button Icon Animation */
737.fl-button.fl-button-icon-animation i {
738	width: 0 !important;
739	opacity: 0;
740	transition: all 0.2s ease-out;
741}
742.fl-button.fl-button-icon-animation:hover i {
743	opacity: 1 !important;
744}
745.fl-button.fl-button-icon-animation i.fl-button-icon-after {
746	margin-left: 0px !important;
747}
748.fl-button.fl-button-icon-animation:hover i.fl-button-icon-after {
749	margin-left: 10px !important;
750}
751.fl-button.fl-button-icon-animation i.fl-button-icon-before {
752	margin-right: 0 !important;
753}
754.fl-button.fl-button-icon-animation:hover i.fl-button-icon-before {
755	margin-right: 20px !important;
756  margin-left: -10px;
757}
758
759/* Default button colors for non Beaver Builder themes.
760------------------------------------------------------ */
761
762.fl-builder-content .fl-button:is(a, button),
763.fl-builder-content a.fl-button:visited {
764	background: #fafafa;
765	border: 1px solid #ccc;
766	color: #333;
767}
768.fl-builder-content .fl-button:is(a, button) *,
769.fl-builder-content a.fl-button:visited * {
770	color: #333;
771}@media (max-width: 1200px) { /**
772 * Styles needed for the large breakpoint.
773 */
774 }@media (max-width: 1023px) { /* Columns
775------------------------------------------------------ */
776
777/* Reversed Responsive Stacking */
778.fl-col-group.fl-col-group-medium-reversed {
779	display: -webkit-flex;
780	display: flex;
781	-webkit-flex-wrap: wrap-reverse;
782	flex-wrap: wrap-reverse;
783	flex-direction: row-reverse;
784}
785 }@media (max-width: 768px) { /* Rows
786------------------------------------------------------ */
787
788.fl-row-content-wrap {
789	background-attachment: scroll !important;
790}
791.fl-row-bg-parallax .fl-row-content-wrap {
792	background-attachment: scroll !important;
793	background-position: center center !important;
794}
795
796/* Column Groups
797------------------------------------------------------ */
798
799/* Equal Heights */
800.fl-col-group.fl-col-group-equal-height {
801	display: block;
802}
803.fl-col-group.fl-col-group-equal-height.fl-col-group-custom-width {
804	display: -webkit-box;
805    display: -webkit-flex;
806    display: flex;
807}
808
809/* Reversed Responsive Stacking */
810.fl-col-group.fl-col-group-responsive-reversed {
811	display: -webkit-flex;
812	display: flex;
813	-webkit-flex-wrap: wrap-reverse;
814	flex-wrap: wrap-reverse;
815	flex-direction: row-reverse;
816}
817.fl-col-group.fl-col-group-responsive-reversed .fl-col:not(.fl-col-small-custom-width) {
818	flex-basis: 100%;
819	width: 100% !important;
820}
821.fl-col-group.fl-col-group-medium-reversed:not(.fl-col-group-responsive-reversed) {
822	display: unset;
823	display: unset;
824	-webkit-flex-wrap: unset;
825	flex-wrap: unset;
826	flex-direction: unset;
827}
828
829/* Columns
830------------------------------------------------------ */
831
832.fl-col {
833	clear: both;
834	float: none;
835	margin-left: auto;
836	margin-right: auto;
837	width: auto !important;
838}
839.fl-col-small:not(.fl-col-small-full-width) {
840	max-width: 400px;
841}
842.fl-block-col-resize {
843	display:none;
844}
845/* Rows
846------------------------------------------------------ */
847
848.fl-row[data-node] .fl-row-content-wrap {
849	margin: 0;
850	padding-left: 0;
851	padding-right: 0;
852}
853.fl-row[data-node] .fl-bg-video,
854.fl-row[data-node] .fl-bg-slideshow {
855	left: 0;
856	right: 0;
857}
858
859/* Columns
860------------------------------------------------------ */
861
862.fl-col[data-node] .fl-col-content {
863	margin: 0;
864	padding-left: 0;
865	padding-right: 0;
866}
867 }@media (min-width: 1201px) {
868	html .fl-visible-large:not(.fl-visible-desktop),
869	html .fl-visible-medium:not(.fl-visible-desktop),
870	html .fl-visible-mobile:not(.fl-visible-desktop) {
871		display: none;
872	}
873}
874
875@media (min-width: 1024px) and (max-width: 1200px) {
876	html .fl-visible-desktop:not(.fl-visible-large),
877	html .fl-visible-medium:not(.fl-visible-large),
878	html .fl-visible-mobile:not(.fl-visible-large) {
879		display: none;
880	}
881}
882
883@media (min-width: 769px) and (max-width: 1023px) {
884	html .fl-visible-desktop:not(.fl-visible-medium),
885	html .fl-visible-large:not(.fl-visible-medium),
886	html .fl-visible-mobile:not(.fl-visible-medium) {
887		display: none;
888	}
889}
890
891@media (max-width: 768px) {
892	html .fl-visible-desktop:not(.fl-visible-mobile),
893	html .fl-visible-large:not(.fl-visible-mobile),
894	html .fl-visible-medium:not(.fl-visible-mobile) {
895		display: none;
896	}
897}
898.fl-col-content {
899	display: flex;
900	flex-direction: column;
901	margin-top: 0px;
902	margin-right: 0px;
903	margin-bottom: 0px;
904	margin-left: 0px;
905	padding-top: 0px;
906	padding-right: 0px;
907	padding-bottom: 0px;
908	padding-left: 0px;
909}
910.fl-row-fixed-width {
911	max-width: 1280px;
912}
913.fl-builder-content > .fl-module-box {
914	margin: 0;
915}
916.fl-row-content-wrap {
917	margin-top: 0px;
918	margin-right: 0px;
919	margin-bottom: 0px;
920	margin-left: 0px;
921	padding-top: 0px;
922	padding-right: 0px;
923	padding-bottom: 0px;
924	padding-left: 0px;
925}
926.fl-module-content, .fl-module:where(.fl-module:not(:has(> .fl-module-content))) {
927	margin-top: 20px;
928	margin-right: 20px;
929	margin-bottom: 20px;
930	margin-left: 20px;
931}
932:where(.fl-builder-content, .fl-page) :is(a[href], button, input, select, textarea, [tabindex]:not([tabindex="-1"])):focus {
933	outline-width: px;
934	outline-offset: px;
935}
936.page .fl-post-header, .single-fl-builder-template .fl-post-header { display:none; }
937
938
939
940
941
942	/* Full Height Rows */
943	.fl-node-25ul7pjvig0y.fl-row-full-height > .fl-row-content-wrap,
944	.fl-node-25ul7pjvig0y.fl-row-custom-height > .fl-row-content-wrap {
945		display: -webkit-box;
946		display: -webkit-flex;
947		display: -ms-flexbox;
948		display: flex;
949	}
950	.fl-node-25ul7pjvig0y.fl-row-full-height > .fl-row-content-wrap {
951		min-height: 100vh;
952	}
953	.fl-node-25ul7pjvig0y.fl-row-custom-height > .fl-row-content-wrap {
954		min-height: 0;
955	}
956
957	.fl-builder-edit .fl-node-25ul7pjvig0y.fl-row-full-height > .fl-row-content-wrap {
958		min-height: calc( 100vh - 48px );
959	}
960
961	/* Full height iPad with portrait orientation. */
962	@media all and (width: 768px) and (height: 1024px) and (orientation:portrait){
963		.fl-node-25ul7pjvig0y.fl-row-full-height > .fl-row-content-wrap {
964			min-height: 1024px;
965		}
966	}
967	/* Full height iPad with landscape orientation. */
968	@media all and (width: 1024px) and (height: 768px) and (orientation:landscape){
969		.fl-node-25ul7pjvig0y.fl-row-full-height > .fl-row-content-wrap {
970			min-height: 768px;
971		}
972	}
973	/* Full height iPhone 5. You can also target devices with aspect ratio. */
974	@media screen and (aspect-ratio: 40/71) {
975		.fl-node-25ul7pjvig0y.fl-row-full-height > .fl-row-content-wrap {
976			min-height: 500px;
977		}
978	}
979.fl-node-25ul7pjvig0y > .fl-row-content-wrap {
980	background-color: #b01c2e;
981}
982.fl-node-25ul7pjvig0y.fl-row-default-height > .fl-row-content-wrap, .fl-node-25ul7pjvig0y.fl-row-full-height > .fl-row-content-wrap, .fl-node-25ul7pjvig0y.fl-row-custom-height > .fl-row-content-wrap {
983	align-items: flex-start;
984	justify-content: flex-start;
985}
986.fl-node-25ul7pjvig0y .fl-row-content {
987	max-width: 1000px;
988}
989 .fl-node-25ul7pjvig0y > .fl-row-content-wrap {
990	padding-top:60px;
991}
992@media ( max-width: 768px ) {
993 .fl-node-25ul7pjvig0y.fl-row > .fl-row-content-wrap {
994	padding-top:30px;
995}
996}
997
998                
999    
1000    .fl-builder-row-settings #fl-field-separator_position {
1001        display: none !important;
1002    }
1003    
1004    
1005    
1006    	
1007	
1008    
1009    
1010    
1011    
1012
1013
1014
1015.fl-node-dojh3wukz4ts {
1016	width: 100%;
1017}
1018.fl-node-dojh3wukz4ts > .fl-col-content {
1019	background-color: #b01c2e;
1020}
1021.fl-module-heading .fl-heading {
1022	padding: 0 !important;
1023	margin: 0 !important;
1024}.fl-row .fl-col .fl-node-xu9zr1wdahye h1.fl-heading a,
1025.fl-row .fl-col .fl-node-xu9zr1wdahye h1.fl-heading .fl-heading-text,
1026.fl-row .fl-col .fl-node-xu9zr1wdahye h1.fl-heading .fl-heading-text *,
1027.fl-node-xu9zr1wdahye h1.fl-heading .fl-heading-text {
1028	color: #ffffff;
1029}
1030.fl-node-xu9zr1wdahye.fl-module-heading .fl-heading {
1031	text-align: center;
1032}
1033 .fl-node-xu9zr1wdahye > .fl-module-content {
1034	margin-bottom:0px;
1035}
1036.fl-builder-content .fl-rich-text strong {
1037	font-weight: bold;
1038}
1039
1040/**
1041 * Remove bottom margins from the last paragraph
1042 * in v2+ text editor modules.
1043 */
1044.fl-module.fl-rich-text p:last-child {
1045	margin-bottom: 0;
1046}
1047/* Handle overlays in the builder */
1048.fl-builder-edit .fl-module.fl-rich-text p:not(:has(~ *:not(.fl-block-overlay))) {
1049	margin-bottom: 0;
1050}
1051 .fl-node-7f80x2rji4bv > .fl-module-content {
1052	margin-top:0px;
1053	margin-bottom:0px;
1054}
1055@media ( max-width: 768px ) {
1056 .fl-node-7f80x2rji4bv.fl-module > .fl-module-content {
1057	margin-top:0px;
1058}
1059}
1060
1061/* Start Global CSS */
1062
1063/* End Global CSS */
1064
1065
1066/* Start Global Nodes CSS */
1067
1068/* End Global Nodes CSS */
1069
1070
1071/* Start Layout CSS */
1072
1073/* End Layout CSS */
1074
1075
1076        			.fl-node-25ul7pjvig0y .fl-row-content {
1077				min-width: 0px;
1078			}
1079		
1080/*# sourceURL=fl-builder-layout-3808-inline-css */</style><link data-optimized="1" rel='stylesheet' id='wpa-css-css' href='https://clpvd.org/wp-content/litespeed/css/60830b1f2ab43405a3eeb56872c45304.css?ver=ac345' media='all' /><style id="fl-builder-layout-43931-inline-css">.fl-node-m9ovuw12tdig.fl-row-default-height > .fl-row-content-wrap, .fl-node-m9ovuw12tdig.fl-row-full-height > .fl-row-content-wrap, .fl-node-m9ovuw12tdig.fl-row-custom-height > .fl-row-content-wrap {
1081	align-items: center;
1082	justify-content: center;
1083}
1084
1085                
1086    
1087    .fl-builder-row-settings #fl-field-separator_position {
1088        display: none !important;
1089    }
1090    
1091    
1092    
1093    	
1094	
1095    
1096    
1097    
1098    
1099
1100
1101
1102.fl-node-u3hj07crfygx {
1103	width: 100%;
1104}
1105.fl-builder-edit .bb-bootstrap-alerts {
1106    display: block !important;
1107}
1108.bb-bootstrap-alerts a:hover {
1109    text-decoration:none;
1110}
1111.bb-bootstrap-alerts .alert {
1112    border: 1px solid transparent;
1113    border-radius: 4px;
1114}
1115.bb-bootstrap-alerts .fade {
1116    opacity: 0;
1117    -webkit-transition: opacity .15s linear;
1118    -o-transition: opacity .15s linear;
1119    transition: opacity .15s linear;
1120}
1121.bb-bootstrap-alerts .fade.in {
1122    opacity: 1;
1123}
1124.bb-bootstrap-alerts .alert-danger {
1125    color: #a94442;
1126    background-color: #f2dede;
1127    border-color: #ebccd1;
1128}
1129.bb-bootstrap-alerts .alert-warning {
1130    color: #8a6d3b;
1131    background-color: #fcf8e3;
1132    border-color: #faebcc;
1133}
1134.bb-bootstrap-alerts .alert-info {
1135    color: #31708f;
1136    background-color: #d9edf7;
1137    border-color: #bce8f1;
1138}
1139.bb-bootstrap-alerts .alert-success {
1140    color: #3c763d;
1141    background-color: #dff0d8;
1142    border-color: #d6e9c6;
1143}
1144.bb-bootstrap-alerts .close {
1145    float: right;
1146    margin: 10px;
1147    font-weight: 700;
1148    line-height: 1;
1149    color: #000;
1150    text-shadow: 0 1px 0 #fff;
1151    filter: alpha(opacity=20);
1152    opacity: .2;
1153}
1154.bb-bootstrap-alerts p {
1155    display: inline;
1156    margin: 0;
1157}/* typography */
1158.fl-node-nm0ud8ypz5o6 {
1159    font-size: 20px;
1160    line-height: 28px;
1161    text-align:center;
1162}
1163
1164/* padding for the contents */
1165.fl-node-nm0ud8ypz5o6 .alert-padding {
1166	padding-top: 20px;
1167    padding-bottom: 20px;
1168    padding-left: 20px;
1169    padding-right: 20px;
1170}
1171
1172/* custom notification type field css */
1173.fl-node-nm0ud8ypz5o6 .alert-custom {
1174	color: ;
1175	background-color: ;
1176	border-color: ;
1177	border-width:1px;
1178	border-style:none;
1179	border-radius:4px;
1180}
1181
1182/* custom font color css */
1183.fl-node-nm0ud8ypz5o6 .fi-background-color,
1184.fl-node-nm0ud8ypz5o6 .dashicons,
1185.fl-node-nm0ud8ypz5o6 .fa,
1186.fl-node-nm0ud8ypz5o6 .ua-icon
1187 {
1188	color: #c60027}
1189
1190/* link color css */
1191.fl-node-nm0ud8ypz5o6 a * {
1192	color: #8a6d3b}
1193/* close button padding css */
1194
1195.fl-node-nm0ud8ypz5o6 .close {
1196	font-size: 21px;
1197}
1198
1199/* for cookie base notification */
1200.fl-node-nm0ud8ypz5o6 .bb-bootstrap-alerts {
1201	/*display:none;*/
1202}
1203 .fl-node-nm0ud8ypz5o6 > .fl-module-content {
1204	margin-top:0px;
1205	margin-right:0px;
1206	margin-bottom:0px;
1207	margin-left:0px;
1208}
1209
1210/* Start Global Nodes CSS */
1211
1212/* End Global Nodes CSS */
1213
1214
1215/* Start Layout CSS */
1216
1217/* End Layout CSS */
1218
1219.fl-node-nm0ud8ypz5o6 .bb-bootstrap-alerts .alert {
1220  border-radius: 0;
1221}
1222
1223        
1224/*# sourceURL=fl-builder-layout-43931-inline-css */</style><link data-optimized="1" rel='stylesheet' id='search-filter-plugin-styles-css' href='https://clpvd.org/wp-content/litespeed/css/14e82b99cc84e4576e1b4bb587245b32.css?ver=241de' media='all' /><link data-optimized="1" rel='stylesheet' id='gd-full-width-css' href='https://clpvd.org/wp-content/litespeed/css/6dff49b71de6cf354eeb6f69daaf1793.css?ver=64a0b' media='all' /><link data-optimized="1" rel='stylesheet' id='pp-animate-css' href='https://clpvd.org/wp-content/litespeed/css/575add1ed84710352290d8f1b7b6b64d.css?ver=404e6' media='all' /> 
1224<script id="jquery-core-js" data-cfasync="false" src="https://clpvd.org/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
1224 
1224<script data-optimized="1" id="jquery-migrate-js" src="https://clpvd.org/wp-content/litespeed/js/05e2f978094cd82abacd3a36bab85f3b.js?ver=4e9c5"></script>
1224 
1224<script data-optimized="1" id="assabetinteractive-js" src="https://clpvd.org/wp-content/litespeed/js/7361618e5d03d9b2e83a63e8cfc7d505.js?ver=49630"></script>
1224 
1224<script id="search-filter-pro-bb-js-extra">var SFVC_DATA = {"ajax_url":"https://clpvd.org/wp-admin/admin-ajax.php","home_url":"https://clpvd.org/"};
1225//# sourceURL=search-filter-pro-bb-js-extra</script>
1225 
1225<script data-optimized="1" id="search-filter-pro-bb-js" src="https://clpvd.org/wp-content/litespeed/js/ede75feb3bfe34eb8edfe2c717b5fe76.js?ver=29ade"></script>
1225 
1225<script id="search-filter-plugin-build-js-extra">var SF_LDATA = {"ajax_url":"https://clpvd.org/wp-admin/admin-ajax.php","home_url":"https://clpvd.org/","extensions":[]};
1226//# sourceURL=search-filter-plugin-build-js-extra</script>
1226 
1226<script data-optimized="1" id="search-filter-plugin-build-js" src="https://clpvd.org/wp-content/litespeed/js/b74f303290e7a0c1042f50cedad8a900.js?ver=ed938"></script>
1226 
1226<script id="search-filter-plugin-chosen-js" src="https://clpvd.org/wp-content/plugins/search-filter-pro/public/assets/js/chosen.jquery.min.js?ver=2.5.13"></script>
1226 <link rel="https://api.w.org/" href="https://clpvd.org/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://clpvd.org/wp-json/wp/v2/pages/3808" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://clpvd.org/xmlrpc.php?rsd" /><meta name="generator" content="WordPress 7.1.1" /><link rel='shortlink' href='https://clpvd.org/?p=3808' /> 
1226<script>var bb_powerpack = {
1227				version: '2.42.3',
1228				getAjaxUrl: function() { return atob( 'aHR0cHM6Ly9jbHB2ZC5vcmcvd3AtYWRtaW4vYWRtaW4tYWpheC5waHA=' ); },
1229				callback: function() {},
1230				mapMarkerData: {},
1231				post_id: '3808',
1232				search_term: '',
1233				current_page: 'https://clpvd.org/search/',
1234				conditionals: {
1235					is_front_page: false,
1236					is_home: false,
1237					is_archive: false,
1238					current_post_type: '',
1239					is_tax: false,
1240										is_author: false,
1241					current_author: false,
1242					is_search: false,
1243									}
1244			};</script>
1244 <meta name="et-api-version" content="v1"><meta name="et-api-origin" content="https://clpvd.org"><link rel="https://theeventscalendar.com/" href="https://clpvd.org/wp-json/tribe/tickets/v1/" /><meta name="tec-api-version" content="v1"><meta name="tec-api-origin" content="https://clpvd.org"><link rel="alternate" href="https://clpvd.org/wp-json/tribe/events/v1/" /><link rel="stylesheet" href="https://use.typekit.net/tgk1dyc.css"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" integrity="sha512-xh6O/CkQoPOWDdYTDqeRdPCVd1SpvCA9XXcUnZS2FmJNp1coAFzvtCN9BmamE+4aHK8yyUHUSCcJHgXloTyT2A==" crossorigin="anonymous" referrerpolicy="no-referrer" /> 
1244<script>(function() { var d = document, fr = d.createElement('script'); fr.type = 'text/javascript'; fr.async = true; fr.src = 'https://static.fundrazr.com/widgets/loader.js'; var s = d.getElementsByTagName('script')[0]; s.parentNode.insertBefore(fr, s);})();</script>
1244 
1244<script>
vendor: 327 bytes, lines 1244-1248
1244(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1245new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1246j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
1247'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1248})(window,document,'script','dataLayer','
1248GTM-W2CD3P9
vendor: 3 bytes, line 1248
1248');
1248</script>
1248 <link rel="icon" href="https://clpvd.org/wp-content/uploads/2022/09/cropped-clpvd-icon-32x32.png" sizes="32x32" /><link rel="icon" href="https://clpvd.org/wp-content/uploads/2022/09/cropped-clpvd-icon-192x192.png" sizes="192x192" /><link rel="apple-touch-icon" href="https://clpvd.org/wp-content/uploads/2022/09/cropped-clpvd-icon-180x180.png" /><meta name="msapplication-TileImage" content="https://clpvd.org/wp-content/uploads/2022/09/cropped-clpvd-icon-270x270.png" /><style id="wp-custom-css">.gform-theme-datepicker:not(.gform-legacy-datepicker) .ui-datepicker-calendar td,
1249.gform-theme-datepicker:not(.gform-legacy-datepicker) .ui-datepicker-calendar th span{
1250	font-size: 15px !important;
1251}
1252.gform-theme-datepicker:not(.gform-legacy-datepicker) .ui-datepicker-header select {
1253	font-size: 18px !important;
1254}</style><link data-optimized="1" rel='stylesheet' id='fl-builder-wp-editor-css' href='https://clpvd.org/wp-content/litespeed/css/6becd1a5e73131c5d844cfb7f602699c.css?ver=d4137' media='all' /></head><body class="wp-singular page-template-default page page-id-3808 wp-theme-genesis wp-child-theme-focus-pro fl-builder fl-builder-2-11-1 fl-themer-1-6 fl-no-js tribe-no-js tec-no-tickets-on-recurring tec-no-rsvp-on-recurring fl-theme-builder-part fl-theme-builder-part-announcement-bar header-full-width full-width-content genesis-breadcrumbs-hidden no-site-header gd-transparent-background gd-full-width tribe-theme-genesis" itemscope itemtype="https://schema.org/WebPage">
vendor: 68 bytes, lines 1254-1255
1254
1255<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1255GTM-W2CD3P9
vendor: 82 bytes, lines 1255-1256
1255"
1256height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1256<div class="site-container"><ul class="genesis-skip-link"><li><a href="#genesis-content" class="screen-reader-shortcut"> Skip to main content</a></li></ul><div class="fl-builder-content fl-builder-content-43931 fl-builder-global-templates-locked" data-post-id="43931" data-type="part"><div class="fl-row fl-row-full-width fl-row-bg-none fl-node-m9ovuw12tdig fl-row-default-height fl-row-align-center" data-node="m9ovuw12tdig"><div class="fl-row-content-wrap"><div class="fl-row-content fl-row-full-width fl-node-content"><div class="fl-col-group fl-node-o3a4eh87mk0g" data-node="o3a4eh87mk0g"><div class="fl-col fl-node-u3hj07crfygx fl-col-bg-color" data-node="u3hj07crfygx"><div class="fl-col-content fl-node-content"><div class="fl-module fl-module-bb-bootstrap-alerts-module fl-node-nm0ud8ypz5o6" data-node="nm0ud8ypz5o6" aria-label="Bootstrap Alerts for Beaver Builder"><div class="fl-module-content fl-node-content"><div class="bb-bootstrap-alerts">
1257<a href="#" target="_blank" ><div class="alert alert-warning fade in" >
1258<span class="close" data-dismiss="alert" aria-label="close"><i class="fa fa-times" aria-hidden="true"></i></span>
1259<span class="bbn_information "><div class="alert-padding">
1260<i class=""></i><h3><a href="https://clpvd.org/announcement-olneyville-library-is-moving/">Olneyville Library is closed as we await its new location!</a></h3><hr /><h3><span style="color: #000000;">IT'S BACK!</span><br /><span style="color: #ff9900;"><a style="color: #ff9900;" href="https://clpvd.org/spooky">Spooky Night at Knight at Knight Memorial Library, Thursday, October 29th from 6-9:30PM</a></span></h3><h3>Get your <span style="color: #ff9900;"><a style="color: #ff9900;" href="https://clpvd.org/spooky">tickets</a></span> today!</h3></div>
1261</span></div>
1262</a></div></div></div></div></div></div></div></div></div></div><div class="site-inner"><div class="content-sidebar-wrap"><main class="content" id="genesis-content"><article class="post-3808 page type-page status-publish entry" aria-label="Search" itemscope itemtype="https://schema.org/CreativeWork"><div class="entry-content" itemprop="text"><div class="fl-builder-content fl-builder-content-3808 fl-builder-content-primary fl-builder-global-templates-locked" data-post-id="3808"><div class="fl-row fl-row-full-width fl-row-bg-color fl-node-25ul7pjvig0y fl-row-full-height fl-row-align-top" data-node="25ul7pjvig0y"><div class="fl-row-content-wrap"><div class="fl-row-content fl-row-fixed-width fl-node-content"><div class="fl-col-group fl-node-b7e6hm31osdv fl-col-group-equal-height fl-col-group-align-center" data-node="b7e6hm31osdv"><div class="fl-col fl-node-dojh3wukz4ts fl-col-bg-color" data-node="dojh3wukz4ts"><div class="fl-col-content fl-node-content"><div class="fl-module fl-module-heading fl-node-xu9zr1wdahye" data-node="xu9zr1wdahye" aria-label="Heading"><div class="fl-module-content fl-node-content"><h1 class="fl-heading">
1263<span class="fl-heading-text">Search</span></h1></div></div><div class="fl-module fl-module-rich-text fl-node-7f80x2rji4bv content-text-block" data-node="7f80x2rji4bv" aria-label="Text Editor"><div class="fl-module-content fl-node-content"><div class="fl-rich-text"><p> 
1263<script>function checkSetting() {
1264		if (document.getElementById('option_encore').checked) {
1265			document.getElementById('clpvd_search_form').action = document.getElementById('option_encore').value;
1266			document.getElementById('clpvd_search_form_target').placeholder = "Find books, movies, music and more";
1267			document.getElementById('clpvd_search_form_target').name = "lookfor";
1268			console.log(document.getElementById('option_encore').value);
1269		}
1270
1271		if (document.getElementById('option_wordpress').checked) {
1272			document.getElementById('clpvd_search_form').action = document.getElementById('option_wordpress').value;
1273			document.getElementById('clpvd_search_form_target').placeholder = "Search this site";
1274			document.getElementById('clpvd_search_form_target').name = "s";
1275			console.log(document.getElementById('option_wordpress').value);
1276		}
1277
1278	}</script>
1278 <form id="clpvd_search_form" action="https://clpvd.oslri.net/Union/Search" target="_blank" method="get" name="clpvd_search_form">
1279<input type="hidden" name="formids" value="target">
1280<input type="hidden" name="lang" value="eng">
1281<input type="hidden" name="suite" value="def">
1282<input type="hidden" name="reservedids" value="lang,suite">
1283<input type="hidden" name="submit mode" value="">
1284<input type="hidden" name="submitname" value="">
1285<input type="radio" value="https://clpvd.oslri.net/Union/Search" name="searchSwitch" id="option_encore" checked="selcheckedected" onChange="checkSetting()" />
1286<label for="option_encore">Search Catalog</label>
1287<input type="radio" value="https://clpvd.org" name="searchSwitch" id="option_wordpress" onChange="checkSetting()" />
1288<label for="option_wordpress">Search This Site</label>
1289<input id="clpvd_search_form_target" placeholder="Find books, movies, music and more" type="text" name="lookfor" value="">
1290<input type="submit" class="form-submit" value="Search"></form> 
1290<script>document.getElementById('option_encore').click();</script>
1290 </p></div></div></div></div></div></div></div></div></div></div></div></article></main></div></div><footer class="site-footer" itemscope itemtype="https://schema.org/WPFooter"><div class="wrap"><p></p></div></footer></div>
1290<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/focus-pro/*","/wp-content/themes/genesis/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script>
1290 <div class="gtranslate_wrapper" id="gt-wrapper-23308463"></div> 
1290<script>( function ( body ) {
1291			'use strict';
1292			body.className = body.className.replace( /\btribe-no-js\b/, 'tribe-js' );
1293		} )( document.body );</script>
1293  
1293<script type="text/javascript">var sbiajaxurl = "https://clpvd.org/wp-admin/admin-ajax.php";</script>
1293 
1293<script>/*  */var tribe_l10n_datatables = {"aria":{"sort_ascending":": activate to sort column ascending","sort_descending":": activate to sort column descending"},"length_menu":"Show _MENU_ entries","empty_table":"No data available in table","info":"Showing _START_ to _END_ of _TOTAL_ entries","info_empty":"Showing 0 to 0 of 0 entries","info_filtered":"(filtered from _MAX_ total entries)","zero_records":"No matching records found","search":"Search:","all_selected_text":"All items on this page were selected. ","select_all_link":"Select all pages","clear_selection":"Clear Selection.","pagination":{"all":"All","next":"Next","previous":"Previous"},"select":{"rows":{"0":"","_":": Selected %d rows","1":": Selected 1 row"}},"datepicker":{"dayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayNamesShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayNamesMin":["S","M","T","W","T","F","S"],"monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesMin":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"nextText":"Next","prevText":"Prev","currentText":"Today","closeText":"Done","today":"Today","clear":"Clear"},"registration_prompt":"There is unsaved attendee information. Are you sure you want to continue?"};/*  */</script>
1293<script data-optimized="1" id="tec-user-agent-js" src="https://clpvd.org/wp-content/litespeed/js/c578bc60e8c832bf0664f888e23b03fb.js?ver=3ae99"></script>
1293 
1293<script data-optimized="1" id="wpascript-js" src="https://clpvd.org/wp-content/litespeed/js/979a431c658af872bf8633de99376935.js?ver=a8951"></script>
1293 
1293<script id="wpascript-js-after">wpa_field_info = JSON.parse(atob("eyJ3cGFfZmllbGRfbmFtZSI6ImFxZ2p5djgwMzAiLCJ3cGFfZmllbGRfdmFsdWUiOjQ5NTg5NCwid3BhX2FkZF90ZXN0Ijoibm8ifQ=="));
1294//# sourceURL=wpascript-js-after</script>
1294 
1294<script data-optimized="1" id="bbn_boot-js" src="https://clpvd.org/wp-content/litespeed/js/e5bb829061309a7b88bcffcfaab4b45f.js?ver=6ee40"></script>
1294 
1294<script data-optimized="1" id="bbn_cookie-js" src="https://clpvd.org/wp-content/litespeed/js/6b4216033519fd796108991ccb64739f.js?ver=b24cc"></script>
1294 
1294<script id="jquery-ui-core-js-before">jQuery.uiBackCompat = true;
1295//# sourceURL=jquery-ui-core-js-before</script>
1295 
1295<script data-optimized="1" id="jquery-ui-core-js" src="https://clpvd.org/wp-content/litespeed/js/b67bdfb1a8dcc26064feab9236ab9b11.js?ver=c7540"></script>
1295 
1295<script data-optimized="1" id="jquery-ui-datepicker-js" src="https://clpvd.org/wp-content/litespeed/js/cd28740a44ac64aff45e59fff185f0dc.js?ver=8ec82"></script>
1295 
1295<script id="jquery-ui-datepicker-js-after">jQuery(function(jQuery){jQuery.datepicker.setDefaults({"closeText":"Close","currentText":"Today","monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"nextText":"Next","prevText":"Previous","dayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayNamesShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayNamesMin":["S","M","T","W","T","F","S"],"dateFormat":"MM d, yy","firstDay":0,"isRTL":false});});
1296//# sourceURL=jquery-ui-datepicker-js-after</script>
1296 
1296<script data-optimized="1" id="skip-links-js" src="https://clpvd.org/wp-content/litespeed/js/048b8264b352694e436e10c2ecf62acc.js?ver=875dd"></script>
1296 
1296<script data-optimized="1" id="page-links-to-js" src="https://clpvd.org/wp-content/litespeed/js/f765f64809ef19d3bcbfbd9d374bdd78.js?ver=84217"></script>
1296 
1296<script id="gt_widget_script_23308463-js-before">window.gtranslateSettings = /* document.write */ window.gtranslateSettings || {};window.gtranslateSettings['23308463'] = {"default_language":"en","languages":["en","es"],"url_structure":"sub_directory","detect_browser_language":1,"flag_style":"3d","wrapper_selector":"#gt-wrapper-23308463","alt_flags":{"en":"usa","es":"mexico"},"float_switcher_open_direction":"top","switcher_horizontal_position":"left","switcher_vertical_position":"top","flags_location":"\/wp-content\/plugins\/gtranslate\/flags\/"};
1297//# sourceURL=gt_widget_script_23308463-js-before</script>
1297<script src="https://clpvd.org/wp-content/plugins/gtranslate/js/float.js?ver=5.0.1" data-no-optimize="1" data-no-minify="1" data-gt-orig-url="/search/" data-gt-orig-domain="clpvd.org" data-gt-widget-id="23308463" defer></script>
1297<script>var wpAjaxUrl = 'https://clpvd.org/wp-admin/admin-ajax.php';var flBuilderUrl = 'https://clpvd.org/wp-content/plugins/bb-plugin/';var FLBuilderLayoutConfig = {
1298	anchorLinkAnimations : {
1299		duration 	: 1000,
1300		easing		: 'swing',
1301		offset 		: 100
1302	},
1303	paths : {
1304		pluginUrl : 'https://clpvd.org/wp-content/plugins/bb-plugin/',
1305		wpAjaxUrl : 'https://clpvd.org/wp-admin/admin-ajax.php'
1306	},
1307	breakpoints : {
1308		small  : 768,
1309		medium : 1023,
1310		large : 1200	},
1311	waypoint: {
1312		offset: 80
1313	},
1314	emptyColWidth: '0%',
1315	i18n : {
1316		opensInNewTab : '(opens in new tab)'
1317	}
1318};
1319(function($){
1320
1321	if(typeof FLBuilderLayout != 'undefined') {
1322		return;
1323	}
1324
1325	/**
1326	 * Helper class with generic logic for a builder layout.
1327	 *
1328	 * @class FLBuilderLayout
1329	 * @since 1.0
1330	 */
1331	FLBuilderLayout = {
1332
1333		/**
1334		 * Initializes a builder layout.
1335		 *
1336		 * @since 1.0
1337		 * @method init
1338		 */
1339		init: function()
1340		{
1341			// Destroy existing layout events.
1342			FLBuilderLayout._destroy();
1343
1344			// Init CSS classes.
1345			FLBuilderLayout._initClasses();
1346
1347			// Init backgrounds.
1348			FLBuilderLayout._initBackgrounds();
1349
1350			// Init buttons.
1351			FLBuilderLayout._initButtons();
1352
1353			// Init row shape layer height.
1354			FLBuilderLayout._initRowShapeLayerHeight();
1355
1356			// Init the new tab notice on links opening in a new tab.
1357			FLBuilderLayout._initLinkNotices();
1358
1359			// Only init if the builder isn't active.
1360			if ( 0 === $('.fl-builder-edit').length ) {
1361
1362				// Init anchor links.
1363				FLBuilderLayout._initAnchorLinks();
1364
1365				// Init the browser hash.
1366				FLBuilderLayout._initHash();
1367
1368				// Init forms.
1369				FLBuilderLayout._initForms();
1370
1371				FLBuilderLayout._reorderMenu();
1372			}
1373			else {
1374				FLBuilderLayout._initNestedColsWidth();
1375			}
1376			$('body').removeClass( 'fl-no-js' );
1377		},
1378
1379		/**
1380		 * Public method for refreshing Wookmark or MosaicFlow galleries
1381		 * within an element.
1382		 *
1383		 * @since 1.7.4
1384		 * @method refreshGalleries
1385		 */
1386		refreshGalleries: function( element )
1387		{
1388			var $element  = 'undefined' == typeof element ? $( 'body' ) : $( element ),
1389				mfContent = $element.find( '.fl-mosaicflow-content' ),
1390				wmContent = $element.find( '.fl-gallery' ),
1391				mfObject  = null;
1392
1393			if ( mfContent ) {
1394
1395				mfObject = mfContent.data( 'mosaicflow' );
1396
1397				if ( mfObject ) {
1398					mfObject.columns = $( [] );
1399					mfObject.columnsHeights = [];
1400					mfContent.data( 'mosaicflow', mfObject );
1401					mfContent.mosaicflow( 'refill' );
1402				}
1403			}
1404			if ( wmContent ) {
1405				wmContent.trigger( 'refreshWookmark' );
1406			}
1407		},
1408
1409		/**
1410		 * Public method for refreshing Masonry within an element
1411		 *
1412		 * @since 1.8.1
1413		 * @method refreshGridLayout
1414		 */
1415		refreshGridLayout: function( element )
1416		{
1417			var $element 		= 'undefined' == typeof element ? $( 'body' ) : $( element ),
1418				msnryContent	= $element.find('.masonry');
1419
1420			if ( msnryContent.length )	{
1421				msnryContent.masonry('layout');
1422			}
1423		},
1424
1425		/**
1426		 * Public method for reloading BxSlider within an element
1427		 *
1428		 * @since 1.8.1
1429		 * @method reloadSlider
1430		 */
1431		reloadSlider: function( content )
1432		{
1433			var $content = 'undefined' == typeof content ? $('body') : $(content);
1434
1435			// reload sliders.
1436			if ($content.find('.bx-viewport > div').length > 0) {
1437				$.each($content.find('.bx-viewport > div'), function (key, slider) {
1438					setTimeout(function () {
1439						$(slider).data('bxSlider').reloadSlider();
1440					}, 100);
1441				});
1442			}
1443		},
1444
1445		/**
1446		 * Public method for resizing WP audio player
1447		 *
1448		 * @since 1.8.2
1449		 * @method resizeAudio
1450		 */
1451		resizeAudio: function( element )
1452		{
1453			var $element 	 	= 'undefined' == typeof element ? $( 'body' ) : $( element ),
1454				audioPlayers 	= $element.find('.wp-audio-shortcode.mejs-audio'),
1455				player 		 	= null,
1456				mejsPlayer 	 	= null,
1457				rail 			= null,
1458				railWidth 		= 400;
1459
1460			if ( audioPlayers.length && typeof mejs !== 'undefined' ) {
1461            	audioPlayers.each(function(){
1462	            	player 		= $(this);
1463	            	mejsPlayer 	= mejs.players[player.attr('id')];
1464	            	rail 		= player.find('.mejs-controls .mejs-time-rail');
1465	            	var innerMejs = player.find('.mejs-inner'),
1466	            		total 	  = player.find('.mejs-controls .mejs-time-total');
1467
1468	            	if ( typeof mejsPlayer !== 'undefined' ) {
1469	            		railWidth = Math.ceil(player.width() * 0.8);
1470
1471	            		if ( innerMejs.length ) {
1472
1473		            		rail.css('width', railWidth +'px!important');
1474		            		//total.width(rail.width() - 10);
1475
1476		            		mejsPlayer.options.autosizeProgress = true;
1477
1478		            		// webkit has trouble doing this without a delay
1479							setTimeout(function () {
1480								mejsPlayer.setControlsSize();
1481							}, 50);
1482
1483			            	player.find('.mejs-inner').css({
1484			            		visibility: 'visible',
1485			            		height: 'inherit'
1486			            	});
1487		            	}
1488		           	}
1489	            });
1490	        }
1491		},
1492
1493		/**
1494		 * Public method for preloading WP audio player when it's inside the hidden element
1495		 *
1496		 * @since 1.8.2
1497		 * @method preloadAudio
1498		 */
1499		preloadAudio: function(element)
1500		{
1501			var $element 	 = 'undefined' == typeof element ? $( 'body' ) : $( element ),
1502				contentWrap  = $element.closest('.fl-accordion-item'),
1503				audioPlayers = $element.find('.wp-audio-shortcode.mejs-audio');
1504
1505			if ( ! contentWrap.hasClass('fl-accordion-item-active') && audioPlayers.find('.mejs-inner').length ) {
1506				audioPlayers.find('.mejs-inner').css({
1507					visibility : 'hidden',
1508					height: 0
1509				});
1510			}
1511		},
1512
1513		/**
1514		 * Public method for resizing slideshow momdule within the tab
1515		 *
1516		 * @since 1.10.5
1517		 * @method resizeSlideshow
1518		 */
1519		resizeSlideshow: function(){
1520			if(typeof YUI !== 'undefined') {
1521				YUI().use('node-event-simulate', function(Y) {
1522					Y.one(window).simulate("resize");
1523				});
1524			}
1525		},
1526
1527		/**
1528		 * Public method for reloading an embedded Google Map within the tabs or hidden element.
1529		 *
1530		 * @since 2.2
1531		 * @method reloadGoogleMap
1532		 */
1533		reloadGoogleMap: function(element){
1534			var $element  = 'undefined' == typeof element ? $( 'body' ) : $( element ),
1535			    googleMap = $element.find( 'iframe[src*="google.com/maps"]' );
1536
1537			if ( googleMap.length ) {
1538			    googleMap.attr( 'src', function(i, val) {
1539			        return val;
1540			    });
1541			}
1542		},
1543
1544		/**
1545		 * Unbinds builder layout events.
1546		 *
1547		 * @since 1.0
1548		 * @access private
1549		 * @method _destroy
1550		 */
1551		_destroy: function()
1552		{
1553			var win = $(window);
1554
1555			win.off('scroll.fl-bg-parallax');
1556			win.off('resize.fl-bg-video');
1557		},
1558
1559		/**
1560		 * Checks to see if the current device has touch enabled.
1561		 *
1562		 * @since 1.0
1563		 * @access private
1564		 * @method _isTouch
1565		 * @return {Boolean}
1566		 */
1567		_isTouch: function()
1568		{
1569			if(('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch)) {
1570				return true;
1571			}
1572
1573			return false;
1574		},
1575
1576		/**
1577		 * Checks to see if the current device is mobile.
1578		 *
1579		 * @since 1.7
1580		 * @access private
1581		 * @method _isMobile
1582		 * @return {Boolean}
1583		 */
1584		_isMobile: function()
1585		{
1586			return /Mobile|Android|Silk\/|Kindle|BlackBerry|Opera Mini|Opera Mobi|webOS/i.test( navigator.userAgent );
1587		},
1588
1589		/**
1590		 * Initializes builder body classes.
1591		 *
1592		 * @since 1.0
1593		 * @access private
1594		 * @method _initClasses
1595		 */
1596		_initClasses: function()
1597		{
1598			var body = $( 'body' ),
1599				ua   = navigator.userAgent;
1600
1601			// Add the builder body class (skip on block-only frontend to avoid layout break).
1602			if ( ! body.hasClass( 'fl-builder-blocks-only' ) && ! body.hasClass( 'archive' ) && $( '.fl-builder-content-primary' ).length > 0 ) {
1603				body.addClass('fl-builder');
1604			}
1605
1606			// Add the builder touch body class.
1607			if(FLBuilderLayout._isTouch()) {
1608				body.addClass('fl-builder-touch');
1609			}
1610
1611			// Add the builder mobile body class.
1612			if(FLBuilderLayout._isMobile()) {
1613				body.addClass('fl-builder-mobile');
1614			}
1615
1616			if ( $(window).width() < FLBuilderLayoutConfig.breakpoints.small ) {
1617				body.addClass( 'fl-builder-breakpoint-small' );
1618			}
1619
1620			if ( $(window).width() > FLBuilderLayoutConfig.breakpoints.small && $(window).width() < FLBuilderLayoutConfig.breakpoints.medium ) {
1621				body.addClass( 'fl-builder-breakpoint-medium' );
1622			}
1623
1624			if ( $(window).width() > FLBuilderLayoutConfig.breakpoints.medium && $(window).width() < FLBuilderLayoutConfig.breakpoints.large ) {
1625				body.addClass( 'fl-builder-breakpoint-large' );
1626			}
1627
1628			if ( $(window).width() > FLBuilderLayoutConfig.breakpoints.large ) {
1629				body.addClass( 'fl-builder-breakpoint-default' );
1630			}
1631
1632			// IE11 body class.
1633			if ( ua.indexOf( 'Trident/7.0' ) > -1 && ua.indexOf( 'rv:11.0' ) > -1 ) {
1634				body.addClass( 'fl-builder-ie-11' );
1635			}
1636		},
1637
1638		/**
1639		 * Initializes builder node backgrounds that require
1640		 * additional JavaScript logic such as parallax.
1641		 *
1642		 * @since 1.1.4
1643		 * @access private
1644		 * @method _initBackgrounds
1645		 */
1646		_initBackgrounds: function()
1647		{
1648			var win = $(window);
1649
1650			// Init parallax backgrounds.
1651			if($('.fl-row-bg-parallax').length > 0 && !FLBuilderLayout._isMobile()) {
1652				FLBuilderLayout._scrollParallaxBackgrounds();
1653				FLBuilderLayout._initParallaxBackgrounds();
1654				win.on('resize.fl-bg-parallax', FLBuilderLayout._initParallaxBackgrounds);
1655				win.on('scroll.fl-bg-parallax', FLBuilderLayout._scrollParallaxBackgrounds);
1656			}
1657
1658			// Init video backgrounds.
1659			if($('.fl-bg-video').length > 0) {
1660				FLBuilderLayout._initBgVideos();
1661				FLBuilderLayout._resizeBgVideos();
1662
1663				// Ensure FLBuilderLayout._resizeBgVideos() is only called once on window resize.
1664				var resizeBGTimer = null;
1665				win.on('resize.fl-bg-video', function(e){
1666					clearTimeout( resizeBGTimer );
1667					resizeBGTimer = setTimeout(function() {
1668						FLBuilderLayout._resizeBgVideos(e);
1669					}, 100 );
1670				});
1671			}
1672		},
1673
1674		/**
1675		 * Initializes all buttons in a layout.
1676		 *
1677		 * @since 2.10
1678		 * @access private
1679		 * @method _initButtons
1680		 */
1681		_initButtons: function()
1682		{
1683			// Trigger click event on Enter or Space key press for deprecated button markup.
1684			$('a.fl-button[role="button"]').on('keydown', function(event) {
1685				if (event.key === 'Enter' || event.key === ' ') {
1686					// Necessary to prevent the default behavior of the space key from scrolling the page
1687					event.preventDefault();
1688					$(this).trigger('click');
1689				}
1690			});
1691		},
1692
1693		/**
1694		 * Initializes all parallax backgrounds in a layout.
1695		 *
1696		 * @since 1.1.4
1697		 * @access private
1698		 * @method _initParallaxBackgrounds
1699		 */
1700		_initParallaxBackgrounds: function()
1701		{
1702			$('.fl-row-bg-parallax').each(FLBuilderLayout._initParallaxBackground);
1703		},
1704
1705		/**
1706		 * Initializes a single parallax background.
1707		 *
1708		 * @since 1.1.4
1709		 * @access private
1710		 * @method _initParallaxBackgrounds
1711		 */
1712		_initParallaxBackground: function()
1713		{
1714			var row     = $(this),
1715				content = row.find('> .fl-row-content-wrap'),
1716				winWidth = $(window).width(),
1717				screenSize = '',
1718				imageSrc = {
1719					default: '',
1720					medium: '',
1721					responsive: '',
1722				};
1723
1724			imageSrc.default = row.data('parallax-image') || '';
1725			imageSrc.medium = row.data('parallax-image-medium') || imageSrc.default;
1726			imageSrc.responsive = row.data('parallax-image-responsive') || imageSrc.medium;
1727
1728			if (winWidth > FLBuilderLayoutConfig.breakpoints.medium) {
1729				screenSize = 'default';
1730			} else if (winWidth > FLBuilderLayoutConfig.breakpoints.small && winWidth <= FLBuilderLayoutConfig.breakpoints.medium ) {
1731				screenSize = 'medium';
1732			} else if (winWidth <= FLBuilderLayoutConfig.breakpoints.small) {
1733				screenSize = 'responsive';
1734			}
1735
1736			content.css('background-image', 'url(' + imageSrc[screenSize] + ')');
1737			row.data('current-image-loaded', screenSize );
1738
1739		},
1740
1741		/**
1742		 * Fires when the window is scrolled to adjust
1743		 * parallax backgrounds.
1744		 *
1745		 * @since 1.1.4
1746		 * @access private
1747		 * @method _scrollParallaxBackgrounds
1748		 */
1749		_scrollParallaxBackgrounds: function()
1750		{
1751			$('.fl-row-bg-parallax').each(FLBuilderLayout._scrollParallaxBackground);
1752		},
1753
1754		/**
1755		 * Fires when the window is scrolled to adjust
1756		 * a single parallax background.
1757		 *
1758		 * @since 1.1.4
1759		 * @access private
1760		 * @method _scrollParallaxBackground
1761		 */
1762		_scrollParallaxBackground: function()
1763		{
1764			var win     	  = $(window),
1765				row     	  = $(this),
1766				content 	  = row.find('> .fl-row-content-wrap'),
1767				speed   	  = row.data('parallax-speed'),
1768				offset  	  = content.offset(),
1769				yPos		  = -((win.scrollTop() - offset.top) / speed),
1770				initialOffset = ( row.data('parallax-offset') != null ) ? row.data('parallax-offset') : 0,
1771				totalOffset   = yPos - initialOffset;
1772
1773			content.css('background-position', 'center ' + totalOffset + 'px');
1774		},
1775
1776		/**
1777		 * Initializes all video backgrounds.
1778		 *
1779		 * @since 1.6.3.3
1780		 * @access private
1781		 * @method _initBgVideos
1782		 */
1783		_initBgVideos: function()
1784		{
1785			$('.fl-bg-video').each(FLBuilderLayout._initBgVideo);
1786		},
1787
1788		/**
1789		 * Initializes a video background.
1790		 *
1791		 * @since 1.6.3.3
1792		 * @access private
1793		 * @method _initBgVideo
1794		 */
1795		_initBgVideo: function()
1796		{
1797			var wrap   = $( this ),
1798				width       = wrap.data( 'width' ),
1799				height      = wrap.data( 'height' ),
1800				mp4         = wrap.data( 'mp4' ),
1801				youtube     = wrap.data( 'youtube'),
1802				vimeo       = wrap.data( 'vimeo'),
1803				mp4Type     = wrap.data( 'mp4-type' ),
1804				webm        = wrap.data( 'webm' ),
1805				webmType    = wrap.data( 'webm-type' ),
1806				fallback    = wrap.data( 'fallback' ),
1807				loaded      = wrap.data( 'loaded' ),
1808				videoMobile = wrap.data( 'video-mobile' ),
1809				playPauseButton = wrap.find('.fl-bg-video-play-pause-control'),
1810				fallbackTag = '',
1811				videoTag    = null,
1812				mp4Tag      = null,
1813				webmTag     = null;
1814
1815			// Return if the video has been loaded for this row.
1816			if ( loaded ) {
1817				return;
1818			}
1819
1820			videoTag  = $( '<video autoplay loop muted playsinline></video>' );
1821
1822			/**
1823			 * Add poster image (fallback image)
1824			 */
1825			if( 'undefined' != typeof fallback && '' != fallback ) {
1826				videoTag.attr( 'poster', 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' )
1827				videoTag.css({
1828					backgroundImage: 'url("' + fallback + '")',
1829					backgroundColor: 'transparent',
1830					backgroundRepeat: 'no-repeat',
1831					backgroundSize: 'cover',
1832					backgroundPosition: 'center center',
1833				})
1834			}
1835
1836			// MP4 Source Tag
1837			if ( 'undefined' != typeof mp4 && '' != mp4 ) {
1838
1839				mp4Tag = $( '<source />' );
1840				mp4Tag.attr( 'src', mp4 );
1841				mp4Tag.attr( 'type', mp4Type );
1842
1843				videoTag.append( mp4Tag );
1844			}
1845			// WebM Source Tag
1846			if ( 'undefined' != typeof webm && '' != webm ) {
1847
1848				webmTag = $( '<source />' );
1849				webmTag.attr( 'src', webm );
1850				webmTag.attr( 'type', webmType );
1851
1852				videoTag.append( webmTag );
1853			}
1854
1855			// This is either desktop, or mobile is enabled.
1856			if ( ! FLBuilderLayout._isMobile() || ( FLBuilderLayout._isMobile() && "yes" == videoMobile ) ) {
1857				if ( 'undefined' != typeof youtube ) {
1858					FLBuilderLayout._initYoutubeBgVideo.apply( this );
1859				}
1860				else if ( 'undefined' != typeof vimeo ) {
1861					FLBuilderLayout._initVimeoBgVideo.apply( this );
1862				}
1863				else {
1864					wrap.append( videoTag );
1865
1866					if ( playPauseButton.length > 0 ) {
1867						var video = videoTag[0];
1868
1869						playPauseButton.on( 'click', { video: video }, function(e) {
1870							var video = e.data.video;
1871
1872							if ( video.paused ) {
1873								video.play();
1874							} else {
1875								video.pause();
1876							}
1877						} );
1878
1879						$( video ).on( 'play playing', function () {
1880							playPauseButton.removeClass( 'fa-play' ).addClass( 'fa-pause' );
1881						} );
1882						
1883						$( video ).on( 'pause ended waiting', function () {
1884							playPauseButton.removeClass( 'fa-pause' ).addClass( 'fa-play' );
1885						} );
1886					}
1887				}
1888			}
1889			else {
1890				// if we are here, it means we are on mobile and NO is set so remove video src and use fallback
1891				videoTag.attr('src', '')
1892				wrap.append( videoTag );
1893			}
1894
1895			// Mark this video as loaded.
1896			wrap.data('loaded', true);
1897		},
1898
1899		/**
1900		 * Initializes Youtube video background
1901		 *
1902		 * @since 1.9
1903		 * @access private
1904		 * @method _initYoutubeBgVideo
1905		 */
1906		_initYoutubeBgVideo: function()
1907		{
1908			var playerWrap  = $(this),
1909				videoId     = playerWrap.data('video-id'),
1910				videoPlayer = playerWrap.find('.fl-bg-video-player'),
1911				enableAudio = playerWrap.data('enable-audio'),
1912				audioButton = playerWrap.find('.fl-bg-video-audio'),
1913				playPauseButton = playerWrap.find('.fl-bg-video-play-pause-control'),
1914				startTime   = 'undefined' !== typeof playerWrap.data('start') ? playerWrap.data('start') : 0,
1915				startTime   = 'undefined' !== typeof playerWrap.data('t') && startTime === 0 ? playerWrap.data('t') : startTime,
1916				endTime     = 'undefined' !== typeof playerWrap.data('end') ? playerWrap.data('end') : 0,
1917				loop        = 'undefined' !== typeof playerWrap.data('loop') ? playerWrap.data('loop') : 1,
1918				stateCount  = 0,
1919				player,fallback_showing;
1920
1921			if ( videoId ) {
1922				fallback = playerWrap.data('fallback') || false
1923				if( fallback ) {
1924					playerWrap.find('iframe').remove()
1925					fallbackTag = $( '<div></div>' );
1926					fallbackTag.addClass( 'fl-bg-video-fallback' );
1927					fallbackTag.css( 'background-image', 'url(' + playerWrap.data('fallback') + ')' );
1928					fallbackTag.css( 'background-size', 'cover' );
1929					fallbackTag.css( 'transition', 'background-image 1s')
1930					playerWrap.append( fallbackTag );
1931					fallback_showing = true;
1932				}
1933				FLBuilderLayout._onYoutubeApiReady( function( YT ) {
1934					setTimeout( function() {
1935
1936						player = new YT.Player( videoPlayer[0], {
1937							videoId: videoId,
1938							events: {
1939								onReady: function(event) {
1940									if ( "no" === enableAudio || FLBuilderLayout._isMobile() ) {
1941										event.target.mute();
1942									}
1943									else if ( "yes" === enableAudio && event.target.isMuted ) {
1944										event.target.unMute();
1945									}
1946
1947									// Store an instance to a parent
1948									playerWrap.data('YTPlayer', player);
1949									FLBuilderLayout._resizeYoutubeBgVideo.apply(playerWrap);
1950
1951									// Queue the video.
1952									event.target.playVideo();
1953
1954									if ( audioButton.length > 0 && ! FLBuilderLayout._isMobile() ) {
1955										audioButton.on( 'click', {button: audioButton, player: player}, FLBuilderLayout._toggleBgVideoAudio );
1956									}
1957
1958									if ( playPauseButton.length > 0 ) {
1959										playPauseButton.on( 'click', {player: player}, function(e) {
1960											var player = e.data.player;
1961			
1962											if ( 1 === player.getPlayerState() ) {
1963												player.pauseVideo();
1964											} else {
1965												player.playVideo();
1966											}
1967										});
1968									}
1969								},
1970								onStateChange: function( event ) {
1971
1972									if ( event.data === 1 ) {
1973										if ( fallback_showing ) {
1974											$( '.fl-bg-video-fallback' ).css( 'background-image', 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)' )
1975										}
1976									}
1977									// Manual check if video is not playable in some browsers.
1978									// StateChange order: [-1, 3, -1]
1979									if ( stateCount < 4 ) {
1980										stateCount++;
1981									}
1982
1983									// Comply with the audio policy in some browsers like Chrome and Safari.
1984									if ( stateCount > 1 && -1 === event.data && "yes" === enableAudio ) {
1985										player.mute();
1986										player.playVideo();
1987										audioButton.show();
1988									}
1989
1990									if ( event.data === YT.PlayerState.ENDED && 1 === loop ) {
1991										if ( startTime > 0 ) {
1992											player.seekTo( startTime );
1993										}
1994										else {
1995											player.playVideo();
1996										}
1997									}
1998
1999									if ( event.data === YT.PlayerState.PLAYING ) {
2000										playPauseButton.removeClass( 'fa-play' ).addClass( 'fa-pause' );
2001									} else if ( event.data === YT.PlayerState.PAUSED ) {
2002										playPauseButton.removeClass( 'fa-pause' ).addClass( 'fa-play' );
2003									} else if ( event.data === YT.PlayerState.BUFFERING ) {
2004										playPauseButton.removeClass( 'fa-play' ).addClass( 'fa-pause' );
2005									} else if ( event.data === YT.PlayerState.CUED ) {
2006										playPauseButton.removeClass( 'fa-pause' ).addClass( 'fa-play' );
2007									} else if ( event.data === YT.PlayerState.ENDED ) {
2008										playPauseButton.removeClass( 'fa-pause' ).addClass( 'fa-play' );
2009									}
2010								},
2011								onError: function(event) {
2012									console.info('YT Error: ' + event.data)
2013									FLBuilderLayout._onErrorYoutubeVimeo(playerWrap)
2014								}
2015							},
2016							playerVars: {
2017								playsinline: FLBuilderLayout._isMobile() ? 1 : 0,
2018								controls: 0,
2019								showinfo: 0,
2020								rel : 0,
2021								start: startTime,
2022								end: endTime,
2023							}
2024						} );
2025					}, 1 );
2026				} );
2027			}
2028		},
2029
2030		/**
2031		 * On youtube or vimeo error show the fallback image if available.
2032		 * @since 2.0.7
2033		 */
2034		_onErrorYoutubeVimeo: function(playerWrap) {
2035
2036			fallback = playerWrap.data('fallback') || false
2037			if( ! fallback ) {
2038				return false;
2039			}
2040			playerWrap.find('iframe').remove()
2041			fallbackTag = $( '<div></div>' );
2042			fallbackTag.addClass( 'fl-bg-video-fallback' );
2043			fallbackTag.css( 'background-image', 'url(' + playerWrap.data('fallback') + ')' );
2044			playerWrap.append( fallbackTag );
2045		},
2046
2047		/**
2048		 * Check if Youtube API has been downloaded
2049		 *
2050		 * @since 1.9
2051		 * @access private
2052		 * @method _onYoutubeApiReady
2053		 * @param  {Function} callback Method to call when YT API has been loaded
2054		 */
2055		_onYoutubeApiReady: function( callback ) {
2056			if ( window.YT && YT.loaded ) {
2057				callback( YT );
2058			} else {
2059				// If not ready check again by timeout..
2060				setTimeout( function() {
2061					FLBuilderLayout._onYoutubeApiReady( callback );
2062				}, 350 );
2063			}
2064		},
2065
2066		/**
2067		 * Initializes Vimeo video background
2068		 *
2069		 * @since 1.9
2070		 * @access private
2071		 * @method _initVimeoBgVideo
2072		 */
2073		_initVimeoBgVideo: function()
2074		{
2075			var playerWrap	= $(this),
2076				videoId 	= playerWrap.data('video-id'),
2077				videoHash 	= playerWrap.data('video-hash'),
2078				videoPlayer = playerWrap.find('.fl-bg-video-player'),
2079				enableAudio = playerWrap.data('enable-audio'),
2080				audioButton = playerWrap.find('.fl-bg-video-audio'),
2081				playPauseButton = playerWrap.find('.fl-bg-video-play-pause-control'),
2082				playerState = '',
2083				player,
2084				width = playerWrap.outerWidth(),
2085				ua    = navigator.userAgent;
2086
2087			if ( typeof Vimeo !== 'undefined' && videoId )	{
2088				
2089				const vimOptions = {
2090					loop       : true,
2091					title      : false,
2092					portrait   : false,
2093					background : true,
2094					autopause  : false,
2095					muted      : true,
2096				};
2097
2098				if ( videoHash.length ) {
2099					vimOptions.url = `https://player.vimeo.com/video/${ videoId }?h=${ videoHash }`;
2100				} else {
2101					vimOptions.id = videoId;
2102				}
2103
2104				player = new Vimeo.Player(videoPlayer[0], vimOptions );
2105				playerWrap.data('VMPlayer', player);
2106				if ( "no" === enableAudio ) {
2107					player.setVolume(0);
2108				}
2109				else if ("yes" === enableAudio ) {
2110					// Chrome, Safari, Firefox have audio policy restrictions for autoplay videos.
2111					if ( ua.indexOf("Safari") > -1 || ua.indexOf("Chrome") > -1 || ua.indexOf("Firefox") > -1 ) {
2112						player.setVolume(0);
2113						audioButton.show();
2114					}
2115					else {
2116						player.setVolume(1);
2117					}
2118				}
2119
2120				player.play().catch(function(error) {
2121					FLBuilderLayout._onErrorYoutubeVimeo(playerWrap)
2122				});
2123
2124				if ( audioButton.length > 0 ) {
2125					audioButton.on( 'click', {button: audioButton, player: player}, FLBuilderLayout._toggleBgVideoAudio );
2126				}
2127
2128				player.on( 'play', function() {
2129					playerState = 'play';
2130					playPauseButton.removeClass( 'fa-play' ).addClass( 'fa-pause' );
2131				} );
2132				player.on( 'pause', function() {
2133					playerState = 'pause';
2134					playPauseButton.removeClass( 'fa-pause' ).addClass( 'fa-play' );
2135				} );
2136				player.on( 'ended', function() {
2137					playerState = 'ended';
2138					playPauseButton.removeClass( 'fa-pause' ).addClass( 'fa-play' );
2139				} );
2140				player.on( 'bufferstart', function() {
2141					playerState = 'bufferstart';
2142					playPauseButton.removeClass( 'fa-play' ).addClass( 'fa-pause' );
2143				} );
2144
2145				if ( playPauseButton.length > 0 ) {
2146					playPauseButton.on( 'click', { player: player }, function( e ) {
2147						var player = e.data.player;
2148
2149						if ( playerState === 'play' ) {
2150							player.pause();
2151						} else {
2152							player.play();
2153						}
2154					} );
2155				}
2156			}
2157		},
2158
2159		/**
2160		 * Mute / unmute audio on row's video background.
2161		 * It works for both Youtube and Vimeo.
2162		 *
2163		 * @since 2.1.3
2164		 * @access private
2165		 * @method _toggleBgVideoAudio
2166		 * @param {Object} e Method arguments
2167		 */
2168		_toggleBgVideoAudio: function( e ) {
2169			var player  = e.data.player,
2170			    control = e.data.button.find('.fl-audio-control');
2171
2172			if ( control.hasClass( 'fa-volume-off' ) ) {
2173				// Unmute
2174				control
2175					.removeClass( 'fa-volume-off' )
2176					.addClass( 'fa-volume-up' );
2177				e.data.button.find( '.fa-times' ).hide();
2178
2179				if ( 'function' === typeof player.unMute ) {
2180					player.unMute();
2181				}
2182				else {
2183					player.setVolume( 1 );
2184				}
2185			}
2186			else {
2187				// Mute
2188				control
2189					.removeClass( 'fa-volume-up' )
2190					.addClass( 'fa-volume-off' );
2191				e.data.button.find( '.fa-times' ).show();
2192
2193				if ( 'function' === typeof player.unMute ) {
2194					player.mute();
2195				}
2196				else {
2197					player.setVolume( 0 );
2198				}
2199			}
2200		},
2201
2202		/**
2203		 * Fires when there is an error loading a video
2204		 * background source and shows the fallback.
2205		 *
2206		 * @since 1.6.3.3
2207		 * @access private
2208		 * @method _videoBgSourceError
2209		 * @param {Object} e An event object
2210		 * @deprecated 2.0.3
2211		 */
2212		_videoBgSourceError: function( e )
2213		{
2214			var source 		= $( e.target ),
2215				wrap   		= source.closest( '.fl-bg-video' ),
2216				vid		    = wrap.find( 'video' ),
2217				fallback  	= wrap.data( 'fallback' ),
2218				fallbackTag = '';
2219			source.remove();
2220
2221			if ( vid.find( 'source' ).length ) {
2222				// Don't show the fallback if we still have other sources to check.
2223				return;
2224			} else if ( '' !== fallback ) {
2225				fallbackTag = $( '<div></div>' );
2226				fallbackTag.addClass( 'fl-bg-video-fallback' );
2227				fallbackTag.css( 'background-image', 'url(' + fallback + ')' );
2228				wrap.append( fallbackTag );
2229				vid.remove();
2230			}
2231		},
2232
2233		/**
2234		 * Fires when the window is resized to resize
2235		 * all video backgrounds.
2236		 *
2237		 * @since 1.1.4
2238		 * @access private
2239		 * @method _resizeBgVideos
2240		 */
2241		_resizeBgVideos: function()
2242		{
2243			$('.fl-bg-video').each( function() {
2244
2245				FLBuilderLayout._resizeBgVideo.apply( this );
2246
2247				if ( $( this ).parent().find( 'img' ).length > 0 ) {
2248					$( this ).parent().imagesLoaded( $.proxy( FLBuilderLayout._resizeBgVideo, this ) );
2249				}
2250			} );
2251		},
2252
2253		/**
2254		 * Fires when the window is resized to resize
2255		 * a single video background.
2256		 *
2257		 * @since 1.1.4
2258		 * @access private
2259		 * @method _resizeBgVideo
2260		 */
2261		_resizeBgVideo: function()
2262		{
2263			if ( 0 === $( this ).find( 'video' ).length && 0 === $( this ).find( 'iframe' ).length ) {
2264				return;
2265			}
2266
2267			var wrap        = $(this),
2268				wrapHeight  = wrap.outerHeight(),
2269				wrapWidth   = wrap.outerWidth(),
2270				vid         = wrap.find('video'),
2271				vidHeight   = wrap.data('height'),
2272				vidWidth    = wrap.data('width'),
2273				newWidth    = wrapWidth,
2274				newHeight   = Math.round(vidHeight * wrapWidth/vidWidth),
2275				newLeft     = 0,
2276				newTop      = 0,
2277				iframe 		= wrap.find('iframe'),
2278				isRowFullHeight = $(this).closest('.fl-row-bg-video').hasClass('fl-row-full-height'),
2279				vidCSS          = {
2280					top:       '50%',
2281					left:      '50%',
2282					transform: 'translate(-50%,-50%)',
2283				};
2284
2285			if ( vid.length ) {
2286				if(vidHeight === '' || typeof vidHeight === 'undefined' || vidWidth === '' || typeof vidWidth === 'undefined') {
2287					vid.css({
2288						'left'      : '0px',
2289						'top'       : '0px',
2290						'width'     : newWidth + 'px'
2291					});
2292
2293					// Try to set the actual video dimension on 'loadedmetadata' when using URL as video source
2294					vid.on('loadedmetadata', FLBuilderLayout._resizeOnLoadedMeta);
2295
2296					return;
2297				}
2298
2299				if ( ! isRowFullHeight ) {
2300					if ( newHeight < wrapHeight ) {
2301						newHeight = wrapHeight;
2302						newWidth  = vidHeight ? Math.round(vidWidth * wrapHeight/vidHeight) : newWidth;
2303						newLeft   = -((newWidth - wrapWidth) / 2);
2304					}
2305					else {
2306						newTop = -((newHeight - wrapHeight)/2);
2307					}
2308					vidCSS = {
2309						left   : newLeft + 'px',
2310						top    : newTop + 'px',
2311						height : newHeight + 'px',
2312						width  : newWidth + 'px',
2313					}
2314				}
2315
2316				vid.css( vidCSS );
2317
2318			}
2319			else if ( iframe.length ) {
2320
2321				// Resize Youtube video player within iframe tag
2322				if ( typeof wrap.data('youtube') !== 'undefined' ) {
2323					FLBuilderLayout._resizeYoutubeBgVideo.apply(this);
2324				}
2325			}
2326		},
2327
2328		/**
2329		 * Fires when video meta has been loaded.
2330		 * This will be Triggered when width/height attributes were not specified during video background resizing.
2331		 *
2332		 * @since 1.8.5
2333		 * @access private
2334		 * @method _resizeOnLoadedMeta
2335		 */
2336		_resizeOnLoadedMeta: function(){
2337			var video 		= $(this),
2338				wrapHeight 	= video.parent().outerHeight(),
2339				wrapWidth 	= video.parent().outerWidth(),
2340				vidWidth 	= video[0].videoWidth,
2341				vidHeight 	= video[0].videoHeight,
2342				newHeight   = Math.round(vidHeight * wrapWidth/vidWidth),
2343				newWidth    = wrapWidth,
2344				newLeft     = 0,
2345				newTop 		= 0;
2346
2347			if(newHeight < wrapHeight) {
2348				newHeight   = wrapHeight;
2349				newWidth    = Math.round(vidWidth * wrapHeight/vidHeight);
2350				newLeft     = -((newWidth - wrapWidth)/2);
2351			}
2352			else {
2353				newTop      = -((newHeight - wrapHeight)/2);
2354			}
2355
2356			video.parent().data('width', vidWidth);
2357			video.parent().data('height', vidHeight);
2358
2359			video.css({
2360				'left'      : newLeft + 'px',
2361				'top'       : newTop + 'px',
2362				'width'     : newWidth + 'px',
2363				'height' 	: newHeight + 'px'
2364			});
2365		},
2366
2367		/**
2368		 * Fires when the window is resized to resize
2369		 * a single Youtube video background.
2370		 *
2371		 * @since 1.9
2372		 * @access private
2373		 * @method _resizeYoutubeBgVideo
2374		 */
2375		_resizeYoutubeBgVideo: function()
2376		{
2377			var wrap				= $(this),
2378				wrapWidth 			= wrap.outerWidth(),
2379				wrapHeight 			= wrap.outerHeight(),
2380				player 				= wrap.data('YTPlayer'),
2381				video 				= player ? player.getIframe() : null,
2382				aspectRatioSetting 	= '16:9', // Medium
2383				aspectRatioArray 	= aspectRatioSetting.split( ':' ),
2384				aspectRatio 		= aspectRatioArray[0] / aspectRatioArray[1],
2385				ratioWidth 			= wrapWidth / aspectRatio,
2386				ratioHeight 		= wrapHeight * aspectRatio,
2387				isWidthFixed 		= wrapWidth / wrapHeight > aspectRatio,
2388				width 				= isWidthFixed ? wrapWidth : ratioHeight,
2389				height 				= isWidthFixed ? ratioWidth : wrapHeight;
2390
2391			if ( video ) {
2392				$(video).width( width ).height( height );
2393			}
2394		},
2395
2396		/**
2397		 * Opens a tab or accordion item if the browser hash is set
2398		 * to the ID of one on the page.
2399		 *
2400		 * @since 1.6.0
2401		 * @access private
2402		 * @method _initHash
2403		 */
2404		_initHash: function()
2405		{
2406			var hash 			= window.location.hash.replace( '#', '' ).split( '/' ).shift(),
2407				element 		= null,
2408				tabs			= null,
2409				responsiveLabel	= null,
2410				tabIndex		= null,
2411				label			= null;
2412
2413			if ( '' !== hash ) {
2414
2415				try {
2416
2417					element = $( '#' + hash );
2418
2419					if ( element.length > 0 ) {
2420
2421						if ( element.hasClass( 'fl-accordion-item' ) ) {
2422							setTimeout( function() {
2423								element.find( '.fl-accordion-button' ).trigger( 'click' );
2424							}, 100 );
2425						}
2426						if ( element.hasClass( 'fl-tabs-panel' ) ) {
2427							setTimeout( function() {
2428								tabs 			= element.closest( '.fl-tabs' );
2429								responsiveLabel = element.find( '.fl-tabs-panel-label' );
2430								tabIndex 		= responsiveLabel.data( 'index' );
2431								label 			= tabs.find( '.fl-tabs-labels .fl-tabs-label[data-index=' + tabIndex + ']' );
2432
2433								label[0].click();
2434								FLBuilderLayout._scrollToElement(element);
2435							}, 100 );
2436						}
2437					}
2438				}
2439				catch( e ) {}
2440			}
2441		},
2442
2443		/**
2444		 * Adds a visually-hidden "(opens in new tab)" notice to links
2445		 * inside a builder layout that target a new tab, and removes it
2446		 * from ones that don't. Runs on the live DOM only, across every
2447		 * module, so the notice is never part of any saved content. Covers
2448		 * both real anchors (`target` attribute) and non-anchor elements
2449		 * like the Box module's `role="link"` div, which carries the same
2450		 * intent via a `data-link-target` attribute instead.
2451		 *
2452		 * @since 2.12
2453		 * @access private
2454		 * @method _initLinkNotices
2455		 */
2456		_initLinkNotices: function()
2457		{
2458			$( '.fl-builder-content a[target], .fl-builder-content [role="link"][data-link-target]' ).each( function() {
2459				var link   = $( this ),
2460					notice = link.children( 'span.fl-new-tab-notice' ),
2461					target = link.attr( 'target' ) || link.attr( 'data-link-target' );
2462
2463				if ( '_blank' === target ) {
2464					if ( 0 === notice.length ) {
2465						link.append( '<span class="fl-new-tab-notice sr-only">' + FLBuilderLayoutConfig.i18n.opensInNewTab + '</span>' );
2466					}
2467				} else if ( notice.length > 0 ) {
2468					notice.remove();
2469				}
2470			});
2471		},
2472
2473		/**
2474		 * Initializes all anchor links on the page for smooth scrolling.
2475		 *
2476		 * @since 1.4.9
2477		 * @access private
2478		 * @method _initAnchorLinks
2479		 */
2480		_initAnchorLinks: function()
2481		{
2482			$( 'a, [role="link"]' ).each( FLBuilderLayout._initAnchorLink );
2483		},
2484
2485		/**
2486		 * Initializes a single anchor link for smooth scrolling.
2487		 *
2488		 * @since 1.4.9
2489		 * @access private
2490		 * @method _initAnchorLink
2491		 */
2492		_initAnchorLink: function()
2493		{
2494			var link    = $( this ),
2495				href    = link.data( 'url' ) ? link.data( 'url' ) : link.attr( 'href' ),
2496				target  = link.data( 'url' ) ? new URL( href, window.location.href ) : this,
2497				loc     = window.location,
2498				id      = null,
2499				element = null,
2500				flNode  = false;
2501
2502			if ( 'undefined' != typeof href && href.indexOf( '#' ) > -1 && link.closest('svg').length < 1 ) {
2503
2504				if ( loc.pathname.replace( /^\//, '' ) == target.pathname.replace( /^\//, '' ) && loc.hostname == target.hostname ) {
2505
2506					try {
2507
2508						id      = href.split( '#' ).pop();
2509						// If there is no ID then we have nowhere to look
2510						// Fixes a quirk in jQuery and FireFox
2511						if( ! id ) {
2512							return;
2513						}
2514						element = $( '#' + id );
2515
2516						if ( element.length > 0 ) {
2517							flNode = element.hasClass( 'fl-row' ) || element.hasClass( 'fl-col' ) || element.hasClass( 'fl-module' );
2518							if ( !element.hasClass( 'fl-no-scroll' ) && ( link.hasClass( 'fl-scroll-link' ) || flNode ) ) {
2519								$( link ).on( 'click', FLBuilderLayout._scrollToElementOnLinkClick );
2520							}
2521							if ( element.hasClass( 'fl-accordion-item' ) ) {
2522								$( link ).on( 'click', FLBuilderLayout._scrollToAccordionOnLinkClick );
2523							}
2524							if ( element.hasClass( 'fl-tabs-panel' ) ) {
2525								$( link ).on( 'click', FLBuilderLayout._scrollToTabOnLinkClick );
2526							}
2527						}
2528					}
2529					catch( e ) {}
2530				}
2531			}
2532		},
2533
2534		/**
2535		 * Scrolls to an element when an anchor link is clicked.
2536		 *
2537		 * @since 1.4.9
2538		 * @access private
2539		 * @method _scrollToElementOnLinkClick
2540		 * @param {Object} e An event object.
2541		 * @param {Function} callback A function to call when the scroll is complete.
2542		 */
2543		_scrollToElementOnLinkClick: function( e, callback )
2544		{
2545			var attribute = $( this ).data( 'url' ) ? $( this ).data( 'url' ) : $( this ).attr( 'href' );
2546			var element = $( '#' + attribute.split( '#' ).pop() );
2547
2548			FLBuilderLayout._scrollToElement( element, callback );
2549
2550			e.preventDefault();
2551		},
2552
2553		/**
2554		 * Scrolls to an element.
2555		 *
2556		 * @since 1.6.4.5
2557		 * @access private
2558		 * @method _scrollToElement
2559		 * @param {Object} element The element to scroll to.
2560		 * @param {Function} callback A function to call when the scroll is complete.
2561		 */
2562		_scrollToElement: function( element, callback )
2563		{
2564			var config  = FLBuilderLayoutConfig.anchorLinkAnimations,
2565				dest    = 0,
2566				win     = $( window ),
2567				doc     = $( document );
2568
2569			if ( element.length > 0 ) {
2570
2571				if ( 'fixed' === element.css('position') || 'fixed' === element.parent().css('position') ) {
2572					dest = element.position().top;
2573				}
2574				else if ( element.offset().top > doc.height() - win.height() ) {
2575					dest = doc.height() - win.height();
2576				}
2577				else {
2578					dest = element.offset().top - config.offset;
2579				}
2580
2581				$( 'html, body' ).stop( true ).animate( { scrollTop: dest }, config.duration, config.easing, function() {
2582
2583					if ( 'undefined' != typeof callback ) {
2584						callback();
2585					}
2586
2587					if ( undefined != element.attr( 'id' ) && window.location.hash !== '#' + element.attr( 'id' ) ) {
2588
2589						var firefox_version = window.navigator.userAgent.match( /Firefox\/(\d+)\./ ),
2590							firefox_version = firefox_version ? parseInt( firefox_version[1], 10 ) : null;
2591
2592						if ( firefox_version !== null && firefox_version < 135 ) {
2593							window.location.hash = element.attr( 'id' );
2594						} else {
2595							if ( history.pushState ) {
2596								history.pushState( null, null, '#' + element.attr( 'id' ) );
2597							} else {
2598								window.location.hash = element.attr( 'id' );
2599							}
2600						}
2601					}
2602				} );
2603			}
2604		},
2605
2606		/**
2607		 * Scrolls to an accordion item when a link is clicked.
2608		 *
2609		 * @since 1.5.9
2610		 * @access private
2611		 * @method _scrollToAccordionOnLinkClick
2612		 * @param {Object} e An event object.
2613		 */
2614		_scrollToAccordionOnLinkClick: function( e )
2615		{
2616			var element = $( '#' + $( this ).attr( 'href' ).split( '#' ).pop() );
2617
2618			if ( element.length > 0 ) {
2619
2620				var callback = function() {
2621					if ( element ) {
2622						element.find( '.fl-accordion-button' ).trigger( 'click' );
2623						element = false;
2624					}
2625				};
2626
2627				FLBuilderLayout._scrollToElementOnLinkClick.call( this, e, callback );
2628			}
2629		},
2630
2631		/**
2632		 * Scrolls to a tab panel when a link is clicked.
2633		 *
2634		 * @since 1.5.9
2635		 * @access private
2636		 * @method _scrollToTabOnLinkClick
2637		 * @param {Object} e An event object.
2638		 */
2639		_scrollToTabOnLinkClick: function( e )
2640		{
2641			var element 		= $( '#' + $( this ).attr( 'href' ).split( '#' ).pop() ),
2642				tabs			= null,
2643				label   		= null,
2644				responsiveLabel = null;
2645
2646			if ( element.length > 0 ) {
2647
2648				tabs 			= element.closest( '.fl-tabs' );
2649				responsiveLabel = element.find( '.fl-tabs-panel-label' );
2650				tabIndex 		= responsiveLabel.data( 'index' );
2651				label 			= tabs.find( '.fl-tabs-labels .fl-tabs-label[data-index=' + tabIndex + ']' );
2652
2653				if ( responsiveLabel.is( ':visible' ) ) {
2654
2655					var callback = function() {
2656						if ( element ) {
2657							responsiveLabel.trigger( $.Event( 'click', { which: 1 } ) );
2658						}
2659					};
2660
2661					FLBuilderLayout._scrollToElementOnLinkClick.call( this, e, callback );
2662				}
2663				else {
2664					label[0].click();
2665					FLBuilderLayout._scrollToElement( element );
2666				}
2667
2668				e.preventDefault();
2669			}
2670		},
2671
2672		/**
2673		 * Initializes all builder forms on a page.
2674		 *
2675		 * @since 1.5.4
2676		 * @access private
2677		 * @method _initForms
2678		 */
2679		_initForms: function()
2680		{
2681			if ( ! FLBuilderLayout._hasPlaceholderSupport ) {
2682				$( '.fl-form-field input' ).each( FLBuilderLayout._initFormFieldPlaceholderFallback );
2683			}
2684
2685			$( '.fl-form-field input' ).on( 'focus', FLBuilderLayout._clearFormFieldError );
2686		},
2687
2688		/**
2689		 * Checks to see if the current device has HTML5
2690		 * placeholder support.
2691		 *
2692		 * @since 1.5.4
2693		 * @access private
2694		 * @method _hasPlaceholderSupport
2695		 * @return {Boolean}
2696		 */
2697		_hasPlaceholderSupport: function()
2698		{
2699			var input = document.createElement( 'input' );
2700
2701			return 'undefined' != input.placeholder;
2702		},
2703
2704		/**
2705		 * Initializes the fallback for when placeholders aren't supported.
2706		 *
2707		 * @since 1.5.4
2708		 * @access private
2709		 * @method _initFormFieldPlaceholderFallback
2710		 */
2711		_initFormFieldPlaceholderFallback: function()
2712		{
2713			var field       = $( this ),
2714				val         = field.val(),
2715				placeholder = field.attr( 'placeholder' );
2716
2717			if ( 'undefined' != placeholder && '' === val ) {
2718				field.val( placeholder );
2719				field.on( 'focus', FLBuilderLayout._hideFormFieldPlaceholderFallback );
2720				field.on( 'blur', FLBuilderLayout._showFormFieldPlaceholderFallback );
2721			}
2722		},
2723
2724		/**
2725		 * Hides a fallback placeholder on focus.
2726		 *
2727		 * @since 1.5.4
2728		 * @access private
2729		 * @method _hideFormFieldPlaceholderFallback
2730		 */
2731		_hideFormFieldPlaceholderFallback: function()
2732		{
2733			var field       = $( this ),
2734				val         = field.val(),
2735				placeholder = field.attr( 'placeholder' );
2736
2737			if ( val == placeholder ) {
2738				field.val( '' );
2739			}
2740		},
2741
2742		/**
2743		 * Shows a fallback placeholder on blur.
2744		 *
2745		 * @since 1.5.4
2746		 * @access private
2747		 * @method _showFormFieldPlaceholderFallback
2748		 */
2749		_showFormFieldPlaceholderFallback: function()
2750		{
2751			var field       = $( this ),
2752				val         = field.val(),
2753				placeholder = field.attr( 'placeholder' );
2754
2755			if ( '' === val ) {
2756				field.val( placeholder );
2757			}
2758		},
2759
2760		/**
2761		 * Clears a form field error message.
2762		 *
2763		 * @since 1.5.4
2764		 * @access private
2765		 * @method _clearFormFieldError
2766		 */
2767		_clearFormFieldError: function()
2768		{
2769			var field = $( this );
2770
2771			field.removeAttr( 'aria-invalid' );
2772			field.removeClass( 'fl-form-error' );
2773			const message = field.attr('aria-describedby');
2774			message ? $( '#' + message ).hide() : field.siblings( '.fl-form-error-message' ).hide();
2775		},
2776
2777		/**
2778		 * Init Row Shape Layer's height.
2779		 *
2780		 * @since 2.5.3
2781		 * @access private
2782		 * @method _initRowShapeLayerHeight
2783		 */
2784		_initRowShapeLayerHeight: function () {
2785			FLBuilderLayout._adjustRowShapeLayerHeight();
2786			$( window ).on( 'resize', FLBuilderLayout._adjustRowShapeLayerHeight );
2787		},
2788
2789		/**
2790		 * Set parent column width of nested columns when it's zero or blank.
2791		 *
2792		 * @since 2.7.4
2793		 * @access private
2794		 * @method _initNestedColsWidth
2795		 */
2796		_initNestedColsWidth: function()
2797		{
2798			var nestedCols = $( '.fl-col-has-cols' );
2799
2800			if ( nestedCols.length <= 0 ) {
2801				return;
2802			}
2803
2804			$( nestedCols ).each( function(index, col ){
2805				if ( $( col ).width() <= 0 ) {
2806					$( col ).css( 'width', FLBuilderLayoutConfig.emptyColWidth );
2807				}
2808			});
2809		},
2810
2811		/**
2812		 * Adjust Row Shape Layer's height to fix to remove the fine line that appears on certain screen sizes.
2813		 *
2814		 * @since 2.5.3
2815		 * @access private
2816		 * @method _adjustRowShapeLayerHeight
2817		 */
2818		_adjustRowShapeLayerHeight: function() {
2819			var rowShapeLayers = $('.fl-builder-shape-layer');
2820
2821			$( rowShapeLayers ).each(function (index) {
2822				var rowShapeLayer = $(this),
2823					shape = $(rowShapeLayer).find('svg'),
2824					height = shape.height(),
2825					excludeShapes = '.fl-builder-shape-circle, .fl-builder-shape-dot-cluster, .fl-builder-shape-topography, .fl-builder-shape-rect';
2826
2827				if ( ! rowShapeLayer.is( excludeShapes ) ) {
2828					$(shape).css('height', Math.ceil( height ) );
2829				}
2830			});
2831		},
2832		_string_to_slug: function( str ) {
2833			str = str.replace(/^\s+|\s+$/g, ''); // trim
2834			if ( 'undefined' == typeof window._fl_string_to_slug_regex ) {
2835				regex = new RegExp('[^a-zA-Z0-9\'":() !.,-_|]', 'g');
2836			} else {
2837				regex = new RegExp('[^' + window._fl_string_to_slug_regex + '\'":\(\) !.,-_|\\\p{Letter}]', 'ug');
2838			}
2839			str = str.replace(regex, '') // remove invalid chars
2840				.replace(/\s+/g, ' '); // collapse whitespace and replace by a space
2841			return str;
2842		},
2843		_reorderMenu: function() {
2844			if ( $('#wp-admin-bar-fl-builder-frontend-edit-link-default li').length > 1 ) {
2845					$( '#wp-admin-bar-fl-builder-frontend-duplicate-link' )
2846					.appendTo('#wp-admin-bar-fl-builder-frontend-edit-link-default')
2847					.css( 'padding-top', '5px' )
2848					.css( 'border-top', '2px solid #1D2125' )
2849					.css( 'margin-top', '5px' )
2850				}
2851		}
2852	};
2853
2854	/* Initializes the builder layout. */
2855	$(function(){
2856		FLBuilderLayout.init();
2857	});
2858
2859})(jQuery);
2860(function($){
2861
2862	if(typeof FLBuilderLayoutModules !== 'undefined') {
2863		return;
2864	}
2865
2866	/**
2867	 * Helper class with generic logic for builder modules.
2868	 * If generic module code needs to work in both the block
2869	 * editor and builder, it should go here. Otherwise, it
2870	 * should go on FLBuilderLayout.
2871	 *
2872	 * @since 2.9
2873	 */
2874	FLBuilderLayoutModules = {
2875
2876		/**
2877		 * Initializes builder module logic.
2878		 *
2879		 * @since 2.9
2880		 * @method init
2881		 */
2882		init: function()
2883		{
2884			// Only init if the builder isn't active.
2885			if ( 0 === $('.fl-builder-edit').length ) {
2886
2887				// Init module animations.
2888				FLBuilderLayoutModules._initModuleAnimations();
2889			}
2890		},
2891
2892		/**
2893		 * Initializes module animations.
2894		 *
2895		 * @since 1.1.9
2896		 * @access private
2897		 * @method _initModuleAnimations
2898		 */
2899		_initModuleAnimations: function()
2900		{
2901			if(typeof jQuery.fn.waypoint !== 'undefined') {
2902				$('.fl-animation').each( function() {
2903					var node = $( this ),
2904						nodeTop = node.offset().top,
2905						winHeight = $( window ).height(),
2906						bodyHeight = $( 'body' ).height(),
2907						waypoint = FLBuilderLayoutConfig.waypoint,
2908						offset = '80%';
2909
2910					if ( typeof waypoint.offset !== undefined ) {
2911						offset = FLBuilderLayoutConfig.waypoint.offset + '%';
2912					}
2913
2914					if ( bodyHeight - nodeTop < winHeight * 0.2 ) {
2915						offset = '100%';
2916					}
2917
2918					node.waypoint({
2919						offset: offset,
2920						handler: FLBuilderLayoutModules._doModuleAnimation
2921					});
2922				} );
2923			}
2924		},
2925
2926		/**
2927		 * Runs a module animation.
2928		 *
2929		 * @since 1.1.9
2930		 * @access private
2931		 * @method _doModuleAnimation
2932		 */
2933		_doModuleAnimation: function()
2934		{
2935			var module = 'undefined' == typeof this.element ? $(this) : $(this.element),
2936				delay = parseFloat(module.data('animation-delay')),
2937				duration = parseFloat(module.data('animation-duration'));
2938
2939			if ( ! isNaN( duration ) ) {
2940				module.css( 'animation-duration', duration + 's' );
2941			}
2942
2943			if(!isNaN(delay) && delay > 0) {
2944				setTimeout(function(){
2945					module.addClass('fl-animated');
2946				}, delay * 1000);
2947			} else {
2948				setTimeout(function(){
2949					module.addClass('fl-animated');
2950				}, 1);
2951			}
2952		}
2953	};
2954
2955	/* Initializes builder module logic. */
2956	$(function(){
2957		FLBuilderLayoutModules.init();
2958	});
2959
2960})(jQuery);
2961
2962/* Start Global JS */
2963
2964/* End Global JS */
2965
2966
2967/* Start Global Node Custom JS */
2968
2969/* End Global Node Custom JS */
2970
2971
2972/* Start Layout Custom JS */
2973
2974/* End Layout Custom JS */
2975
2976
2977;
2978(function($){
2979	BBAlert = function (settings) {
2980
2981		this.settings = settings;
2982		this.node     = settings.id;
2983		this.duration = settings.duration;
2984		
2985		var cookie_name = 'bbba-'+this.node;
2986		
2987
2988		if ( Cookies.get(cookie_name)== '1')
2989		{
2990			var element = '.fl-node-'+this.node+' .bb-bootstrap-alerts';
2991			jQuery(element).hide();
2992		}
2993		var alert= this;
2994		var selector='.fl-node-'+this.node+' .close';
2995		jQuery(selector).click(function(){
2996			alert._setCookie();
2997		});
2998	};
2999
3000	BBAlert.prototype =  {
3001		settings : {},
3002		node	 : '',
3003		duration : '',
3004
3005		_setCookie: function() {
3006			$this = this;
3007			var $cookie_duration = Math.round($this.duration);
3008			var $cookie_name = 'bbba-'+$this.node;
3009			Cookies.set($cookie_name,'1',{ expires: $cookie_duration });
3010		}
3011	};
3012
3013})(jQuery);(function($) {
3014jQuery(document).ready(function(){
3015
3016
3017			
3018		new BBAlert({
3019			id:'nm0ud8ypz5o6',
3020			duration: 0,
3021		});
3022
3023	});
3024})(jQuery);
3025/* Start Layout Custom JS */
3026
3027/* End Layout Custom JS */</script>
3027<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"8f022cdec0074a99b6b50252dd705755","r":1,"spa":2}' crossorigin="anonymous"></script>
3027
3028</body></html>
3029<!-- Page optimized by LiteSpeed Cache @2026-09-23 20:42:38 -->
3030
3031<!-- Page cached by LiteSpeed Cache 7.9.1 on 2026-09-23 20:42:38 -->

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