














<!doctype html>
<html class='no-js' lang='en'>
  <head>
<!-- Start of Shoplift scripts -->
<!-- 2026-03-13T20:45:01.5968947Z -->
<style>.shoplift-hide { opacity: 0 !important; }</style>
<style id="sl-preview-bar-hide">#preview-bar-iframe, #PBarNextFrameWrapper { display: none !important; }</style>
<script type="text/javascript">(function(rootPath, template, themeRole, themeId, isThemePreview){ /* Generated on 2026-03-19T17:45:01.4744704Z */(function(){"use strict";var $=document.createElement("style");$.textContent=`#shoplift-preview-control{position:fixed;max-width:332px;height:56px;background-color:#141414;z-index:9999;bottom:20px;display:flex;border-radius:8px;box-shadow:13px 22px 7px #0000,9px 14px 7px #00000003,5px 8px 6px #0000000d,2px 4px 4px #00000017,1px 1px 2px #0000001a,0 0 #0000001a;align-items:center;margin:0 auto;left:16px;right:16px;opacity:0;transform:translateY(20px);visibility:hidden;transition:opacity .4s ease-in-out,transform .4s ease-in-out,visibility 0s .4s}#shoplift-preview-control.visible{opacity:1;transform:translateY(0);visibility:visible;transition:opacity .4s ease-in-out,transform .4s ease-in-out,visibility 0s 0s}#shoplift-preview-control *{font-family:Inter,sans-serif;color:#fff;box-sizing:border-box;font-size:16px}#shoplift-preview-variant-title{font-weight:400;line-height:140%;font-size:16px;text-align:start;letter-spacing:-.16px;flex-grow:1;text-wrap:nowrap;overflow:hidden;text-overflow:ellipsis}#shoplift-preview-variant-selector{position:relative;display:block;padding:6px 0;height:100%;min-width:0;flex:1 1 auto}#shoplift-preview-variant-menu-trigger{border:none;cursor:pointer;width:100%;background-color:transparent;padding:0 16px;border-left:1px solid #333;border-right:1px solid #333;height:100%;display:flex;align-items:center;justify-content:start;gap:8px}#shoplift-preview-variant-selector .menu-variant-label{width:24px;height:24px;border-radius:50%;padding:6px;display:flex;justify-content:center;align-items:center;font-size:12px;font-style:normal;font-weight:600;line-height:100%;letter-spacing:-.12px;flex-shrink:0}#shoplift-preview-variant-selector .preview-variant-menu{position:absolute;bottom:110%;transform:translate3d(0,20px,0);visibility:hidden;pointer-events:none;opacity:0;cursor:pointer;background-color:#141414;border:1px solid #141414;border-radius:6px;width:100%;max-height:156px;overflow-y:auto;box-shadow:0 8px 16px #0003;z-index:1;transition:opacity .3s ease-in-out,transform .3s ease-in-out,visibility 0s .3s}#shoplift-preview-variant-selector .preview-variant-menu.preview-variant-menu__visible{visibility:visible;pointer-events:auto;opacity:100;transform:translateZ(0);transition:opacity .3s ease-in-out,transform .3s ease-in-out,visibility 0s 0s}@media screen and (max-width:400px){#shoplift-preview-variant-selector .preview-variant-menu{position:fixed;left:0;right:0;width:auto;bottom:110%}}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item{padding:12px 16px;display:flex;overflow:hidden}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item .menu-variant-label{margin-right:6px}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item span{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap;white-space:nowrap;color:#f6f6f6;font-size:14px;font-style:normal;font-weight:500}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:hover{background-color:#545454}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:last-of-type{border-bottom-left-radius:6px;border-bottom-right-radius:6px}#shoplift-preview-variant-selector .preview-variant-menu .preview-variant-menu--item:first-of-type{border-top-left-radius:6px;border-top-right-radius:6px}#shoplift-preview-control div:has(#shoplift-exit-preview-button){padding:0 16px}#shoplift-exit-preview-button{padding:6px 8px;font-weight:500;line-height:75%;border-radius:4px;background-color:transparent;border:none;text-decoration:none}#shoplift-exit-preview-button:hover{cursor:pointer;background-color:#333}/*$vite$:1*/`,document.head.appendChild($);var B=" daum[ /]| deusu/| yadirectfetcher|(?:^|[^g])news(?!sapphire)|(?<! (?:channel/|google/))google(?!(app|/google| pixel))|(?<! cu)bots?(?:\\b|_)|(?<!(?: ya| yandex|^job|inapp;) ?)search|(?<!(?:lib))http|(?<![hg]m)score|@[a-z][\\w-]+\\.|\\(\\)|\\.com|\\b\\d{13}\\b|^<|^[\\w \\.\\-\\(?:\\):]+(?:/v?\\d+(?:\\.\\d+)?(?:\\.\\d{1,10})*?)?(?:,|$)|^[^ ]{50,}$|^\\d+\\b|^\\w+/[\\w\\(\\)]*$|^active|^ad muncher|^amaya|^avsdevicesdk/|^biglotron|^bot|^bw/|^clamav[ /]|^client/|^cobweb/|^custom|^ddg[_-]android|^discourse|^dispatch/\\d|^downcast/|^duckduckgo|^facebook|^getright/|^gozilla/|^hobbit|^hotzonu|^hwcdn/|^jeode/|^jetty/|^jigsaw|^microsoft bits|^movabletype|^mozilla/\\d\\.\\d \\(compatible;?\\)$|^mozilla/\\d\\.\\d \\w*$|^navermailapp|^netsurf|^offline|^owler|^postman|^python|^rank|^read|^reed|^rest|^rss|^snapchat|^space bison|^svn|^swcd |^taringa|^thumbor/|^track|^valid|^w3c|^webbandit/|^webcopier|^wget|^whatsapp|^wordpress|^xenu link sleuth|^yahoo|^yandex|^zdm/\\d|^zoom marketplace/|^{{.*}}$|admin|analyzer|archive|ask jeeves/teoma|bit\\.ly/|bluecoat drtr|browsex|burpcollaborator|capture|catch|check|chrome-lighthouse|chromeframe|classifier|clean|cloud|crawl|cypress/|dareboost|datanyze|dejaclick|detect|dmbrowser|download|evc-batch/|feed|firephp|gomezagent|headless|httrack|hubspot marketing grader|hydra|ibisbrowser|images|insight|inspect|iplabel|ips-agent|java(?!;)|library|mail\\.ru/|manager|measure|neustar wpm|node|nutch|offbyone|optimize|pageburst|pagespeed|parser|perl|phantomjs|pingdom|powermarks|preview|proxy|ptst[ /]\\d|reputation|resolver|retriever|rexx;|rigor|rss\\b|scan|scrape|server|sogou|sparkler/|speedcurve|spider|splash|statuscake|synapse|synthetic|tools|torrent|trace|transcoder|url|virtuoso|wappalyzer|watch|webglance|webkit2png|whatcms/|zgrab",G=/bot|spider|crawl|http|lighthouse/i,V;function K(){if(V instanceof RegExp)return V;try{V=new RegExp(B,"i")}catch{V=G}return V}function j(l){return!!l&&K().test(l)}class L{timestamp;constructor(){this.timestamp=new Date}}class W extends L{type;testId;hypothesisId;constructor(t,e,i){super(),this.type=3,this.testId=t,this.hypothesisId=e,this.timestamp=i}}class J extends L{type;path;constructor(t){super(),this.type=4,this.path=t}}class Y extends L{type;cart;constructor(t){super(),this.type=5,this.cart=t}}class D extends Error{isBot;constructor(){super(),this.isBot=!0}}function Z(l,t,e){for(const i of t.selectors){const s=l.querySelectorAll(i.cssSelector);for(let r=0;r<s.length;r++)e(t.testId,t.hypothesisId)}H(l,t,(i,s,r,o,n)=>n(s,r),e)}function x(l,t,e){for(const i of t.selectors)F(l,t.testId,t.hypothesisId,i,e??(()=>{}));H(l,t,F,e??(()=>{}))}function M(l){return l.urlPatterns.reduce((t,e)=>{switch(e.operator){case"contains":return t+`.*${e}.*`;case"endsWith":return t+`.*${e}`;case"startsWith":return t+`${e}.*`}},"")}function H(l,t,e,i){new MutationObserver(()=>{for(const r of t.selectors)e(l,t.testId,t.hypothesisId,r,i)}).observe(l.documentElement,{childList:!0,subtree:!0})}function F(l,t,e,i,s){const r=l.querySelectorAll(i.cssSelector);for(let o=0;o<r.length;o++){let n=r.item(o);if(n instanceof HTMLElement&&n.dataset.shoplift!==""){n.dataset.shoplift="";for(const a of i.actions.sort(ot))n=Q(l,i.cssSelector,n,a)}}return r.length>0&&s?(s(t,e),!0):!1}function Q(l,t,e,i){switch(i.type){case"innerHtml":e.innerHTML=i.value;break;case"attribute":X(e,i.scope,i.value);break;case"css":tt(l,t,i.value);break;case"js":et(l,e,i);break;case"copy":return it(e);case"remove":st(e);break;case"move":rt(e,parseInt(i.value));break}return e}function X(l,t,e){l.setAttribute(t,e)}function tt(l,t,e){const i=l.createElement("style");i.innerHTML=`${t} { ${e} }`,l.getElementsByTagName("head")[0]?.appendChild(i)}function et(l,t,e){Function("document","element",`"use strict"; ${e.value}`)(l,t)}function it(l){const t=l.cloneNode(!0);if(!l.parentNode)throw"Can't copy node outside of DOM";return l.parentNode.insertBefore(t,l.nextSibling),t}function st(l){l.remove()}function rt(l,t){if(t===0)return;const e=Array.prototype.slice.call(l.parentElement.children).indexOf(l),i=Math.min(Math.max(e+t,0),l.parentElement.children.length-1);l.parentElement.children.item(i).insertAdjacentElement(t>0?"afterend":"beforebegin",l)}function ot(l,t){return N(l)-N(t)}function N(l){return l.type==="copy"||l.type==="remove"?0:1}var P=(l=>(l[l.Template=0]="Template",l[l.Theme=1]="Theme",l[l.UrlRedirect=2]="UrlRedirect",l[l.Script=3]="Script",l[l.Dom=4]="Dom",l[l.Price=5]="Price",l))(P||{});const nt="data:image/svg+xml,%3csvg%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M9.96001%207.90004C9.86501%207.90004%209.77001%207.86504%209.69501%207.79004L6.43501%204.53004C6.19501%204.29004%205.80501%204.29004%205.56501%204.53004L2.30501%207.79004C2.16001%207.93504%201.92001%207.93504%201.77501%207.79004C1.63001%207.64504%201.63001%207.40504%201.77501%207.26004L5.03501%204.00004C5.56501%203.47004%206.43001%203.47004%206.96501%204.00004L10.225%207.26004C10.37%207.40504%2010.37%207.64504%2010.225%207.79004C10.15%207.86004%2010.055%207.90004%209.96001%207.90004Z'%20fill='white'/%3e%3c/svg%3e",at="data:image/svg+xml,%3csvg%20width='14'%20height='24'%20viewBox='0%200%2014%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M12.3976%2014.5255C12.2833%2013.8788%2012.0498%2013.3024%2011.6952%2012.7961C11.3416%2012.2898%2010.9209%2011.8353%2010.4353%2011.4317C9.94868%2011.0291%209.43546%2010.6488%208.89565%2010.292C8.48487%2010.049%208.09577%209.78565%207.72637%209.50402C7.35697%209.2224%207.08016%208.89503%206.89694%208.51987C6.71273%208.14471%206.67826%207.69533%206.79055%207.1697C6.86345%206.83216%206.97476%206.54647%207.12351%206.31162C7.27324%206.07778%207.47124%205.89986%207.7175%205.77684C7.96377%205.65483%208.21989%205.59383%208.48389%205.59383C8.88087%205.59383%209.17639%205.7016%209.3734%205.91714C9.56943%206.13268%209.68271%206.42345%209.71424%206.78946C9.74576%207.15547%209.72015%207.55401%209.63839%207.98509C9.55663%208.41617%209.43645%208.84724%209.27687%209.27934L13.5127%208.80149C13.9638%207.52656%2014.1017%206.42447%2013.9264%205.49725C13.751%204.56901%2013.2664%203.85122%2012.4724%203.34491C12.239%203.19648%2011.9779%203.07041%2011.6893%202.96569L12.0026%201.50979L9.86397%200L7.3875%201.50979L7.11169%202.78878C6.65166%202.8874%206.21724%203.01957%205.8114%203.19038C4.85292%203.594%204.06684%204.15115%203.45117%204.86385C2.83452%205.57655%202.42571%206.40108%202.22378%207.33847C2.06616%208.06947%202.04942%208.70796%202.17551%209.25087C2.30061%209.7948%202.52028%2010.2828%202.8355%2010.7139C3.14974%2011.145%203.51816%2011.5344%203.93977%2011.881C4.36039%2012.2288%204.782%2012.5521%205.20164%2012.851C5.68334%2013.1702%206.13844%2013.5169%206.56497%2013.8921C6.99052%2014.2672%207.31954%2014.7125%207.55004%2015.228C7.78055%2015.7445%207.81502%2016.3769%207.65347%2017.1262C7.56482%2017.5389%207.43676%2017.8765%207.27028%2018.1388C7.10381%2018.4011%206.89596%2018.5983%206.64772%2018.7295C6.3985%2018.8606%206.12071%2018.9267%205.8114%2018.9267C5.21641%2018.9267%204.79776%2018.6034%204.62833%2018.1632C4.4589%2017.7229%204.47367%2017.2583%204.60075%2016.5639C4.72782%2015.8705%205.05092%2015.1395%205.37107%2014.3699H1.17665C1.17665%2014.3699%200.207341%2016.1115%200.0310135%2017.6762C-0.0655232%2018.5302%200.0635208%2019.2653%200.41519%2019.8844C0.76686%2020.5036%201.33032%2020.9814%202.10655%2021.319C2.39222%2021.443%202.7104%2021.5447%203.05813%2021.623L2.54589%2024H7.17473L7.7047%2021.5386C8.08493%2021.442%208.43857%2021.3231%208.76562%2021.1787C9.73985%2020.7476%2010.52%2020.1427%2011.1071%2019.3649C11.6932%2018.5871%2012.0873%2017.7291%2012.2892%2016.7917C12.4744%2015.9295%2012.5099%2015.1741%2012.3966%2014.5275L12.3976%2014.5255Z'%20fill='white'/%3e%3c/svg%3e";async function lt(l){let t=l.replace(/-/g,"+").replace(/_/g,"/");for(;t.length%4;)t+="=";const e=atob(t),i=Uint8Array.from(e,o=>o.charCodeAt(0)),s=new Blob([i]).stream().pipeThrough(new DecompressionStream("gzip")),r=await new Response(s).text();return JSON.parse(r)}function _(l,t){return typeof t=="string"&&/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+(?:Z|[+-]\d+)/.test(t)?new Date(t):t}function O(l,t){return t}function k(l,t=!1,e=!1,i=","){const s=l/100;if(e){const o=Math.round(s).toLocaleString("en-US");return i!==","?o.replace(/,/g,i):o}else{const r=t?",":".",o=s.toFixed(2).split("."),n=parseInt(o[0],10),a=o[1]??"00",c=n.toLocaleString("en-US");return i!==","?`${c.replace(/,/g,i)}${r}${a}`:t?`${c.replace(/,/g,".")}${r}${a}`:`${c}${r}${a}`}}function R(l,t,e,i){const s=t.replace("{{amount}}",k(l,!1,!1)).replace("{{amount_no_decimals}}",k(l,!1,!0)).replace("{{amount_with_comma_separator}}",k(l,!0,!1)).replace("{{amount_no_decimals_with_comma_separator}}",k(l,!0,!0)).replace("{{amount_with_space_separator}}",k(l,!1,!1," ")).replace("{{amount_no_decimals_with_space_separator}}",k(l,!1,!0," ")).replace("{{amount_with_apostrophe_separator}}",k(l,!1,!1,"'")).replace("{{amount_no_decimals_with_apostrophe_separator}}",k(l,!1,!0,"'")).replace("{{amount_with_period_and_space_separator}}",k(l,!1,!1,". ")).replace("{{amount_no_decimals_with_period_and_space_separator}}",k(l,!1,!0,". "));return i?`${s} ${e}`:s}function q(l){return l.replace(/[^\d.,\s-]/g,"").trim()}function ct(l){const t=new Map;for(const[e,i,s]of l.v)t.set(e,{priceInCents:i,compareAtPriceInCents:s});return t}function dt(l,t,e,i){const{priceInCents:s,compareAtPriceInCents:r}=e,{mf:o,c:n,cce:a}=i;if(l.getAttribute("data-sl-attribute-p")===t)l.innerHTML=R(s,o,n,a);else if(l.getAttribute("data-sl-attribute-cap")===t)r<=0||r<=s?l.remove():l.innerHTML=R(r,o,n,a);else if(l.getAttribute("data-sl-attribute-discount")===t&&!(r<=0||r<=s)){const h=Math.round((r-s)/r*100),u=q(R(r-s,o,n,!1)),p=l.getAttribute("data-sl-format")||"percent";p==="percent"?l.textContent=`-${h}%`:p==="amount"?l.textContent=`-${u}`:p==="both"&&(l.textContent=`-${h}% (-${u})`)}}function ht(l){const t=[],e={id:"url-pattern",operator:"contains",value:"/"};for(const[i,s,r]of l.v){t.push({id:`p-${i}`,cssSelector:`[data-sl-attribute-p="${i}"]`,urlPatterns:[e],actions:[{id:`p-action-${i}`,type:"innerHtml",scope:"price",value:R(s,l.mf,l.c,l.cce)}]});const o=r<=0||r<=s;if(t.push({id:`cap-${i}`,cssSelector:`[data-sl-attribute-cap="${i}"]`,urlPatterns:[e],actions:[{id:`cap-action-${i}`,type:o?"remove":"innerHtml",scope:"compare-at-price",value:o?"":R(r,l.mf,l.c,l.cce)}]}),!o&&r>s){const n=Math.round((r-s)/r*100),a=q(R(r-s,l.mf,l.c,!1));t.push({id:`d-${i}`,cssSelector:`[data-sl-attribute-discount="${i}"]`,urlPatterns:[e],actions:[{id:`d-action-${i}`,type:"js",scope:null,value:`(function(doc, el) {              var format = el.getAttribute('data-sl-format') || 'percent';              if (format === 'percent') {                el.textContent = '-${n}%';              } else if (format === 'amount') {                el.textContent = '-${a}';              } else if (format === 'both') {                el.textContent = '-${n}% (-${a})';              }            })`}]})}}return t}let U=!1;class pt{constructor(t,e,i,s,r,o,n,a,c,h,u,p){this.shop=t,this.host=e,this.eventHost=i,this.disableReferrerOverride=a,this.logHistory=[],this.legacySessionKey=`SHOPLIFT_SESSION_${this.shop}`,this.cssHideClass=s?"shoplift-hide":"",this.testConfigs=u.map(v=>({...v,startAt:new Date(v.startAt),statusHistory:v.statusHistory.map(S=>({...S,createdAt:new Date(S.createdAt)}))})),this.inactiveTestConfigs=p,this.sendPageView=!!r,this.shopliftDebug=o===!0,this.telemetryEnabled=c===!0,this.gaConfig=n!=={"sendEvents":false,"mode":"gtag"}?n:{sendEvents:!1},this.fetch=window.fetch.bind(window),this.localStorageSet=window.localStorage.setItem.bind(window.localStorage),this.localStorageGet=window.localStorage.getItem.bind(window.localStorage);const d=this.getDeviceType();this.device=d!=="tablet"?d:"mobile",this.state=this.loadState(),this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.testsFilteredByAudience=u.filter(v=>v.status=="active"),this.getCountryTimeout=h===1000?1e3:h,this.log("State Loaded",JSON.stringify(this.state))}DATA_SL_ATTRIBUTE_P="data-sl-attribute-p";DATA_SL_TEST_ID="data-sl-test-id";VIEWPORT_TRACK_THRESHOLD=.5;temporarySessionKey="Shoplift_Session";essentialSessionKey="Shoplift_Essential";analyticsSessionKey="Shoplift_Analytics";priceSelectorsSessionKey="Shoplift_PriceSelectors";legacySessionKey;cssHideClass;testConfigs;inactiveTestConfigs;testsFilteredByAudience;sendPageView;shopliftDebug;gaConfig;telemetryEnabled;getCountryTimeout;state;shopifyAnalyticsId;cookie=document.cookie;isSyncing=!1;isSyncingGA=!1;fetch;localStorageSet;localStorageGet;sessionStorageSet=window.sessionStorage.setItem.bind(window.sessionStorage);sessionStorageGet=window.sessionStorage.getItem.bind(window.sessionStorage);urlParams=new URLSearchParams(window.location.search);device;logHistory;activeViewportObservers=new Map;clientIdRetryCount=0;deriveCategoryFromExistingTests(){if(!this.state.temporary.testCategory&&this.state.essential.visitorTests.length>0){const t=this.state.essential.visitorTests.some(e=>{if(!e.hypothesisId)return!1;const i=this.getHypothesis(e.hypothesisId);return i&&["theme","basicScript","price"].includes(i.type)});this.state.temporary.testCategory=t?"global":"conditional",this.persistTemporaryState(),this.log("Derived test category from existing visitorTests: %s",this.state.temporary.testCategory)}}async init(){try{if(this.log("Shoplift script initializing"),window.Shopify&&window.Shopify.designMode){this.log("Skipping script for design mode");return}if(window.location.href.includes("slScreenshot=true")){this.log("Skipping script for screenshot");return}if(window.location.hostname.endsWith(".edgemesh.com")){this.log("Skipping script for preview");return}if(window.location.href.includes("isShopliftMerchant")){const i=this.urlParams.get("isShopliftMerchant")==="true";this.log("Setting merchant session to %s",i),this.state.temporary.isMerchant=i,this.persistTemporaryState()}if(this.state.temporary.isMerchant){this.log("Setting up preview for merchant"),typeof window.shoplift!="object"&&this.setShopliftStub(),this.state.temporary.previewConfig||this.hidePage(),await this.initPreview(),document.querySelector("#sl-preview-bar-hide")?.remove();return}if(this.state.temporary.previewConfig=void 0,j(navigator.userAgent))return;const t=this.state.essential.visitorTests.filter(i=>i.hypothesisId&&+i.createdAt>Date.now()-6e4);if(t.length===0)this.sendDiagnosticTelemetry("page-landed",null);else for(const i of t)this.sendDiagnosticTelemetry("page-landed",i.testId,{hypothesisId:i.hypothesisId,isControl:i.assignedTo==="control",testType:i.testType??"unknown"});if(navigator.userAgent.includes("Chrome/118")){this.log("Random: %o",[Math.random(),Math.random(),Math.random()]);const i=await this.makeRequest({url:`${this.eventHost}/api/v0/events/ip`,method:"get"}).then(s=>s?.json());this.log(`IP: ${i}`),this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify(this.debugState(),O)}).catch()}if(this.shopifyAnalyticsId=this.getShopifyAnalyticsId(),this.monitorConsentChange(),this.checkForThemePreview())return;if(!this.disableReferrerOverride&&this.state.temporary.originalReferrer!=null){this.log(`Overriding referrer from '${document.referrer}' to '${this.state.temporary.originalReferrer}'`);const i=this.state.temporary.originalReferrer;delete this.state.temporary.originalReferrer,this.persistTemporaryState(),Object.defineProperty(document,"referrer",{get:()=>i,enumerable:!0,configurable:!0})}if(await this.refreshVisitor(this.shopifyAnalyticsId),await this.handleVisitorTest()){this.log("Redirecting for visitor test");return}this.setShoplift(),this.showPage(),this.ensureCartAttributesForExistingPriceTests(!1),await this.finalize(),console.log("SHOPLIFT SCRIPT INITIALIZED!")}catch(t){if(t instanceof D)return;throw t}finally{typeof window.shoplift!="object"&&this.setShopliftStub()}}getVariantColor(t){switch(t){case"a":return{text:"#141414",bg:"#E2E2E2"};case"b":return{text:"rgba(255, 255, 255, 1)",bg:"rgba(37, 99, 235, 1)"}}}getDefaultVariantTitle(t){return t.title?t.title:t.type==="price"?t.isControl?"Original prices":"Variant prices":t.isControl?"Original":"Untitled variant "+t.label.toUpperCase()}async initPreview(){const t=this.urlParams.get("previewConfig");if(t){this.state.temporary.previewConfig=void 0,this.log("Setting up the preview"),this.log("Found preview config, writing to temporary state");const e=await lt(t);if(this.state.temporary.previewConfig=e,this.state.temporary.previewConfig.testTypeCategory===P.Price){this.hidePage(!0);const s=this.state.temporary.previewConfig;let r=`${this.host}/api/dom-selectors/${s.storeId}/${s.testId}/${s.isDraft||!1}`;s.shopifyProductId&&(r+=`?productId=${s.shopifyProductId}`);const o=await this.makeJsonRequest({method:"get",url:r}).catch(n=>(this.log("Error getting domSelectors",n),null));s.variants.forEach(n=>n.domSelectors=o[n.id]?.domSelectors)}this.persistTemporaryState();const i=new URL(window.location.toString());i.searchParams.delete("previewConfig"),this.queueRedirect(i)}else if(this.state.temporary.previewConfig){this.showPage();const e=this.state.temporary.previewConfig;e.testTypeCategory===P.Template&&this.handleTemplatePreview(e)&&this.initPreviewControls(e),e.testTypeCategory===P.UrlRedirect&&this.handleUrlPreview(e)&&this.initPreviewControls(e),e.testTypeCategory===P.Script&&this.handleScriptPreview(e)&&this.initPreviewControls(e),e.testTypeCategory===P.Price&&await this.handlePricePreview(e)&&this.initPreviewControls(e)}}initPreviewControls(t){document.addEventListener("DOMContentLoaded",()=>{const e=t.variants.find(v=>v.id===t.currentVariant),i=e?.label||"a",s=t.variants,r=document.createElement("div");r.id="shoplift-preview-control";const o=document.createElement("div"),n=document.createElement("img");n.src=at,n.height=24,n.width=14,o.style.padding="0 16px",o.style.lineHeight="100%",o.appendChild(n),r.appendChild(o);const a=document.createElement("div");a.id="shoplift-preview-variant-selector";const c=document.createElement("button");c.id="shoplift-preview-variant-menu-trigger";const h=document.createElement("div");h.className="menu-variant-label",h.style.backgroundColor=this.getVariantColor(i).bg,h.style.color=this.getVariantColor(i).text,h.innerText=i.toUpperCase(),c.appendChild(h);const u=document.createElement("span");if(u.id="shoplift-preview-variant-title",u.innerText=e?this.getDefaultVariantTitle(e):"Untitled variant "+i.toUpperCase(),c.appendChild(u),s.length>1){const v=document.createElement("img");v.src=nt,v.width=12,v.height=12,v.style.height="12px",v.style.width="12px",c.appendChild(v);const S=document.createElement("div");S.className="preview-variant-menu";for(const m of t.variants.filter(T=>T.id!==t.currentVariant)){const T=document.createElement("div");T.className="preview-variant-menu--item";const I=document.createElement("div");I.className="menu-variant-label",I.style.backgroundColor=this.getVariantColor(m.label).bg,I.style.color=this.getVariantColor(m.label).text,I.style.flexShrink="0",I.innerText=m.label.toUpperCase(),T.appendChild(I);const y=document.createElement("span");y.innerText=this.getDefaultVariantTitle(m),T.appendChild(y),T.addEventListener("click",()=>{this.pickVariant(m.id)}),S.appendChild(T)}a.appendChild(S),c.addEventListener("click",()=>{S.className!=="preview-variant-menu preview-variant-menu__visible"?S.classList.add("preview-variant-menu__visible"):S.classList.remove("preview-variant-menu__visible")}),document.addEventListener("click",m=>{m.target instanceof Element&&!c.contains(m.target)&&S.className==="preview-variant-menu preview-variant-menu__visible"&&S.classList.remove("preview-variant-menu__visible")})}else c.style.pointerEvents="none",h.style.margin="0";a.appendChild(c),r.appendChild(a);const p=document.createElement("div"),d=document.createElement("button");d.id="shoplift-exit-preview-button",d.innerText="Exit",p.appendChild(d),d.addEventListener("click",()=>{this.exitPreview()}),r.appendChild(p),document.body.appendChild(r),requestAnimationFrame(()=>{r.classList.add("visible")})}),this.ensureCartAttributesForExistingPriceTests(!0)}pickVariant(t){if(this.state.temporary.previewConfig){const e=this.state.temporary.previewConfig,i=new URL(window.location.toString());if(e.testTypeCategory===P.UrlRedirect){const s=e.variants.find(r=>r.id===e.currentVariant)?.redirectUrl;if(i.pathname===s){const r=e.variants.find(o=>o.id===t)?.redirectUrl;r&&(i.pathname=r)}}if(e.testTypeCategory===P.Template){const s=e.variants.find(r=>r.id===e.currentVariant)?.pathName;if(s&&i.pathname===s){const r=e.variants.find(o=>o.id===t)?.pathName;r&&r!==s&&(i.pathname=r)}}e.currentVariant=t,this.persistTemporaryState(),this.queueRedirect(i)}}exitPreview(){const t=new URL(window.location.toString());if(this.state.temporary.previewConfig?.testTypeCategory===P.Template&&t.searchParams.delete("view"),this.state.temporary.previewConfig?.testTypeCategory===P.Script&&t.searchParams.delete("slVariant"),this.state.temporary.previewConfig?.testTypeCategory===P.UrlRedirect){const i=this.state.temporary.previewConfig.variants.filter(r=>!r.isControl&&r.redirectUrl!==null).map(r=>r.redirectUrl),s=this.state.temporary.previewConfig.variants.find(r=>r.label==="a")?.redirectUrl;i.includes(t.pathname)&&s&&(t.pathname=s)}this.state.temporary.isMerchant=!1,t.searchParams.delete("isShopliftMerchant"),this.state.temporary.previewConfig=void 0,this.persistTemporaryState(),this.hidePage(),this.queueRedirect(t)}handleTemplatePreview(t){const e=t.currentVariant,i=t.variants.find(a=>a.id===e);if(!i)return!1;const s=t.variants.find(a=>a.isControl);if(!s)return!1;this.log("Setting up template preview for type",s.type);const r=new URL(window.location.toString()),o=r.searchParams.get("view"),n=i.type===s.type;return!n&&!i.isControl&&template.suffix===s.affix&&this.typeFromTemplate()===s.type&&i.pathName!==null?(this.log("Hit control template type, redirecting to the variant url"),this.hidePage(),r.pathname=i.pathName,this.queueRedirect(r),!0):(!i.isControl&&this.typeFromTemplate()==i.type&&template.suffix===s.affix&&n&&o!==(i.affix||"__DEFAULT__")&&(this.log("Template type and affix match control, updating the view param"),r.searchParams.delete("view"),this.log("Setting the new viewParam to",i.affix||"__DEFAULT__"),this.hidePage(),r.searchParams.set("view",i.affix||"__DEFAULT__"),this.queueRedirect(r)),o!==null&&o!==(i.affix||"__DEFAULT__")&&(r.searchParams.delete("view"),this.hidePage(),this.queueRedirect(r)),!0)}handleUrlPreview(t){const e=t.currentVariant,i=t.variants.find(o=>o.id===e),s=t.variants.find(o=>o.isControl)?.redirectUrl;if(!i)return!1;this.log("Setting up URL redirect preview");const r=new URL(window.location.toString());return r.pathname===s&&!i.isControl&&i.redirectUrl!==null&&(this.log("Url matches control, redirecting"),this.hidePage(),r.pathname=i.redirectUrl,this.queueRedirect(r)),!0}handleScriptPreview(t){const e=t.currentVariant,i=t.variants.find(o=>o.id===e);if(!i)return!1;this.log("Setting up script preview");const s=new URL(window.location.toString());return s.searchParams.get("slVariant")!==i.id&&(this.log("current id doesn't match the variant, redirecting"),s.searchParams.delete("slVariant"),this.log("Setting the new slVariantParam"),this.hidePage(),s.searchParams.set("slVariant",i.id),this.queueRedirect(s)),!0}async handlePricePreview(t){const e=t.currentVariant,i=t.variants.find(s=>s.id===e);return i?(this.log("Setting up price preview"),i.domSelectors&&i.domSelectors.length>0&&(x(document,{testId:t.testId,hypothesisId:i.id,selectors:i.domSelectors}),this.ensureCartAttributesForExistingPriceTests(!0)),!0):!1}async finalize(){const t=await this.getCartState();t!==null&&this.queueCartUpdate(t),this.pruneStateAndSave(),await this.syncAllEvents()}setShoplift(){this.log("Setting up public API");const e=this.urlParams.get("slVariant")==="true",i=e?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:async s=>{if(this.log("Script checking variant for hypothesis '%s'",s),e)return this.log("Forcing variant for hypothesis '%s'",s),!0;if(i!==null)return this.log("Forcing hypothesis '%s'",i),s===i;const r=this.testConfigs.find(n=>n.hypotheses.some(a=>a.id===s));if(!r)return this.log("No test found for hypothesis '%s'",s),!1;const o=this.state.essential.visitorTests.find(n=>n.testId===r.id);return o?(this.log("Active visitor test found",s),o.hypothesisId===s):(await this.manuallySplitVisitor(r),this.testConfigs.some(n=>n.hypotheses.some(a=>a.id===s&&this.state.essential.visitorTests.some(c=>c.hypothesisId===a.id))))},setAnalyticsConsent:async s=>{await this.onConsentChange(s,!0)},getVisitorData:()=>({visitor:this.state.analytics.visitor,visitorTests:this.state.essential.visitorTests.filter(s=>!s.isInvalid).map(s=>{const{shouldSendToGa:r,savedAt:o,...n}=s;return n})})}}setShopliftStub(){this.log("Setting up stubbed public API");const e=this.urlParams.get("slVariant")==="true",i=e?null:this.urlParams.get("slVariant");window.shoplift={isHypothesisActive:s=>Promise.resolve(e||s===i),setAnalyticsConsent:()=>Promise.resolve(),getVisitorData:()=>({visitor:null,visitorTests:[]})}}async manuallySplitVisitor(t){this.log("Starting manual split for test '%s'",t.id),await this.handleVisitorTest([t]);const e=this.getReservationForTest(t.id);e&&!e.isRealized&&e.entryCriteriaKey&&(this.log("Realizing manual API reservation for test '%s'",t.id),this.realizeReservationForCriteria(e.entryCriteriaKey)),this.saveState(),this.syncAllEvents()}async handleVisitorTest(t){await this.filterTestsByAudience(this.testConfigs,this.state.analytics.visitor??this.buildBaseVisitor(),this.state.essential.visitorTests),this.pruneStaleVisitorTests(),this.deriveCategoryFromExistingTests(),this.clearStaleReservations();let e=t?t.filter(i=>this.testsFilteredByAudience.some(s=>s.id===i.id)):[...this.testsForUrl(this.testsFilteredByAudience),...this.domTestsForUrl(this.testsFilteredByAudience)];try{if(e.length===0)return this.log("No tests found"),!1;this.log("Checking for existing visitor test on page");const i=this.getCurrentVisitorHypothesis(e);if(i){this.log("Found current visitor test");const a=this.considerRedirect(i);return a&&(this.log("Redirecting for current visitor test"),this.redirect(i)),a}const s=this.getReservationForCurrentPage();if(s){this.log("Found matching reservation for current page: %s",s.testId);const a=this.getHypothesis(s.hypothesisId);if(a){a.type!=="price"&&this.realizeReservationForCriteria(s.entryCriteriaKey);const c=this.considerRedirect(a);return c&&this.redirect(a),c}}this.log("No active test relation for test page");const r=this.testsForUrl(this.inactiveTestConfigs.filter(a=>this.testIsPaused(a)&&a.hypotheses.some(c=>this.state.essential.visitorTests.some(h=>h.hypothesisId===c.id)))).map(a=>a.id);if(r.length>0)return this.log("Visitor has paused tests for test page, skipping test assignment: %o",r),!1;if(!this.state.temporary.testCategory){const a=this.testsFilteredByAudience.filter(h=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(h))),c=this.testsFilteredByAudience.filter(h=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(h)));if(this.log("Category dice roll - global tests: %o, conditional tests: %o",a.map(h=>({id:h.id,title:h.title,criteria:this.getEntryCriteriaKey(h)})),c.map(h=>({id:h.id,title:h.title,criteria:this.getEntryCriteriaKey(h)}))),a.length>0&&c.length>0){const h=a.length,u=c.length,p=h+u,d=Math.random()*p;this.state.temporary.testCategory=d<h?"global":"conditional",this.log("Category dice roll: rolled %.2f of %d (global weight: %d, conditional weight: %d), selected '%s'",d,p,h,u,this.state.temporary.testCategory)}else a.length>0?(this.state.temporary.testCategory="global",this.log("Only global tests available, setting category to global")):(this.state.temporary.testCategory="conditional",this.log("Only conditional tests available, setting category to conditional"));this.persistTemporaryState()}const o=this.state.temporary.testCategory;if(this.log("Visitor test category: %s",o),o==="global"){const a=this.testsFilteredByAudience.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)));for(const c of a)this.markTestAsBlocked(c,"category:global");e=e.filter(c=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}else{const a=this.testsFilteredByAudience.filter(c=>this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)));for(const c of a)this.markTestAsBlocked(c,"category:conditional");e=e.filter(c=>!this.isGlobalEntryCriteria(this.getEntryCriteriaKey(c)))}if(e.length===0)return this.log("No tests remaining after category filter"),!1;this.createReservations(e);const n=this.getReservationForCurrentPage();if(n&&!n.isRealized){const a=this.getHypothesis(n.hypothesisId);if(a){a.type!=="price"&&this.realizeReservationForCriteria(n.entryCriteriaKey);const c=this.considerRedirect(a);return c&&(this.log("Redirecting for new test"),this.redirect(a)),c}}return!1}finally{this.includeInDomTests(),this.saveState()}}includeInDomTests(){this.applyControlForAudienceFilteredPriceTests();const t=this.getDomTestsForCurrentUrl(),e=this.getVisitorDomHypothesis(t);for(const i of t){this.log("Evaluating dom test '%s'",i.id);const s=i.hypotheses.some(d=>d.type==="price");if(this.state.essential.visitorTests.find(d=>d.testId===i.id&&d.isInvalid&&!d.hypothesisId)){if(this.log("Visitor is blocked from test '%s', applying control prices if price test",i.id),s){const d=i.hypotheses.find(v=>v.isControl);d?.priceData&&(this.applyPriceTestWithMapLookup(i.id,d,[d],()=>{this.log("Control prices applied for blocked visitor, no metrics tracked")}),this.updatePriceTestHiddenInputs(i.id,"control",!1))}continue}const o=this.getReservationForTest(i.id);let n=null,a=!1;const c=e.find(d=>i.hypotheses.some(v=>d.id===v.id));if(o)n=this.getHypothesis(o.hypothesisId)??null,this.log("Using reserved hypothesis '%s' for test '%s'",o.hypothesisId,i.id);else if(c)n=c,this.log("Using existing hypothesis assignment for test '%s'",i.id);else if(s){const d=this.visitorActiveTestTypeWithReservations();d?(a=!0,this.log("Visitor already in test type '%s', treating as non-test for price test '%s'",d,i.id)):n=this.pickHypothesis(i)}else n=this.pickHypothesis(i);if(a&&s){const d=i.hypotheses.find(v=>v.isControl);d?.priceData&&(this.log("Applying control prices for non-test visitor on price test '%s' (Map-based)",i.id),this.applyPriceTestWithMapLookup(i.id,d,[d],()=>{this.log("Control prices applied for non-test visitor, no metrics tracked")}),this.updatePriceTestHiddenInputs(i.id,"control",!1));continue}if(!n){this.log("Failed to pick hypothesis for test");continue}this.sendDiagnosticTelemetry("assignment",i.id,{hypothesisId:n.id,isControl:n.isControl,testType:n.type});const h=i.bayesianRevision??4,u=n.type==="price",p=h>=5;if(u&&p){if(this.log(`Price test with Map-based lookup (v${h}): ${i.id}`),!n.priceData){this.log("No price data for hypothesis '%s', skipping",n.id);continue}const d=n.isControl?"control":"variant";this.log(`Setting up Map-based price test for ${d} (test: ${i.id})`),this.applyPriceTestWithMapLookup(i.id,n,i.hypotheses,v=>{const S=this.getReservationForTest(v);S&&!S.isRealized&&S.entryCriteriaKey?this.realizeReservationForCriteria(S.entryCriteriaKey):this.queueAddVisitorToTest(v,n),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()});continue}if(u&&!p){this.log(`Price test without viewport tracking (v${h}): ${i.id}`);const d=this.getDomSelectorsForHypothesis(n);if(d.length===0)continue;x(document,{testId:i.id,hypothesisId:n.id,selectors:d},v=>{this.queueAddVisitorToTest(v,n),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()});continue}if(!n.domSelectors||n.domSelectors.length===0){this.log("No selectors found, skipping hypothesis");continue}x(document,{testId:i.id,hypothesisId:n.id,selectors:n.domSelectors},d=>{this.queueAddVisitorToTest(d,n),this.saveState(),this.queuePageView(window.location.pathname),this.syncAllEvents()})}}considerRedirect(t){if(this.log("Considering redirect for hypothesis '%s'",t.id),t.isControl)return this.log("Skipping redirect for control"),!1;if(t.type==="basicScript"||t.type==="manualScript")return this.log("Skipping redirect for script test"),!1;const e=this.state.essential.visitorTests.find(o=>o.hypothesisId===t.id),i=new URL(window.location.toString()),r=new URLSearchParams(window.location.search).get("view");if(t.type==="theme"){if(!(t.themeId===themeId)){if(this.log("Theme id '%s' is not hypothesis theme ID '%s'",t.themeId,themeId),this.isAppProxyPath())return this.log("On App Proxy path, skipping theme redirect to avoid infinite loop"),!1;if(e&&e.themeId!==t.themeId&&(e.themeId===themeId||!this.isThemePreview()))this.log("On old theme, redirecting and updating local visitor"),e.themeId=t.themeId;else if(this.isThemePreview())return this.log("On non-test theme, skipping redirect"),!1;return this.log("Hiding page to redirect for theme test"),this.hidePage(),!0}return!1}else if(t.type!=="dom"&&t.type!=="price"&&t.affix!==template.suffix&&t.affix!==r||t.redirectPath&&!i.pathname.endsWith(t.redirectPath))return this.log("Hiding page to redirect for template test"),this.hidePage(),!0;return this.log("Not redirecting"),!1}redirect(t){if(this.log("Redirecting to hypothesis '%s'",t.id),t.isControl)return;const e=new URL(window.location.toString());if(e.searchParams.delete("view"),t.redirectPath){const i=RegExp("^(/w{2}-w{2})/").exec(e.pathname);if(i&&i.length>1){const s=i[1];e.pathname=`${s}${t.redirectPath}`}else e.pathname=t.redirectPath}else t.type==="theme"?(e.searchParams.set("_ab","0"),e.searchParams.set("_fd","0"),e.searchParams.set("_sc","1"),e.searchParams.set("preview_theme_id",t.themeId.toString())):t.type!=="urlRedirect"&&e.searchParams.set("view",t.affix);this.queueRedirect(e)}async refreshVisitor(t){if(t===null||!this.state.essential.isFirstLoad||!this.testConfigs.some(i=>i.visitorOption!=="all"))return;this.log("Refreshing visitor"),this.hidePage();const e=await this.getVisitor(t);e&&e.id&&this.updateLocalVisitor(e)}buildBaseVisitor(){return{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.device,country:null,...this.state.essential.initialState}}getInitialState(){const t=this.getUTMValue("utm_source")??"",e=this.getUTMValue("utm_medium")??"",i=this.getUTMValue("utm_campaign")??"",s=this.getUTMValue("utm_content")??"",r=window.document.referrer,o=this.device;return{createdAt:new Date,utmSource:t,utmMedium:e,utmCampaign:i,utmContent:s,referrer:r,device:o}}checkForThemePreview(){return this.log("Checking for theme preview"),window.location.hostname.endsWith(".shopifypreview.com")?(this.log("on shopify preview domain"),this.clearThemeBar(!0,!1,this.state),document.querySelector("#sl-preview-bar-hide")?.remove(),!1):this.isThemePreview()?this.state.essential.visitorTests.some(t=>t.isThemeTest&&t.hypothesisId!=null&&this.getHypothesis(t.hypothesisId)&&t.themeId===themeId)?(this.log("On active theme test, removing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):this.state.essential.visitorTests.some(t=>t.isThemeTest&&t.hypothesisId!=null&&!this.getHypothesis(t.hypothesisId)&&t.themeId===themeId)?(this.log("Visitor is on an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.state.essential.isFirstLoad?(this.log("No visitor found on theme preview, redirecting to main theme"),this.redirectToMainTheme(),!0):this.inactiveTestConfigs.some(t=>t.hypotheses.some(e=>e.themeId===themeId))?(this.log("Current theme is an inactive theme test, redirecting to main theme"),this.redirectToMainTheme(),!0):this.testConfigs.some(t=>t.hypotheses.some(e=>e.themeId===themeId))?(this.log("Falling back to clearing theme bar"),this.clearThemeBar(!1,!0,this.state),!1):(this.log("No tests on current theme, skipping script"),this.clearThemeBar(!0,!1,this.state),document.querySelector("#sl-preview-bar-hide")?.remove(),!0):(this.log("Not on theme preview"),this.clearThemeBar(!0,!1,this.state),!1)}redirectToMainTheme(){this.hidePage();const t=new URL(window.location.toString());t.searchParams.set("preview_theme_id",""),this.queueRedirect(t)}testsForUrl(t){const e=new URL(window.location.href),i=this.typeFromTemplate();return t.filter(s=>s.hypotheses.some(r=>r.type!=="dom"&&r.type!=="price"&&(r.isControl&&r.type===i&&r.affix===template.suffix||r.type==="theme"||r.isControl&&r.type==="urlRedirect"&&r.redirectPath&&e.pathname.endsWith(r.redirectPath)||r.type==="basicScript"))&&(s.ignoreTestViewParameterEnforcement||!e.searchParams.has("view")||s.hypotheses.map(r=>r.affix).includes(e.searchParams.get("view")??"")))}domTestsForUrl(t){const e=new URL(window.location.href);return t.filter(i=>i.hypotheses.some(s=>s.type!=="dom"&&s.type!=="price"?!1:s.type==="price"&&s.priceData&&s.priceData.v.length>0?!0:s.domSelectors&&s.domSelectors.some(r=>new RegExp(M(r)).test(e.toString()))))}async filterTestsByAudience(t,e,i){const s=[];let r=e.country;!r&&t.some(o=>o.requiresCountry&&!i.some(n=>n.testId===o.id))&&(this.log("Hiding page to check geoip"),this.hidePage(),r=await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/get-country`,signal:AbortSignal.timeout(this.getCountryTimeout)}).catch(o=>(this.log("Error getting country",o),null)));for(const o of t){if(this.log("Checking audience for test '%s'",o.id),this.state.essential.visitorTests.some(c=>c.testId===o.id&&c.hypothesisId==null)){console.log(`Skipping blocked test '${o.id}'`);continue}const n=this.visitorCreatedDuringTestActive(o.statusHistory);(i.some(c=>c.testId===o.id&&(o.device==="all"||o.device===e.device&&o.device===this.device))||this.isTargetAudience(o,e,n,r))&&(this.log("Visitor is in audience for test '%s'",o.id),s.push(o))}this.testsFilteredByAudience=s}isTargetAudience(t,e,i,s){const r=this.getChannel(e);return(t.device==="all"||t.device===e.device&&t.device===this.device)&&(t.visitorOption==="all"||t.visitorOption==="new"&&i||t.visitorOption==="returning"&&!i)&&(t.targetAudiences.length===0||t.targetAudiences.reduce((o,n)=>o||n.reduce((a,c)=>a&&c(e,i,r,s),!0),!1))}visitorCreatedDuringTestActive(t){let e="";for(const i of t){if(this.state.analytics.visitor!==null&&this.state.analytics.visitor.createdAt<i.createdAt||this.state.essential.initialState.createdAt<i.createdAt)break;e=i.status}return e==="active"}getDomTestsForCurrentUrl(){return this.domTestsForUrl(this.testsFilteredByAudience)}getCurrentVisitorHypothesis(t){return t.flatMap(e=>e.hypotheses).find(e=>e.type!=="dom"&&e.type!=="price"&&this.state.essential.visitorTests.some(i=>i.hypothesisId===e.id))}getVisitorDomHypothesis(t){return t.flatMap(e=>e.hypotheses).filter(e=>(e.type==="dom"||e.type==="price")&&this.state.essential.visitorTests.some(i=>i.hypothesisId===e.id))}getHypothesis(t){return this.testConfigs.filter(e=>e.hypotheses.some(i=>i.id===t)).map(e=>e.hypotheses.find(i=>i.id===t))[0]}getDomSelectorsForHypothesis(t){if(!t)return[];if(t.domSelectors&&t.domSelectors.length>0)return t.domSelectors;if(t.priceData){const e=`${this.priceSelectorsSessionKey}_${t.id}`;try{const s=sessionStorage.getItem(e);if(s){const r=JSON.parse(s);return t.domSelectors=r,this.log("Loaded %d price selectors from cache for hypothesis '%s'",r.length,t.id),r}}catch{}const i=ht(t.priceData);t.domSelectors=i;try{sessionStorage.setItem(e,JSON.stringify(i)),this.log("Generated and cached %d price selectors for hypothesis '%s'",i.length,t.id)}catch{this.log("Generated %d price selectors for hypothesis '%s' (cache unavailable)",i.length,t.id)}return i}return[]}hasThemeTest(t){return t.some(e=>e.hypotheses.some(i=>i.type==="theme"))}hasTestThatIsNotThemeTest(t){return t.some(e=>e.hypotheses.some(i=>i.type!=="theme"&&i.type!=="dom"&&i.type!=="price"))}hasThemeAndOtherTestTypes(t){return this.hasThemeTest(t)&&this.hasTestThatIsNotThemeTest(t)}testIsPaused(t){return t.status==="paused"||t.status==="incompatible"||t.status==="suspended"}visitorActiveTestType(){const t=this.state.essential.visitorTests.filter(e=>this.testConfigs.some(i=>i.hypotheses.some(s=>s.id==e.hypothesisId)));return t.length===0?null:t.some(e=>e.isThemeTest)?"theme":"templateOrUrlRedirect"}getReservationType(t){return t==="price"||this.isTemplateTestType(t)?"deferred":"immediate"}isTemplateTestType(t){return["product","collection","landing","index","cart","search","blog","article","collectionList"].includes(t)}getEntryCriteriaKey(t){const e=t.hypotheses.find(i=>i.isControl);if(!e)return`unknown:${t.id}`;switch(e.type){case"theme":return"global:theme";case"basicScript":return"global:autoApi";case"price":return"global:price";case"manualScript":return`conditional:manualApi:${t.id}`;case"urlRedirect":return`conditional:url:${e.redirectPath||"unknown"}`;default:return`conditional:template:${e.type}`}}isGlobalEntryCriteria(t){return t.startsWith("global:")}groupTestsByEntryCriteria(t){const e=new Map;for(const i of t){const s=this.getEntryCriteriaKey(i),r=e.get(s)||[];r.push(i),e.set(s,r)}return e}doesCurrentPageMatchEntryCriteria(t){if(this.isGlobalEntryCriteria(t))return!0;if(t==="conditional:manualApi")return!1;if(t.startsWith("conditional:url:")){const e=t.replace("conditional:url:","");return window.location.pathname.endsWith(e)}if(t.startsWith("conditional:template:")){const e=t.replace("conditional:template:","");return this.typeFromTemplate()===e}return!1}hasActiveReservation(){const t=this.getActiveReservations();return Object.values(t).some(e=>!e.isRealized)}getActiveReservation(){const t=this.getActiveReservations();return Object.values(t).find(e=>!e.isRealized)??null}clearStaleReservations(){const t=this.state.temporary.testReservations;if(!t)return;let e=!1;for(const[i,s]of Object.entries(t)){const r=this.testConfigs.find(n=>n.id===s.testId);if(!r){this.log("Test '%s' no longer in config, clearing reservation for criteria '%s'",s.testId,i),delete t[i],e=!0;continue}if(r.status!=="active"){this.log("Test '%s' status is '%s', clearing reservation for criteria '%s'",s.testId,r.status,i),delete t[i],e=!0;continue}this.testsFilteredByAudience.some(n=>n.id===s.testId)||(this.log("Visitor no longer passes audience for test '%s', clearing reservation for criteria '%s'",s.testId,i),delete t[i],e=!0)}e&&this.persistTemporaryState()}createReservations(t){if(this.state.temporary.testReservations||(this.state.temporary.testReservations={}),this.state.temporary.rolledEntryCriteria||(this.state.temporary.rolledEntryCriteria=[]),this.state.temporary.testCategory==="global"){this.createSingleReservation(t,"global");return}const i=t.filter(n=>this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(n))),s=t.filter(n=>!this.doesCurrentPageMatchEntryCriteria(this.getEntryCriteriaKey(n)));this.log("Conditional tests split - matching current page: %d, not matching: %d",i.length,s.length),i.length>0&&this.log("Tests matching current page (same pool): %o",i.map(n=>({id:n.id,title:n.title,criteria:this.getEntryCriteriaKey(n)})));const r=`conditional:current-page:${this.typeFromTemplate()}`;if(i.length>0&&!this.state.temporary.rolledEntryCriteria.includes(r)){this.createSingleReservation(i,r);for(const n of i){const a=this.getEntryCriteriaKey(n);this.state.temporary.rolledEntryCriteria.includes(a)||this.state.temporary.rolledEntryCriteria.push(a)}}const o=this.groupTestsByEntryCriteria(s);for(const[n,a]of o){if(this.state.temporary.rolledEntryCriteria.includes(n)){this.log("Already rolled for criteria '%s', skipping",n);continue}if(a.some(m=>this.state.essential.visitorTests.some(T=>T.testId===m.id))){this.log("Visitor already has VT for criteria '%s', skipping",n),this.state.temporary.rolledEntryCriteria.push(n);continue}const h=[...a].sort((m,T)=>m.id.localeCompare(T.id));this.log("Test dice roll for criteria '%s' - available tests: %o",n,h.map(m=>({id:m.id,title:m.title})));const u=Math.floor(Math.random()*h.length),p=h[u];this.log("Test dice roll: picked index %d of %d, selected test '%s' (%s)",u+1,a.length,p.id,p.title);const d=this.pickHypothesis(p);if(!d){this.log("No hypothesis picked for test '%s'",p.id);continue}this.sendDiagnosticTelemetry("assignment",p.id,{hypothesisId:d.id,isControl:d.isControl,testType:d.type});const v=this.getReservationType(d.type),S={testId:p.id,hypothesisId:d.id,testType:d.type,reservationType:v,isThemeTest:d.type==="theme",themeId:d.themeId,createdAt:new Date,isRealized:!1,entryCriteriaKey:n};this.state.temporary.testReservations[n]=S,this.state.temporary.rolledEntryCriteria.push(n),this.log("Created %s reservation for test '%s' (criteria: %s)",v,p.id,n);for(const m of a)m.id!==p.id&&this.markTestAsBlocked(m,n)}this.persistTemporaryState()}createSingleReservation(t,e){if(this.state.temporary.rolledEntryCriteria.includes(e)){this.log("Already rolled for pool '%s', skipping",e);return}if(t.some(u=>this.state.essential.visitorTests.some(p=>p.testId===u.id&&!p.isInvalid))){this.log("Visitor already has VT for pool '%s', skipping",e),this.state.temporary.rolledEntryCriteria.push(e);return}if(t.length===0){this.log("No tests in pool '%s'",e);return}const s=[...t].sort((u,p)=>u.id.localeCompare(p.id));this.log("Test dice roll for pool '%s' - available tests: %o",e,s.map(u=>({id:u.id,title:u.title,criteria:this.getEntryCriteriaKey(u)})));const r=Math.floor(Math.random()*s.length),o=s[r];this.log("Test dice roll: picked index %d of %d, selected test '%s' (%s)",r,t.length,o.id,o.title);const n=this.pickHypothesis(o);if(!n){this.log("No hypothesis picked for test '%s'",o.id);return}this.sendDiagnosticTelemetry("assignment",o.id,{hypothesisId:n.id,isControl:n.isControl,testType:n.type});const a=this.getReservationType(n.type),c=this.getEntryCriteriaKey(o),h={testId:o.id,hypothesisId:n.id,testType:n.type,reservationType:a,isThemeTest:n.type==="theme",themeId:n.themeId,createdAt:new Date,isRealized:!1,entryCriteriaKey:c};this.state.temporary.testReservations[c]=h,this.state.temporary.rolledEntryCriteria.push(e),this.log("Created %s reservation for test '%s' from pool '%s' (criteria: %s)",a,o.id,e,c);for(const u of t)u.id!==o.id&&this.markTestAsBlocked(u,`pool:${e}`);this.persistTemporaryState()}markTestAsBlocked(t,e){this.state.essential.visitorTests.some(i=>i.testId===t.id)||(this.log("Blocking visitor from test '%s' (reason: %s)",t.id,e),this.state.essential.visitorTests.push({createdAt:new Date,testId:t.id,hypothesisId:null,isThemeTest:t.hypotheses.some(i=>i.type==="theme"),shouldSendToGa:!1,isSaved:!0,isInvalid:!0,themeId:void 0}))}realizeReservationForCriteria(t){const e=this.state.temporary.testReservations?.[t];if(!e)return this.log("No reservation found for criteria '%s'",t),!1;if(e.isRealized)return this.log("Reservation already realized for criteria '%s'",t),!1;if(this.state.essential.visitorTests.some(s=>s.testId===e.testId&&!s.isInvalid))return this.log("Visitor already assigned to test '%s'",e.testId),!1;const i=this.getHypothesis(e.hypothesisId);return i?(e.isRealized=!0,this.persistTemporaryState(),this.queueAddVisitorToTest(e.testId,i),this.saveState(),this.log("Realized reservation for test '%s' (criteria: %s)",e.testId,t),!0):(this.log("Hypothesis '%s' not found",e.hypothesisId),!1)}getActiveReservations(){return this.state.temporary.testReservations??{}}getReservationForCurrentPage(){const t=this.getActiveReservations();for(const[e,i]of Object.entries(t)){if(i.isRealized)continue;const s=this.testConfigs.find(r=>r.id===i.testId);if(!(!s||s.status!=="active")&&this.doesCurrentPageMatchEntryCriteria(e))return i}return null}getReservationForTest(t){const e=this.getActiveReservations();return Object.values(e).find(i=>i.testId===t)??null}getReservationTestType(){const t=this.getActiveReservations(),e=Object.values(t);if(e.length===0)return null;for(const i of e)if(i.isThemeTest)return"theme";for(const i of e)if(i.testType==="price")return"price";return e.some(i=>!i.isRealized)?"templateOrUrlRedirect":null}hasPriceTests(t){return t.some(e=>e.hypotheses.some(i=>i.type==="price"))}_priceTestProductIds=null;getPriceTestProductIds(){if(this._priceTestProductIds)return this._priceTestProductIds;const t=new Set;for(const e of this.testConfigs)for(const i of e.hypotheses)if(i.type==="price"){for(const s of i.domSelectors||[]){const r=s.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);r?.[1]&&t.add(r[1])}if(i.priceData?.v)for(const[s]of i.priceData.v)t.add(s)}return this._priceTestProductIds=t,this.log("Built price test product ID cache with %d products",t.size),t}isProductInAnyPriceTest(t){return this.getPriceTestProductIds().has(t)}visitorActiveTestTypeWithReservations(){const t=this.getActiveReservations();for(const r of Object.values(t)){if(r.isThemeTest)return"theme";if(r.testType==="price")return"price"}if(Object.values(t).some(r=>!r.isRealized)){if(this.state.temporary.testCategory==="global")for(const o of Object.values(t)){if(o.testType==="theme")return"theme";if(o.testType==="price")return"price";if(o.testType==="basicScript")return"theme"}return"templateOrUrlRedirect"}const i=this.state.essential.visitorTests.filter(r=>!r.isInvalid&&this.testConfigs.some(o=>o.hypotheses.some(n=>n.id===r.hypothesisId)));return i.length===0?null:i.some(r=>this.getHypothesis(r.hypothesisId)?.type==="price")?"price":i.some(r=>r.isThemeTest)?"theme":"templateOrUrlRedirect"}applyControlForAudienceFilteredPriceTests(){const t=this.testConfigs.filter(s=>s.status==="active"&&s.hypotheses.some(r=>r.type==="price"));if(t.length===0)return;const e=this.testsFilteredByAudience.filter(s=>s.hypotheses.some(r=>r.type==="price")),i=t.filter(s=>!e.some(r=>r.id===s.id));if(i.length!==0){this.log("Found %d price tests filtered by audience, applying control selectors",i.length);for(const s of i){const r=s.hypotheses.find(c=>c.isControl),o=this.getDomSelectorsForHypothesis(r);if(o.length===0){this.log("No control selectors for audience-filtered price test '%s'",s.id);continue}const n=new URL(window.location.href);o.some(c=>{try{return new RegExp(M(c)).test(n.toString())}catch{return!1}})&&(this.log("Applying control selectors for audience-filtered price test '%s'",s.id),x(document,{testId:s.id,hypothesisId:r.id,selectors:o},()=>{this.log("Control selectors applied for audience-filtered visitor, no metrics tracked")}),this.updatePriceTestHiddenInputs(s.id,"control",!1))}}}pickHypothesis(t){let e=Math.random();const i=t.hypotheses.reduce((r,o)=>r+o.visitorCount,0);return t.hypotheses.sort((r,o)=>r.isControl?o.isControl?0:-1:o.isControl?1:0).reduce((r,o)=>{if(r!==null)return r;const a=t.hypotheses.reduce((c,h)=>c&&h.visitorCount>20,!0)?o.visitorCount/i-o.trafficPercentage:0;return e<=o.trafficPercentage-a?o:(e-=o.trafficPercentage-a,null)},null)}typeFromTemplate(){switch(template.type){case"list-collections":return"collectionList";case"page":return"landing";case"article":case"blog":case"cart":case"collection":case"index":case"product":case"search":return template.type;default:return null}}queueRedirect(t){this.saveState(),this.disableReferrerOverride||(this.log(`Saving temporary referrer override '${document.referrer}'`),this.state.temporary.originalReferrer=document.referrer,this.persistTemporaryState()),window.setTimeout(()=>window.location.assign(t),0),window.setTimeout(()=>{this.syncAllEvents()},2e3)}scheduleRetrySync(){this.clientIdRetryCount>=5||(this.clientIdRetryCount++,window.setTimeout(()=>{this.syncAllEvents()},500))}async syncAllEvents(){const t=async()=>{if(this.isSyncing){window.setTimeout(()=>{(async()=>await t())()},500);return}try{if(this.isSyncing=!0,this.syncGAEvents(),this.shopifyAnalyticsId||(this.shopifyAnalyticsId=this.getShopifyAnalyticsId()),!this.shopifyAnalyticsId){this.scheduleRetrySync();return}await this.syncEvents()}finally{this.isSyncing=!1}};await t()}async syncEvents(){if(!this.state.essential.consentApproved||!this.shopifyAnalyticsId||this.state.analytics.queue.length===0)return;const t=this.state.analytics.queue.length,e=this.state.analytics.queue.splice(0,t);this.log("Syncing %s events",t);try{const i={shop:this.shop,visitorDetails:{shopifyAnalyticsId:this.shopifyAnalyticsId,device:this.state.analytics.visitor?.device??this.device,country:this.state.analytics.visitor?.country??null,...this.state.essential.initialState},events:this.state.essential.visitorTests.filter(r=>!r.isInvalid&&!r.isSaved&&r.hypothesisId!=null).map(r=>new W(r.testId,r.hypothesisId,r.createdAt)).concat(e)};await this.sendEvents(i);for(const r of this.state.essential.visitorTests.filter(o=>!o.isInvalid&&!o.isSaved&&o.hypothesisId!=null))this.sendDiagnosticTelemetry("event-delivered",r.testId,{hypothesisId:r.hypothesisId,isControl:r.assignedTo==="control",testType:r.testType??"unknown"});const s=await this.getVisitor(this.shopifyAnalyticsId);s!==null&&this.updateLocalVisitor(s);for(const r of this.state.essential.visitorTests.filter(o=>!o.isInvalid&&!o.isSaved))r.isSaved=!0,r.savedAt=Date.now()}catch{this.state.analytics.queue.splice(0,0,...e)}finally{this.saveState()}}syncGAEvents(){if(!this.gaConfig.sendEvents){if(U)return;U=!0,this.log("UseGtag is false — skipping GA Events");return}if(this.isSyncingGA){this.log("Already syncing GA - skipping GA events");return}const t=this.state.essential.visitorTests.filter(e=>e.shouldSendToGa);t.length!==0&&(this.isSyncingGA=!0,this.log("Syncing %s GA Events",t.length),Promise.allSettled(t.map(e=>this.sendGAEvent(e))).then(()=>this.log("All gtag events sent")).finally(()=>this.isSyncingGA=!1))}sendGAEvent(t){return new Promise(e=>{this.log("Sending GA Event for test %s, hypothesis %s",t.testId,t.hypothesisId);const i=()=>{this.log("GA acknowledged event for hypothesis %s",t.hypothesisId),t.shouldSendToGa=!1,this.persistEssentialState(),e()},s={exp_variant_string:`SL-${t.testId}-${t.hypothesisId}`};this.shopliftDebug&&Object.assign(s,{debug_mode:!0});function r(o,n,a){window.dataLayer=window.dataLayer||[],window.dataLayer.push(arguments)}this.gaConfig.mode==="gtag"?r("event","experience_impression",{...s,event_callback:i}):(window.dataLayer=window.dataLayer||[],window.dataLayer.push({event:"experience_impression",...s,eventCallback:i}))})}updateLocalVisitor(t){let e;({visitorTests:e,...this.state.analytics.visitor}=t),this.log("updateLocalVisitor - server returned %d tests: %o",e.length,e.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isInvalid:s.isInvalid}))),this.log("updateLocalVisitor - local has %d tests: %o",this.state.essential.visitorTests.length,this.state.essential.visitorTests.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isSaved:s.isSaved,isInvalid:s.isInvalid})));const i=300*1e3;for(const s of this.state.essential.visitorTests.filter(r=>r.isSaved&&(!r.savedAt||Date.now()-r.savedAt>i)&&!e.some(o=>o.testId===r.testId)))this.log("updateLocalVisitor - marking LOCAL test as INVALID (isSaved && not in server): testId=%s, hypothesisId=%s",s.testId,s.hypothesisId),s.isInvalid=!0;for(const s of e){const r=this.state.essential.visitorTests.findIndex(n=>n.testId===s.testId);if(!(r!==-1))this.log("updateLocalVisitor - ADDING server test (not found locally): testId=%s, hypothesisId=%s",s.testId,s.hypothesisId),this.state.essential.visitorTests.push(s);else{const n=this.state.essential.visitorTests.at(r);this.log("updateLocalVisitor - REPLACING local test with server test: testId=%s, local hypothesisId=%s -> server hypothesisId=%s, local isInvalid=%s -> false",s.testId,n?.hypothesisId,s.hypothesisId,n?.isInvalid),s.isInvalid=!1,s.shouldSendToGa=n?.shouldSendToGa??!1,s.testType=n?.testType,s.assignedTo=n?.assignedTo,s.testTitle=n?.testTitle,this.state.essential.visitorTests.splice(r,1,s)}}this.log("updateLocalVisitor - FINAL local tests: %o",this.state.essential.visitorTests.map(s=>({testId:s.testId,hypothesisId:s.hypothesisId,isSaved:s.isSaved,isInvalid:s.isInvalid}))),this.state.analytics.visitor.storedAt=new Date}async getVisitor(t){try{return await this.makeJsonRequest({method:"get",url:`${this.eventHost}/api/v0/visitors/by-key/${this.shop}/${t}`})}catch{return null}}async sendEvents(t){await this.makeRequest({method:"post",url:`${this.eventHost}/api/v0/events`,data:JSON.stringify(t)})}sendDiagnosticTelemetry(t,e,i){if(!this.telemetryEnabled||!navigator.sendBeacon)return;const s=this.state.essential.consentApproved,r=JSON.stringify({shop:this.shop,testId:e,checkpoint:t,device:this.device,...s?{visitorId:this.shopifyAnalyticsId??"unknown"}:{},clientTimestamp:Date.now(),consentApproved:s,hasConsentInteraction:this.state.essential.hasConsentInteraction,...i});navigator.sendBeacon(`${this.eventHost}/api/v0/telemetry`,new Blob([r],{type:"text/plain"}))}getUTMValue(t){const i=decodeURIComponent(window.location.search.substring(1)).split("&");for(let s=0;s<i.length;s++){const r=i[s].split("=");if(r[0]===t)return r[1]||null}return null}hidePage(t){this.log("Hiding page"),this.cssHideClass&&!window.document.documentElement.classList.contains(this.cssHideClass)&&(window.document.documentElement.classList.add(this.cssHideClass),t||setTimeout(this.removeAsyncHide(this.cssHideClass),2e3))}showPage(){this.cssHideClass&&this.removeAsyncHide(this.cssHideClass)()}getDeviceType(){function t(){let i=!1;return(function(s){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(i=!0)})(navigator.userAgent||navigator.vendor),i}function e(){let i=!1;return(function(s){(/android|ipad|playbook|silk/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(i=!0)})(navigator.userAgent||navigator.vendor),i}return t()?"mobile":e()?"tablet":"desktop"}removeAsyncHide(t){return()=>{t&&window.document.documentElement.classList.remove(t)}}async getCartState(){try{let t=await this.makeJsonRequest({method:"get",url:`${window.location.origin}/cart.js`});return t===null||(t.note===null&&(t=await this.makeJsonRequest({method:"post",url:`${window.location.origin}/cart/update.js`,data:JSON.stringify({note:""})})),t==null)?null:{token:t.token,total_price:t.total_price,total_discount:t.total_discount,currency:t.currency,items_subtotal_price:t.items_subtotal_price,items:t.items.map(e=>({quantity:e.quantity,variant_id:e.variant_id,key:e.key,price:e.price,final_line_price:e.final_line_price,sku:e.sku,product_id:e.product_id}))}}catch(t){return this.log("Error sending cart info",t),null}}ensureCartAttributesForExistingPriceTests(t){try{if(this.log("Checking visitor assignments for active price tests"),t&&this.state.temporary.previewConfig){const e=this.state.temporary.previewConfig;this.log("Using preview config for merchant:",e.testId);let i="variant";if(e.variants&&e.variants.length>0){const s=e.variants.find(r=>r.id===e.currentVariant);s&&s.isControl&&(i="control")}this.log("Merchant preview - updating hidden inputs:",e.testId,i),this.updatePriceTestHiddenInputs(e.testId,i,!0);return}for(const e of this.state.essential.visitorTests){const i=this.testConfigs.find(o=>o.id===e.testId);if(!i){this.log("Test config not found:",e.testId);continue}const s=i.hypotheses.find(o=>o.id===e.hypothesisId);if(!s||s.type!=="price")continue;const r=s.isControl?"control":"variant";this.log("Updating hidden inputs for price test:",e.testId,r),this.updatePriceTestHiddenInputs(e.testId,r,t)}}catch(e){this.log("Error ensuring cart attributes for existing price tests:",e)}}updatePriceTestHiddenInputs(t,e,i){try{this.cleanupPriceTestObservers();const s=`${t}:${e}:${i?"t":"f"}`,r=y=>{const f=y.getAttribute("data-sl-pid");if(!f)return!0;if(i&&this.state.temporary.previewConfig){const g=this.state.temporary.previewConfig,b=e==="control"?"a":"b",C=g.variants.find(A=>A.label===b);if(!C)return!1;for(const A of C.domSelectors||[]){const E=A.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(E){const z=E[1];if(this.log(`Extracted ID from selector: ${z}, comparing to: ${f}`),z===f)return this.log("Product ID match found in preview config:",f,"variant:",C.label),!0}else this.log(`Could not extract ID from selector: ${A.cssSelector}`)}return this.log("No product ID match in preview config for:",f,"variant:",b),!1}const w=this.testConfigs.find(g=>g.id===t);if(!w)return this.log("Test config not found for testId:",t),!1;for(const g of w.hypotheses||[]){for(const b of g.domSelectors||[]){const C=b.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);if(C&&C[1]===f)return this.log("Product ID match found in domSelectors:",f,"for test:",t),!0}if(g.priceData?.v){for(const b of g.priceData.v)if(b[0]===f)return this.log("Product ID match found in priceData:",f,"for test:",t),!0}}return this.log("No product ID match for:",f,"in test:",t),!1},o=new Set;let n=!1,a=null;const c=(y,f)=>{if(document.querySelectorAll("[data-sl-attribute-p]").forEach(g=>{if(g instanceof Element&&g.nodeType===Node.ELEMENT_NODE&&g.isConnected&&document.contains(g))try{y.observe(g,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(b){this.log(`Failed to observe element (${f}):`,b)}}),document.body&&document.body.isConnected)try{y.observe(document.body,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0,attributes:!1})}catch(g){this.log(`Failed to observe document.body (${f}):`,g)}},h=(y,f,w,g)=>{const b=y.filter(C=>{const A=C.cssSelector.match(/data-sl-attribute-(?:p|cap)="(\d+)"/);return A&&A[1]===g});this.log(`Applying ${w} DOM selectors, total: ${y.length}, filtered: ${b.length}`),b.length>0&&x(document,{testId:t,hypothesisId:f,selectors:b})},u=(y,f)=>{this.log(`Applying DOM selector changes for product ID: ${y}`),f.disconnect(),n=!0;try{if(i&&this.state.temporary.previewConfig){const w=e==="control"?"a":"b",g=this.state.temporary.previewConfig.variants.find(b=>b.label===w);if(!g?.domSelectors){this.log(`No DOM selectors found for preview variant: ${w}`);return}h(g.domSelectors,g.id,"preview config",y)}else{const w=this.testConfigs.find(b=>b.id===t);if(!w){this.log(`No test config found for testId: ${t}`);return}const g=w.hypotheses.find(b=>e==="control"?b.isControl:!b.isControl);if(!g?.domSelectors){this.log(`No DOM selectors found for assignment: ${e}`);return}h(g.domSelectors,g.id,"live config",y)}}finally{a!==null&&clearTimeout(a),a=window.setTimeout(()=>{n=!1,a=null,c(f,"reconnection"),this.log("Re-established innerHTML observer after DOM changes")},50)}},p=new MutationObserver(y=>{if(!n)for(const f of y){if(f.type!=="childList"&&f.type!=="characterData")continue;let w=f.target;f.type==="characterData"&&(w=f.target.parentElement||f.target.parentNode);let g=w,b=g.getAttribute("data-sl-attribute-p");for(;!b&&g.parentElement;)g=g.parentElement,b=g.getAttribute("data-sl-attribute-p");if(!b)continue;const C=g.innerHTML||g.textContent||"";let A="";f.type==="characterData"&&f.oldValue!==null&&(A=f.oldValue),this.log(`innerHTML changed on element with data-sl-attribute-p="${b}"`),A&&this.log(`Previous content: "${A}"`),this.log(`Current content: "${C}"`),u(b,p)}});c(p,"initial setup"),o.add(p);const d=new MutationObserver(y=>{y.forEach(f=>{f.addedNodes.forEach(w=>{if(w.nodeType===Node.ELEMENT_NODE){const g=w;S(g);const b=g.matches('input[name="properties[_slpt]"]')?[g]:g.querySelectorAll('input[name="properties[_slpt]"]');b.length>0&&this.log(`MutationObserver found ${b.length} new hidden input(s)`),b.forEach(C=>{const A=C.getAttribute("data-sl-pid");if(this.log(`MutationObserver checking new input with data-sl-pid="${A}"`),r(C))C.value!==s&&(C.value=s,this.log("Updated newly added hidden input:",s)),m(C);else{const E=C.getAttribute("data-sl-pid");E&&this.isProductInAnyPriceTest(E)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",E):(C.remove(),this.log("Removed newly added non-matching hidden input for product ID:",E))}})}})})});o.add(d);const v=new MutationObserver(y=>{y.forEach(f=>{if(f.type==="attributes"&&f.attributeName==="data-sl-pid"){const w=f.target;if(this.log("AttributeObserver detected data-sl-pid attribute change on:",w.tagName),w.matches('input[name="properties[_slpt]"]')){const g=w,b=f.oldValue,C=g.getAttribute("data-sl-pid");this.log(`data-sl-pid changed from "${b}" to "${C}" - triggering payment placement updates`),r(g)?(g.value!==s&&(g.value=s,this.log("Updated hidden input after data-sl-pid change:",s)),C&&u(C,p),this.log("Re-running payment placement updates after variant change"),S(document.body)):C&&this.isProductInAnyPriceTest(C)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",C):(g.remove(),this.log("Removed non-matching hidden input after data-sl-pid change:",C))}}})});o.add(v);const S=y=>{y.tagName==="SHOPIFY-PAYMENT-TERMS"&&(this.log("MutationObserver found new shopify-payment-terms element"),this.updateShopifyPaymentTerms(t,e));const f=y.querySelectorAll("shopify-payment-terms");f.length>0&&(this.log(`MutationObserver found ${f.length} shopify-payment-terms in added node`),this.updateShopifyPaymentTerms(t,e)),y.tagName==="AFTERPAY-PLACEMENT"&&(this.log("MutationObserver found new afterpay-placement element"),this.updateAfterpayPlacements(t,e,"afterpay"));const w=y.querySelectorAll("afterpay-placement");w.length>0&&(this.log(`MutationObserver found ${w.length} afterpay-placement in added node`),this.updateAfterpayPlacements(t,e,"afterpay")),y.tagName==="SQUARE-PLACEMENT"&&(this.log("MutationObserver found new square-placement element"),this.updateAfterpayPlacements(t,e,"square"));const g=y.querySelectorAll("square-placement");g.length>0&&(this.log(`MutationObserver found ${g.length} square-placement in added node`),this.updateAfterpayPlacements(t,e,"square")),y.tagName==="KLARNA-PLACEMENT"&&(this.log("MutationObserver found new klarna-placement element"),this.updateKlarnaPlacements(t,e));const b=y.querySelectorAll("klarna-placement");b.length>0&&(this.log(`MutationObserver found ${b.length} klarna-placement in added node`),this.updateKlarnaPlacements(t,e))},m=y=>{v.observe(y,{attributes:!0,attributeFilter:["data-sl-pid"],attributeOldValue:!0,subtree:!1});const f=y.getAttribute("data-sl-pid");this.log(`Started AttributeObserver on specific input with data-sl-pid="${f}"`)},T=()=>{const y=document.querySelectorAll('input[name="properties[_slpt]"]');this.log(`Found ${y.length} existing hidden inputs to check`),y.forEach(f=>{const w=f.getAttribute("data-sl-pid");this.log(`Checking existing input with data-sl-pid="${w}"`),r(f)?(f.value=s,this.log("Updated existing hidden input:",s),w&&(this.log("Applying initial DOM selector changes for existing product"),u(w,p)),m(f)):w&&this.isProductInAnyPriceTest(w)?this.log("Preserving hidden input for product ID '%s' - belongs to a different price test",w):(f.remove(),this.log("Removed non-matching hidden input for product ID:",w))})},I=()=>{document.body?(d.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver on document.body"),T(),S(document.body)):document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{document.body&&(d.observe(document.body,{childList:!0,subtree:!0}),this.log("Started MutationObserver after DOMContentLoaded"),T(),S(document.body))}):(this.log("Set timeout on observer"),setTimeout(I,10))};I(),window.__shopliftPriceTestObservers=o,window.__shopliftPriceTestValue=s,this.log("Set up DOM observer for price test hidden inputs")}catch(s){this.log("Error updating price test hidden inputs:",s)}}updateKlarnaPlacements(t,e){this.updatePlacementElements(t,e,"klarna-placement",(i,s)=>{i.setAttribute("data-purchase-amount",s.toString())})}cleanupPriceTestObservers(){const t=window.__shopliftPriceTestObservers;t&&(t.forEach(e=>{e.disconnect()}),t.clear(),this.log("Cleaned up existing price test observers")),delete window.__shopliftPriceTestObservers,delete window.__shopliftPriceTestValue}updateAfterpayPlacements(t,e,i="afterpay"){const s=i==="square"?"square-placement":"afterpay-placement";if(document.querySelectorAll(s).length===0){this.log(`No ${s} elements found on page - early return`);return}this.updatePlacementElements(t,e,s,(o,n)=>{if(i==="afterpay"){const a=(n/100).toFixed(2);o.setAttribute("data-amount",a)}else o.setAttribute("data-amount",n.toString())}),this.log("updateAfterpayPlacements completed")}updatePlacementElements(t,e,i,s){const r=document.querySelectorAll(i);if(r.length===0){this.log(`No ${i} elements found - early return`);return}let o;if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const a=e==="control"?"a":"b",c=this.state.temporary.previewConfig.variants.find(h=>h.label===a);if(!c?.domSelectors){this.log(`No variant found for label ${a} in preview config for ${i}`);return}o=c.domSelectors,this.log(`Using preview config for ${i} in merchant mode, variant: ${a}`)}else{const a=this.testConfigs.find(h=>h.id===t);if(!a){this.log(`No testConfig found for id: ${t} - early return`);return}const c=a.hypotheses.find(h=>e==="control"?h.isControl:!h.isControl);if(!c?.domSelectors){this.log(`No hypothesis or domSelectors found for assignment: ${e} - early return`);return}o=c.domSelectors}const n=new RegExp(`${this.DATA_SL_ATTRIBUTE_P}=["'](\\d+)["']`);r.forEach(a=>{let c=null;const h=a.parentElement;if(h&&(c=h.querySelector('input[name="properties[_slpt]"]')),c||(c=a.querySelector('input[name="properties[_slpt]"]')),!c){this.log(`No hidden input found for ${i} element`);return}const u=c.getAttribute("data-sl-pid");if(!u){this.log("Hidden input has no data-sl-pid attribute - skipping");return}const p=o.find(m=>{const T=m.cssSelector.match(n);return T&&T[1]===u});if(!p){this.log(`No matching selector found for productId: ${u} - skipping element`);return}const d=p.actions.find(m=>m.scope==="price");if(!d?.value){this.log("No price action or value found - skipping element");return}const v=parseFloat(d.value.replace(/[^0-9.]/g,""));if(Number.isNaN(v)){this.log(`Invalid price "${d.value}" for product ${u} - skipping`);return}const S=Math.round(v*100);s(a,S)}),this.log(`updatePlacementElements completed for ${i}`)}updateShopifyPaymentTerms(t,e){const i=document.querySelectorAll("shopify-payment-terms");if(i.length===0)return;this.log("Store using shopify payments");let s;if(this.state.temporary.isMerchant&&this.state.temporary.previewConfig){const o=e==="control"?"a":"b",n=this.state.temporary.previewConfig.variants.find(a=>a.label===o);if(!n||!n.domSelectors){this.log(`No variant found for label ${o} in preview config`);return}s=n.domSelectors,this.log(`Using preview config for shopify-payment-terms in merchant mode, variant: ${o}`)}else{const o=this.testConfigs.find(a=>a.id===t);if(!o)return;const n=o.hypotheses.find(a=>e==="control"?a.isControl===!0:a.isControl===!1);if(!n||!n.domSelectors)return;s=n.domSelectors}const r=new RegExp(`${this.DATA_SL_ATTRIBUTE_P}=["'](\\d+)["']`);i.forEach(o=>{const n=o.getAttribute("variant-id");if(!n)return;const a=s.find(c=>{const h=c.cssSelector.match(r);return h&&h[1]===n});if(a){const c=a.actions.find(h=>h.scope==="price");if(c&&c.value){const h=o.getAttribute("shopify-meta");if(h)try{const u=JSON.parse(h);if(u.variants&&Array.isArray(u.variants)){const p=u.variants.find(d=>d.id?.toString()===n);if(p){p.full_price=c.value;const d=parseFloat(c.value.replace(/[^0-9.]/g,""));if(p.number_of_payment_terms&&p.number_of_payment_terms>1){const v=d/p.number_of_payment_terms;p.price_per_term=`$${v.toFixed(2)}`}o.setAttribute("shopify-meta",JSON.stringify(u))}}}catch(u){this.log("Error parsing/updating shoplift-meta:",u)}}}})}async makeJsonRequest(t){const e=await this.makeRequest(t);return e===null?null:JSON.parse(await e.text(),_)}async makeRequest(t){const{url:e,method:i,headers:s,data:r,signal:o}=t,n=new Headers;if(s)for(const c in s)n.append(c,s[c]);(!s||!s.Accept)&&n.append("Accept","application/json"),(!s||!s["Content-Type"])&&n.append("Content-Type","application/json"),(this.eventHost.includes("ngrok.io")||this.eventHost.includes("ngrok-free.app"))&&n.append("ngrok-skip-browser-warning","1234");const a=await this.fetch(e,{method:i,headers:n,body:r,signal:o});if(!a.ok){if(a.status===204)return null;if(a.status===422){const c=await a.json();if(typeof c<"u"&&c.isBot)throw new D}throw new Error(`Error sending shoplift request ${a.status}`)}return a}queueAddVisitorToTest(t,e){if(this.state.essential.visitorTests.some(s=>s.testId===t))return;const i=this.testConfigs.find(s=>s.id===t);if(this.state.essential.visitorTests.push({createdAt:new Date,testId:t,hypothesisId:e.id,isThemeTest:e.type==="theme",themeId:e.themeId,isSaved:!1,isInvalid:!1,shouldSendToGa:!0,testType:e.type,assignedTo:e.isControl?"control":"variant",testTitle:i?.title}),e.type==="price"){const s=e.isControl?"control":"variant";this.log("Price test assignment detected, updating cart attributes:",t,s),this.updatePriceTestHiddenInputs(t,s,!1)}}queueCartUpdate(t){this.queueEvent(new Y(t))}queuePageView(t){this.queueEvent(new J(t))}queueEvent(t){!this.state.essential.consentApproved&&this.state.essential.hasConsentInteraction||this.state.analytics.queue.length>10||this.state.analytics.queue.push(t)}legacyGetLocalStorageVisitor(){const t=this.localStorageGet(this.legacySessionKey);if(t)try{return JSON.parse(t,_)}catch{}return null}pruneStaleVisitorTests(){this.state.essential.visitorTests=this.state.essential.visitorTests.filter(t=>this.testConfigs.some(e=>e.id==t.testId)||this.inactiveTestConfigs.filter(e=>this.testIsPaused(e)).some(e=>e.id===t.testId))}pruneStateAndSave(){this.pruneStaleVisitorTests(),this.saveState()}saveState(){this.persistEssentialState(),this.persistAnalyticsState()}loadState(){const t=this.loadAnalyticsState(),e={analytics:t,essential:this.loadEssentialState(t),temporary:this.loadTemporaryState()},i=this.legacyGetLocalStorageVisitor(),s=this.legacyGetCookieVisitor(),r=[i,s].filter(o=>o!==null).sort((o,n)=>+n.storedAt-+o.storedAt)[0];return e.analytics.visitor===null&&r&&({visitorTests:e.essential.visitorTests,...e.analytics.visitor}=r,e.essential.isFirstLoad=!1,e.essential.initialState={createdAt:r.createdAt,referrer:r.referrer,utmCampaign:r.utmCampaign,utmContent:r.utmContent,utmMedium:r.utmMedium,utmSource:r.utmSource,device:r.device},this.deleteCookie("SHOPLIFT"),this.deleteLocalStorage(this.legacySessionKey)),!e.essential.consentApproved&&e.essential.hasConsentInteraction&&this.deleteLocalStorage(this.analyticsSessionKey),e}loadEssentialState(t){const e=this.loadLocalStorage(this.essentialSessionKey),i=this.loadCookie(this.essentialSessionKey),s=this.getInitialState();t.visitor?.device&&(s.device=t.visitor.device);const r={timestamp:new Date,consentApproved:!1,hasConsentInteraction:!1,debugMode:!1,initialState:s,visitorTests:[],isFirstLoad:!0},o=[e,i].filter(n=>n!==null).sort((n,a)=>+a.timestamp-+n.timestamp)[0]??r;return o.initialState||(t.visitor!==null?o.initialState=t.visitor:(o.initialState=s,o.initialState.createdAt=o.timestamp)),o}loadAnalyticsState(){const t=this.loadLocalStorage(this.analyticsSessionKey),e=this.loadCookie(this.analyticsSessionKey),i={timestamp:new Date,visitor:null,queue:[]},s=[t,e].filter(r=>r!==null).sort((r,o)=>+o.timestamp-+r.timestamp)[0]??i;return s.queue.length===0&&t&&t.queue.length>1&&(s.queue=t.queue),s}loadTemporaryState(){const t=this.sessionStorageGet(this.temporarySessionKey),e=t?JSON.parse(t,_):null,i=this.loadCookie(this.temporarySessionKey);return e??i??{isMerchant:!1,timestamp:new Date}}persistEssentialState(){this.log("Persisting essential state"),this.state.essential.isFirstLoad=!1,this.state.essential.timestamp=new Date,this.persistLocalStorageState(this.essentialSessionKey,this.state.essential),this.persistCookieState(this.essentialSessionKey,this.state.essential)}persistAnalyticsState(){this.log("Persisting analytics state"),this.state.essential.consentApproved&&(this.state.analytics.timestamp=new Date,this.persistLocalStorageState(this.analyticsSessionKey,this.state.analytics),this.persistCookieState(this.analyticsSessionKey,{...this.state.analytics,queue:[]}))}persistTemporaryState(){this.log("Setting temporary session state"),this.state.temporary.timestamp=new Date,this.sessionStorageSet(this.temporarySessionKey,JSON.stringify(this.state.temporary)),this.persistCookieState(this.temporarySessionKey,this.state.temporary,!0)}loadLocalStorage(t){const e=this.localStorageGet(t);if(e===null)return null;try{return JSON.parse(e,_)}catch{return null}}loadCookie(t){const e=this.getCookie(t);if(e===null)return null;try{return JSON.parse(e,_)}catch{return null}}persistLocalStorageState(t,e){this.localStorageSet(t,JSON.stringify(e))}persistCookieState(t,e,i=!1){const s=JSON.stringify(e),r=i?"":`expires=${new Date(new Date().getTime()+864e5*365).toUTCString()};`;document.cookie=`${t}=${s};domain=.${window.location.hostname};path=/;SameSite=Strict;${r}`}deleteCookie(t){const e=new Date(0).toUTCString();document.cookie=`${t}=;domain=.${window.location.hostname};path=/;expires=${e};`}deleteLocalStorage(t){window.localStorage.removeItem(t)}getChannel(t){return[{"name":"cross-network","test":(v) => new RegExp(".*cross-network.*", "i").test(v.utmCampaign)},{"name":"direct","test":(v) => v.utmSource === "" && v.utmMedium === ""},{"name":"paid-shopping","test":(v) => (new RegExp("^(?:Google|IGShopping|aax-us-east\.amazon-adsystem\.com|aax\.amazon-adsystem\.com|alibaba|alibaba\.com|amazon|amazon\.co\.uk|amazon\.com|apps\.shopify\.com|checkout\.shopify\.com|checkout\.stripe\.com|cr\.shopping\.naver\.com|cr2\.shopping\.naver\.com|ebay|ebay\.co\.uk|ebay\.com|ebay\.com\.au|ebay\.de|etsy|etsy\.com|m\.alibaba\.com|m\.shopping\.naver\.com|mercadolibre|mercadolibre\.com|mercadolibre\.com\.ar|mercadolibre\.com\.mx|message\.alibaba\.com|msearch\.shopping\.naver\.com|nl\.shopping\.net|no\.shopping\.net|offer\.alibaba\.com|one\.walmart\.com|order\.shopping\.yahoo\.co\.jp|partners\.shopify\.com|s3\.amazonaws\.com|se\.shopping\.net|shop\.app|shopify|shopify\.com|shopping\.naver\.com|shopping\.yahoo\.co\.jp|shopping\.yahoo\.com|shopzilla|shopzilla\.com|simplycodes\.com|store\.shopping\.yahoo\.co\.jp|stripe|stripe\.com|uk\.shopping\.net|walmart|walmart\.com)$", "i").test(v.utmSource) || new RegExp("^(.*(([^a-df-z]|^)shop|shopping).*)$", "i").test(v.utmCampaign)) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-search","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|yandex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-social","test":(v) => new RegExp("^(?:43things|43things\.com|51\.com|5ch\.net|Hatena|ImageShack|academia\.edu|activerain|activerain\.com|activeworlds|activeworlds\.com|addthis|addthis\.com|airg\.ca|allnurses\.com|allrecipes\.com|alumniclass|alumniclass\.com|ameba\.jp|ameblo\.jp|americantowns|americantowns\.com|amp\.reddit\.com|ancestry\.com|anobii|anobii\.com|answerbag|answerbag\.com|answers\.yahoo\.com|aolanswers|aolanswers\.com|apps\.facebook\.com|ar\.pinterest\.com|artstation\.com|askubuntu|askubuntu\.com|asmallworld\.com|athlinks|athlinks\.com|away\.vk\.com|awe\.sm|b\.hatena\.ne\.jp|baby-gaga|baby-gaga\.com|babyblog\.ru|badoo|badoo\.com|bebo|bebo\.com|beforeitsnews|beforeitsnews\.com|bharatstudent|bharatstudent\.com|biip\.no|biswap\.org|bit\.ly|blackcareernetwork\.com|blackplanet|blackplanet\.com|blip\.fm|blog\.com|blog\.feedspot\.com|blog\.goo\.ne\.jp|blog\.naver\.com|blog\.yahoo\.co\.jp|blogg\.no|bloggang\.com|blogger|blogger\.com|blogher|blogher\.com|bloglines|bloglines\.com|blogs\.com|blogsome|blogsome\.com|blogspot|blogspot\.com|blogster|blogster\.com|blurtit|blurtit\.com|bookmarks\.yahoo\.co\.jp|bookmarks\.yahoo\.com|br\.pinterest\.com|brightkite|brightkite\.com|brizzly|brizzly\.com|business\.facebook\.com|buzzfeed|buzzfeed\.com|buzznet|buzznet\.com|cafe\.naver\.com|cafemom|cafemom\.com|camospace|camospace\.com|canalblog\.com|care\.com|care2|care2\.com|caringbridge\.org|catster|catster\.com|cbnt\.io|cellufun|cellufun\.com|centerblog\.net|chat\.zalo\.me|chegg\.com|chicagonow|chicagonow\.com|chiebukuro\.yahoo\.co\.jp|classmates|classmates\.com|classquest|classquest\.com|co\.pinterest\.com|cocolog-nifty|cocolog-nifty\.com|copainsdavant\.linternaute\.com|couchsurfing\.org|cozycot|cozycot\.com|cross\.tv|crunchyroll|crunchyroll\.com|cyworld|cyworld\.com|cz\.pinterest\.com|d\.hatena\.ne\.jp|dailystrength\.org|deluxe\.com|deviantart|deviantart\.com|dianping|dianping\.com|digg|digg\.com|diigo|diigo\.com|discover\.hubpages\.com|disqus|disqus\.com|dogster|dogster\.com|dol2day|dol2day\.com|doostang|doostang\.com|dopplr|dopplr\.com|douban|douban\.com|draft\.blogger\.com|draugiem\.lv|drugs-forum|drugs-forum\.com|dzone|dzone\.com|edublogs\.org|elftown|elftown\.com|epicurious\.com|everforo\.com|exblog\.jp|extole|extole\.com|facebook|facebook\.com|faceparty|faceparty\.com|fandom\.com|fanpop|fanpop\.com|fark|fark\.com|fb|fb\.me|fc2|fc2\.com|feedspot|feministing|feministing\.com|filmaffinity|filmaffinity\.com|flickr|flickr\.com|flipboard|flipboard\.com|folkdirect|folkdirect\.com|foodservice|foodservice\.com|forums\.androidcentral\.com|forums\.crackberry\.com|forums\.imore\.com|forums\.nexopia\.com|forums\.webosnation\.com|forums\.wpcentral\.com|fotki|fotki\.com|fotolog|fotolog\.com|foursquare|foursquare\.com|free\.facebook\.com|friendfeed|friendfeed\.com|fruehstueckstreff\.org|fubar|fubar\.com|gaiaonline|gaiaonline\.com|gamerdna|gamerdna\.com|gather\.com|geni\.com|getpocket\.com|glassboard|glassboard\.com|glassdoor|glassdoor\.com|godtube|godtube\.com|goldenline\.pl|goldstar|goldstar\.com|goo\.gl|gooblog|goodreads|goodreads\.com|google\+|googlegroups\.com|googleplus|govloop|govloop\.com|gowalla|gowalla\.com|gree\.jp|groups\.google\.com|gulli\.com|gutefrage\.net|habbo|habbo\.com|hi5|hi5\.com|hootsuite|hootsuite\.com|houzz|houzz\.com|hoverspot|hoverspot\.com|hr\.com|hu\.pinterest\.com|hubculture|hubculture\.com|hubpages\.com|hyves\.net|hyves\.nl|ibibo|ibibo\.com|id\.pinterest\.com|identi\.ca|ig|imageshack\.com|imageshack\.us|imvu|imvu\.com|in\.pinterest\.com|insanejournal|insanejournal\.com|instagram|instagram\.com|instapaper|instapaper\.com|internations\.org|interpals\.net|intherooms|intherooms\.com|irc-galleria\.net|is\.gd|italki|italki\.com|jammerdirect|jammerdirect\.com|jappy\.com|jappy\.de|kaboodle\.com|kakao|kakao\.com|kakaocorp\.com|kaneva|kaneva\.com|kin\.naver\.com|l\.facebook\.com|l\.instagram\.com|l\.messenger\.com|last\.fm|librarything|librarything\.com|lifestream\.aol\.com|line|line\.me|linkedin|linkedin\.com|listal|listal\.com|listography|listography\.com|livedoor\.com|livedoorblog|livejournal|livejournal\.com|lm\.facebook\.com|lnkd\.in|m\.blog\.naver\.com|m\.cafe\.naver\.com|m\.facebook\.com|m\.kin\.naver\.com|m\.vk\.com|m\.yelp\.com|mbga\.jp|medium\.com|meetin\.org|meetup|meetup\.com|meinvz\.net|meneame\.net|menuism\.com|messages\.google\.com|messages\.yahoo\.co\.jp|messenger|messenger\.com|mix\.com|mixi\.jp|mobile\.facebook\.com|mocospace|mocospace\.com|mouthshut|mouthshut\.com|movabletype|movabletype\.com|mubi|mubi\.com|my\.opera\.com|myanimelist\.net|myheritage|myheritage\.com|mylife|mylife\.com|mymodernmet|mymodernmet\.com|myspace|myspace\.com|netvibes|netvibes\.com|news\.ycombinator\.com|newsshowcase|nexopia|ngopost\.org|niconico|nicovideo\.jp|nightlifelink|nightlifelink\.com|ning|ning\.com|nl\.pinterest\.com|odnoklassniki\.ru|odnoklassniki\.ua|okwave\.jp|old\.reddit\.com|oneworldgroup\.org|onstartups|onstartups\.com|opendiary|opendiary\.com|oshiete\.goo\.ne\.jp|out\.reddit\.com|over-blog\.com|overblog\.com|paper\.li|partyflock\.nl|photobucket|photobucket\.com|pinboard|pinboard\.in|pingsta|pingsta\.com|pinterest|pinterest\.at|pinterest\.ca|pinterest\.ch|pinterest\.cl|pinterest\.co\.kr|pinterest\.co\.uk|pinterest\.com|pinterest\.com\.au|pinterest\.com\.mx|pinterest\.de|pinterest\.es|pinterest\.fr|pinterest\.it|pinterest\.jp|pinterest\.nz|pinterest\.ph|pinterest\.pt|pinterest\.ru|pinterest\.se|pixiv\.net|pl\.pinterest\.com|playahead\.se|plurk|plurk\.com|plus\.google\.com|plus\.url\.google\.com|pocket\.co|posterous|posterous\.com|pro\.homeadvisor\.com|pulse\.yahoo\.com|qapacity|qapacity\.com|quechup|quechup\.com|quora|quora\.com|qzone\.qq\.com|ravelry|ravelry\.com|reddit|reddit\.com|redux|redux\.com|renren|renren\.com|researchgate\.net|reunion|reunion\.com|reverbnation|reverbnation\.com|rtl\.de|ryze|ryze\.com|salespider|salespider\.com|scoop\.it|screenrant|screenrant\.com|scribd|scribd\.com|scvngr|scvngr\.com|secondlife|secondlife\.com|serverfault|serverfault\.com|shareit|sharethis|sharethis\.com|shvoong\.com|sites\.google\.com|skype|skyrock|skyrock\.com|slashdot\.org|slideshare\.net|smartnews\.com|snapchat|snapchat\.com|social|sociallife\.com\.br|socialvibe|socialvibe\.com|spaces\.live\.com|spoke|spoke\.com|spruz|spruz\.com|ssense\.com|stackapps|stackapps\.com|stackexchange|stackexchange\.com|stackoverflow|stackoverflow\.com|stardoll\.com|stickam|stickam\.com|studivz\.net|suomi24\.fi|superuser|superuser\.com|sweeva|sweeva\.com|t\.co|t\.me|tagged|tagged\.com|taggedmail|taggedmail\.com|talkbiznow|talkbiznow\.com|taringa\.net|techmeme|techmeme\.com|tencent|tencent\.com|tiktok|tiktok\.com|tinyurl|tinyurl\.com|toolbox|toolbox\.com|touch\.facebook\.com|tr\.pinterest\.com|travellerspoint|travellerspoint\.com|tripadvisor|tripadvisor\.com|trombi|trombi\.com|trustpilot|tudou|tudou\.com|tuenti|tuenti\.com|tumblr|tumblr\.com|tweetdeck|tweetdeck\.com|twitter|twitter\.com|twoo\.com|typepad|typepad\.com|unblog\.fr|urbanspoon\.com|ushareit\.com|ushi\.cn|vampirefreaks|vampirefreaks\.com|vampirerave|vampirerave\.com|vg\.no|video\.ibm\.com|vk\.com|vkontakte\.ru|wakoopa|wakoopa\.com|wattpad|wattpad\.com|web\.facebook\.com|web\.skype\.com|webshots|webshots\.com|wechat|wechat\.com|weebly|weebly\.com|weibo|weibo\.com|wer-weiss-was\.de|weread|weread\.com|whatsapp|whatsapp\.com|wiki\.answers\.com|wikihow\.com|wikitravel\.org|woot\.com|wordpress|wordpress\.com|wordpress\.org|xanga|xanga\.com|xing|xing\.com|yahoo-mbga\.jp|yammer|yammer\.com|yelp|yelp\.co\.uk|yelp\.com|youroom\.in|za\.pinterest\.com|zalo|zoo\.gr|zooppa|zooppa\.com)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"paid-video","test":(v) => new RegExp("^(?:blog\.twitch\.tv|crackle|crackle\.com|curiositystream|curiositystream\.com|d\.tube|dailymotion|dailymotion\.com|dashboard\.twitch\.tv|disneyplus|disneyplus\.com|fast\.wistia\.net|help\.hulu\.com|help\.netflix\.com|hulu|hulu\.com|id\.twitch\.tv|iq\.com|iqiyi|iqiyi\.com|jobs\.netflix\.com|justin\.tv|m\.twitch\.tv|m\.youtube\.com|music\.youtube\.com|netflix|netflix\.com|player\.twitch\.tv|player\.vimeo\.com|ted|ted\.com|twitch|twitch\.tv|utreon|utreon\.com|veoh|veoh\.com|viadeo\.journaldunet\.com|vimeo|vimeo\.com|wistia|wistia\.com|youku|youku\.com|youtube|youtube\.com)$", "i").test(v.utmSource) && new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"display","test":(v) => new RegExp("^(?:display|banner|expandable|interstitial|cpm)$", "i").test(v.utmMedium)},{"name":"paid-other","test":(v) => new RegExp("^(.*cp.*|ppc|retargeting|paid.*)$", "i").test(v.utmMedium)},{"name":"organic-shopping","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|yandex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) || new RegExp("^(.*(([^a-df-z]|^)shop|shopping).*)$", "i").test(v.utmCampaign)},{"name":"organic-social","test":(v) => new RegExp("^(?:43things|43things\.com|51\.com|5ch\.net|Hatena|ImageShack|academia\.edu|activerain|activerain\.com|activeworlds|activeworlds\.com|addthis|addthis\.com|airg\.ca|allnurses\.com|allrecipes\.com|alumniclass|alumniclass\.com|ameba\.jp|ameblo\.jp|americantowns|americantowns\.com|amp\.reddit\.com|ancestry\.com|anobii|anobii\.com|answerbag|answerbag\.com|answers\.yahoo\.com|aolanswers|aolanswers\.com|apps\.facebook\.com|ar\.pinterest\.com|artstation\.com|askubuntu|askubuntu\.com|asmallworld\.com|athlinks|athlinks\.com|away\.vk\.com|awe\.sm|b\.hatena\.ne\.jp|baby-gaga|baby-gaga\.com|babyblog\.ru|badoo|badoo\.com|bebo|bebo\.com|beforeitsnews|beforeitsnews\.com|bharatstudent|bharatstudent\.com|biip\.no|biswap\.org|bit\.ly|blackcareernetwork\.com|blackplanet|blackplanet\.com|blip\.fm|blog\.com|blog\.feedspot\.com|blog\.goo\.ne\.jp|blog\.naver\.com|blog\.yahoo\.co\.jp|blogg\.no|bloggang\.com|blogger|blogger\.com|blogher|blogher\.com|bloglines|bloglines\.com|blogs\.com|blogsome|blogsome\.com|blogspot|blogspot\.com|blogster|blogster\.com|blurtit|blurtit\.com|bookmarks\.yahoo\.co\.jp|bookmarks\.yahoo\.com|br\.pinterest\.com|brightkite|brightkite\.com|brizzly|brizzly\.com|business\.facebook\.com|buzzfeed|buzzfeed\.com|buzznet|buzznet\.com|cafe\.naver\.com|cafemom|cafemom\.com|camospace|camospace\.com|canalblog\.com|care\.com|care2|care2\.com|caringbridge\.org|catster|catster\.com|cbnt\.io|cellufun|cellufun\.com|centerblog\.net|chat\.zalo\.me|chegg\.com|chicagonow|chicagonow\.com|chiebukuro\.yahoo\.co\.jp|classmates|classmates\.com|classquest|classquest\.com|co\.pinterest\.com|cocolog-nifty|cocolog-nifty\.com|copainsdavant\.linternaute\.com|couchsurfing\.org|cozycot|cozycot\.com|cross\.tv|crunchyroll|crunchyroll\.com|cyworld|cyworld\.com|cz\.pinterest\.com|d\.hatena\.ne\.jp|dailystrength\.org|deluxe\.com|deviantart|deviantart\.com|dianping|dianping\.com|digg|digg\.com|diigo|diigo\.com|discover\.hubpages\.com|disqus|disqus\.com|dogster|dogster\.com|dol2day|dol2day\.com|doostang|doostang\.com|dopplr|dopplr\.com|douban|douban\.com|draft\.blogger\.com|draugiem\.lv|drugs-forum|drugs-forum\.com|dzone|dzone\.com|edublogs\.org|elftown|elftown\.com|epicurious\.com|everforo\.com|exblog\.jp|extole|extole\.com|facebook|facebook\.com|faceparty|faceparty\.com|fandom\.com|fanpop|fanpop\.com|fark|fark\.com|fb|fb\.me|fc2|fc2\.com|feedspot|feministing|feministing\.com|filmaffinity|filmaffinity\.com|flickr|flickr\.com|flipboard|flipboard\.com|folkdirect|folkdirect\.com|foodservice|foodservice\.com|forums\.androidcentral\.com|forums\.crackberry\.com|forums\.imore\.com|forums\.nexopia\.com|forums\.webosnation\.com|forums\.wpcentral\.com|fotki|fotki\.com|fotolog|fotolog\.com|foursquare|foursquare\.com|free\.facebook\.com|friendfeed|friendfeed\.com|fruehstueckstreff\.org|fubar|fubar\.com|gaiaonline|gaiaonline\.com|gamerdna|gamerdna\.com|gather\.com|geni\.com|getpocket\.com|glassboard|glassboard\.com|glassdoor|glassdoor\.com|godtube|godtube\.com|goldenline\.pl|goldstar|goldstar\.com|goo\.gl|gooblog|goodreads|goodreads\.com|google\+|googlegroups\.com|googleplus|govloop|govloop\.com|gowalla|gowalla\.com|gree\.jp|groups\.google\.com|gulli\.com|gutefrage\.net|habbo|habbo\.com|hi5|hi5\.com|hootsuite|hootsuite\.com|houzz|houzz\.com|hoverspot|hoverspot\.com|hr\.com|hu\.pinterest\.com|hubculture|hubculture\.com|hubpages\.com|hyves\.net|hyves\.nl|ibibo|ibibo\.com|id\.pinterest\.com|identi\.ca|ig|imageshack\.com|imageshack\.us|imvu|imvu\.com|in\.pinterest\.com|insanejournal|insanejournal\.com|instagram|instagram\.com|instapaper|instapaper\.com|internations\.org|interpals\.net|intherooms|intherooms\.com|irc-galleria\.net|is\.gd|italki|italki\.com|jammerdirect|jammerdirect\.com|jappy\.com|jappy\.de|kaboodle\.com|kakao|kakao\.com|kakaocorp\.com|kaneva|kaneva\.com|kin\.naver\.com|l\.facebook\.com|l\.instagram\.com|l\.messenger\.com|last\.fm|librarything|librarything\.com|lifestream\.aol\.com|line|line\.me|linkedin|linkedin\.com|listal|listal\.com|listography|listography\.com|livedoor\.com|livedoorblog|livejournal|livejournal\.com|lm\.facebook\.com|lnkd\.in|m\.blog\.naver\.com|m\.cafe\.naver\.com|m\.facebook\.com|m\.kin\.naver\.com|m\.vk\.com|m\.yelp\.com|mbga\.jp|medium\.com|meetin\.org|meetup|meetup\.com|meinvz\.net|meneame\.net|menuism\.com|messages\.google\.com|messages\.yahoo\.co\.jp|messenger|messenger\.com|mix\.com|mixi\.jp|mobile\.facebook\.com|mocospace|mocospace\.com|mouthshut|mouthshut\.com|movabletype|movabletype\.com|mubi|mubi\.com|my\.opera\.com|myanimelist\.net|myheritage|myheritage\.com|mylife|mylife\.com|mymodernmet|mymodernmet\.com|myspace|myspace\.com|netvibes|netvibes\.com|news\.ycombinator\.com|newsshowcase|nexopia|ngopost\.org|niconico|nicovideo\.jp|nightlifelink|nightlifelink\.com|ning|ning\.com|nl\.pinterest\.com|odnoklassniki\.ru|odnoklassniki\.ua|okwave\.jp|old\.reddit\.com|oneworldgroup\.org|onstartups|onstartups\.com|opendiary|opendiary\.com|oshiete\.goo\.ne\.jp|out\.reddit\.com|over-blog\.com|overblog\.com|paper\.li|partyflock\.nl|photobucket|photobucket\.com|pinboard|pinboard\.in|pingsta|pingsta\.com|pinterest|pinterest\.at|pinterest\.ca|pinterest\.ch|pinterest\.cl|pinterest\.co\.kr|pinterest\.co\.uk|pinterest\.com|pinterest\.com\.au|pinterest\.com\.mx|pinterest\.de|pinterest\.es|pinterest\.fr|pinterest\.it|pinterest\.jp|pinterest\.nz|pinterest\.ph|pinterest\.pt|pinterest\.ru|pinterest\.se|pixiv\.net|pl\.pinterest\.com|playahead\.se|plurk|plurk\.com|plus\.google\.com|plus\.url\.google\.com|pocket\.co|posterous|posterous\.com|pro\.homeadvisor\.com|pulse\.yahoo\.com|qapacity|qapacity\.com|quechup|quechup\.com|quora|quora\.com|qzone\.qq\.com|ravelry|ravelry\.com|reddit|reddit\.com|redux|redux\.com|renren|renren\.com|researchgate\.net|reunion|reunion\.com|reverbnation|reverbnation\.com|rtl\.de|ryze|ryze\.com|salespider|salespider\.com|scoop\.it|screenrant|screenrant\.com|scribd|scribd\.com|scvngr|scvngr\.com|secondlife|secondlife\.com|serverfault|serverfault\.com|shareit|sharethis|sharethis\.com|shvoong\.com|sites\.google\.com|skype|skyrock|skyrock\.com|slashdot\.org|slideshare\.net|smartnews\.com|snapchat|snapchat\.com|social|sociallife\.com\.br|socialvibe|socialvibe\.com|spaces\.live\.com|spoke|spoke\.com|spruz|spruz\.com|ssense\.com|stackapps|stackapps\.com|stackexchange|stackexchange\.com|stackoverflow|stackoverflow\.com|stardoll\.com|stickam|stickam\.com|studivz\.net|suomi24\.fi|superuser|superuser\.com|sweeva|sweeva\.com|t\.co|t\.me|tagged|tagged\.com|taggedmail|taggedmail\.com|talkbiznow|talkbiznow\.com|taringa\.net|techmeme|techmeme\.com|tencent|tencent\.com|tiktok|tiktok\.com|tinyurl|tinyurl\.com|toolbox|toolbox\.com|touch\.facebook\.com|tr\.pinterest\.com|travellerspoint|travellerspoint\.com|tripadvisor|tripadvisor\.com|trombi|trombi\.com|trustpilot|tudou|tudou\.com|tuenti|tuenti\.com|tumblr|tumblr\.com|tweetdeck|tweetdeck\.com|twitter|twitter\.com|twoo\.com|typepad|typepad\.com|unblog\.fr|urbanspoon\.com|ushareit\.com|ushi\.cn|vampirefreaks|vampirefreaks\.com|vampirerave|vampirerave\.com|vg\.no|video\.ibm\.com|vk\.com|vkontakte\.ru|wakoopa|wakoopa\.com|wattpad|wattpad\.com|web\.facebook\.com|web\.skype\.com|webshots|webshots\.com|wechat|wechat\.com|weebly|weebly\.com|weibo|weibo\.com|wer-weiss-was\.de|weread|weread\.com|whatsapp|whatsapp\.com|wiki\.answers\.com|wikihow\.com|wikitravel\.org|woot\.com|wordpress|wordpress\.com|wordpress\.org|xanga|xanga\.com|xing|xing\.com|yahoo-mbga\.jp|yammer|yammer\.com|yelp|yelp\.co\.uk|yelp\.com|youroom\.in|za\.pinterest\.com|zalo|zoo\.gr|zooppa|zooppa\.com)$", "i").test(v.utmSource) || new RegExp("^(?:social|social-network|social-media|sm|social network|social media)$", "i").test(v.utmMedium)},{"name":"organic-video","test":(v) => new RegExp("^(?:blog\.twitch\.tv|crackle|crackle\.com|curiositystream|curiositystream\.com|d\.tube|dailymotion|dailymotion\.com|dashboard\.twitch\.tv|disneyplus|disneyplus\.com|fast\.wistia\.net|help\.hulu\.com|help\.netflix\.com|hulu|hulu\.com|id\.twitch\.tv|iq\.com|iqiyi|iqiyi\.com|jobs\.netflix\.com|justin\.tv|m\.twitch\.tv|m\.youtube\.com|music\.youtube\.com|netflix|netflix\.com|player\.twitch\.tv|player\.vimeo\.com|ted|ted\.com|twitch|twitch\.tv|utreon|utreon\.com|veoh|veoh\.com|viadeo\.journaldunet\.com|vimeo|vimeo\.com|wistia|wistia\.com|youku|youku\.com|youtube|youtube\.com)$", "i").test(v.utmSource) || new RegExp("^(.*video.*)$", "i").test(v.utmMedium)},{"name":"organic-search","test":(v) => new RegExp("^(?:360\.cn|alice|aol|ar\.search\.yahoo\.com|ask|at\.search\.yahoo\.com|au\.search\.yahoo\.com|auone|avg|babylon|baidu|biglobe|biglobe\.co\.jp|biglobe\.ne\.jp|bing|br\.search\.yahoo\.com|ca\.search\.yahoo\.com|centrum\.cz|ch\.search\.yahoo\.com|cl\.search\.yahoo\.com|cn\.bing\.com|cnn|co\.search\.yahoo\.com|comcast|conduit|daum|daum\.net|de\.search\.yahoo\.com|dk\.search\.yahoo\.com|dogpile|dogpile\.com|duckduckgo|ecosia\.org|email\.seznam\.cz|eniro|es\.search\.yahoo\.com|espanol\.search\.yahoo\.com|exalead\.com|excite\.com|fi\.search\.yahoo\.com|firmy\.cz|fr\.search\.yahoo\.com|globo|go\.mail\.ru|google|google-play|hk\.search\.yahoo\.com|id\.search\.yahoo\.com|in\.search\.yahoo\.com|incredimail|it\.search\.yahoo\.com|kvasir|lens\.google\.com|lite\.qwant\.com|lycos|m\.baidu\.com|m\.naver\.com|m\.search\.naver\.com|m\.sogou\.com|mail\.rambler\.ru|mail\.yandex\.ru|malaysia\.search\.yahoo\.com|msn|msn\.com|mx\.search\.yahoo\.com|najdi|naver|naver\.com|news\.google\.com|nl\.search\.yahoo\.com|no\.search\.yahoo\.com|ntp\.msn\.com|nz\.search\.yahoo\.com|onet|onet\.pl|pe\.search\.yahoo\.com|ph\.search\.yahoo\.com|pl\.search\.yahoo\.com|play\.google\.com|qwant|qwant\.com|rakuten|rakuten\.co\.jp|rambler|rambler\.ru|se\.search\.yahoo\.com|search-results|search\.aol\.co\.uk|search\.aol\.com|search\.google\.com|search\.smt\.docomo\.ne\.jp|search\.ukr\.net|secureurl\.ukr\.net|seznam|seznam\.cz|sg\.search\.yahoo\.com|so\.com|sogou|sogou\.com|sp-web\.search\.auone\.jp|startsiden|startsiden\.no|suche\.aol\.de|terra|th\.search\.yahoo\.com|tr\.search\.yahoo\.com|tut\.by|tw\.search\.yahoo\.com|uk\.search\.yahoo\.com|ukr|us\.search\.yahoo\.com|virgilio|vn\.search\.yahoo\.com|wap\.sogou\.com|webmaster\.yandex\.ru|websearch\.rakuten\.co\.jp|yahoo|yahoo\.co\.jp|yahoo\.com|yandex|yandex\.by|yandex\.com|yandex\.com\.tr|yandex\.fr|yandex\.kz|yandex\.ru|yandex\.ua|yandex\.uz|zen\.yandex\.ru)$", "i").test(v.utmSource) || v.utmMedium.toLowerCase() === "organic"},{"name":"referral","test":(v) => new RegExp("^(?:referral|app|link)$", "i").test(v.utmMedium)},{"name":"email","test":(v) => new RegExp("^(?:email|e-mail|e_mail|e mail)$", "i").test(v.utmMedium) || new RegExp("^(?:email|e-mail|e_mail|e mail)$", "i").test(v.utmSource)},{"name":"affiliate","test":(v) => v.utmMedium.toLowerCase() === "affiliate"},{"name":"audio","test":(v) => v.utmMedium.toLowerCase() === "audio"},{"name":"sms","test":(v) => v.utmSource.toLowerCase() === "sms" || v.utmMedium.toLowerCase() === "sms"},{"name":"mobile-push-notification","test":(v) => v.utmSource.toLowerCase() === "firebase" || new RegExp("(?:.*mobile.*|.*notification.*|push$)", "i").test(v.utmMedium)}].find(i=>i.test(t))?.name??"other"}getShopifyAnalyticsId(){const t=this.getCookie("_shopify_y");if(t)return t;try{const e=this.localStorageGet("Shoplift_ClientId");if(e)return e}catch{}return null}legacyGetCookieVisitor(){const t=this.getCookie("SHOPLIFT");return t===null?null:JSON.parse(t,_)}getCookie(t){const e=this.cookie.split("; ").filter(i=>i.split("=").at(0)===t).at(0);return e===void 0?null:e.split("=").slice(1).join("=")}monitorConsentChange(){document.addEventListener("visitorConsentCollected",t=>{(async()=>await this.onConsentChange(t.detail.analyticsAllowed,!0))()}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>this.loadShopifyConsentApiWithRetry()):this.loadShopifyConsentApiWithRetry()}loadShopifyConsentApiWithRetry(){let t=0;const e=()=>{this.loadShopifyConsentApi()||t++<10&&window.setTimeout(e,100)};e()}loadShopifyConsentApi(){if(window.Shopify){this.log("Loading Shopify features");const t=async()=>{if(!window.Shopify){this.log("Shopify object missing... suddenly?");return}if(window.Shopify.customerPrivacy===void 0){this.log("Shopify CustomerPrivacy api still missing, trying again in 1000ms"),e=window.setTimeout(()=>{(async()=>await t())()},1e3);return}const i=window.Shopify.customerPrivacy.getTrackingConsent();await this.onConsentChange(window.Shopify.customerPrivacy.analyticsProcessingAllowed(),i==="yes")};let e=window.setTimeout(()=>{(async()=>await t())()},5e3);return window.Shopify.loadFeatures([{name:"consent-tracking-api",version:"0.1"}],i=>{(async()=>{if(window.clearTimeout(e),i){this.log("Error loading consent tracking",i);return}await t()})()}),!0}return!1}async onConsentChange(t,e){try{if(this.log("Consent change detected",t,e),this.state.essential.consentApproved=t,this.state.essential.hasConsentInteraction=e,!this.state.essential.consentApproved){this.state.essential.hasConsentInteraction&&(this.state.analytics.queue.length=0),this.saveState();return}this.cookie=document.cookie,this.shopifyAnalyticsId=this.getShopifyAnalyticsId();for(const i of this.state.analytics.queue.filter(s=>s.type===1||s.type===2)){const s=i;s.shopifyAnalyticsId=this.shopifyAnalyticsId}this.saveState(),await this.syncAllEvents()}catch(i){this.log("Error syncing on consent change",i)}}isThemePreview(){return isThemePreview||themeRole!=="main"}isAppProxyPath(){const t=["/apps/","/tools/","/a/"],e=window.location.pathname;return t.some(i=>e.startsWith(i))}clearThemeBar(t,e,i){const s=structuredClone(i);this.log("Looking for theme bar"),this.waitForElement(null,"body").then(r=>this.waitForElement(r,"#preview-bar-iframe, #PBarNextFrameWrapper").then(o=>(this.log("Found theme bar"),e&&(this.log("Removing theme bar"),o.remove()),t?this.makeRequest({url:`${this.eventHost}/api/v0/logs`,method:"post",data:JSON.stringify({...this.debugState(),stateAtEvaluation:s},O)}):Promise.resolve(null)))).catch(r=>console.error(r))}waitForElement(t,e){return new Promise(i=>{const s=document.querySelector(e);if(s){i(s);return}const r=new MutationObserver(o=>{const n=document.querySelector(e);if(n){r.disconnect(),i(n);return}});r.observe(t??document.documentElement,{childList:!0})})}setDebug(t){this.state.essential.debugMode=t,this.saveState()}log(t,...e){let i=0;const s=t.replace(/%[sdoOfF]/g,r=>{if(i>=e.length)return r;const o=e[i++];return r==="%o"||r==="%O"?JSON.stringify(o):String(o)});this.logHistory.push(`[${new Date().toISOString()}][SL] ${s}`),!(!this.state.essential.debugMode&&!this.shopliftDebug)&&console.debug(`[SL] ${t}`,...e)}debugState(){return{state:this.state,storage:{essential:this.loadLocalStorage(this.essentialSessionKey),analytics:this.loadLocalStorage(this.analyticsSessionKey)},params:{shop:this.shop,host:this.host,eventHost:this.eventHost,cssHideClass:this.cssHideClass,testConfigs:this.testConfigs,inactiveTestConfigs:this.inactiveTestConfigs,sendPageView:this.sendPageView,isShopifyMerchantCookie:this.getCookie("is_shopify_merchant"),themeId,url:window.location.href,isThemePreview,themeRole,gaConfig:this.gaConfig},logHistory:this.logHistory}}createViewportObserver(t,e={}){const{threshold:i=this.VIEWPORT_TRACK_THRESHOLD,triggerOnce:s=!0}=e,r=new Set;return new IntersectionObserver(o=>{o.forEach(n=>{if(n.isIntersecting&&!r.has(n.target)){const a=n.target,c=a.getAttribute(this.DATA_SL_TEST_ID);c&&(t(c,a),s&&r.add(a))}})},{threshold:i})}applyChangesWithViewport(t,e,i,s){const r=e.selectorsForViewportTracking??e.selectors,o=n=>{if(this.state.essential.visitorTests.some(p=>p.testId===n)||this.activeViewportObservers.has(n))return;const a=[];if(r.forEach(p=>{t.querySelectorAll(p.cssSelector).forEach(v=>a.push(v))}),a.length===0)return;let c=!1;const h=()=>{c||(c=!0,i(n),u.disconnect(),this.activeViewportObservers.delete(n))},u=this.createViewportObserver(()=>{h()},{triggerOnce:!0,...s});this.activeViewportObservers.set(n,u),this.log(`Created viewport observer for test ${n}, observing ${a.length} elements`),a.forEach(p=>{p.setAttribute(this.DATA_SL_TEST_ID,String(n)),u.observe(p)}),setTimeout(()=>{c||a.forEach(p=>{const d=p.getBoundingClientRect(),v=s?.threshold??this.VIEWPORT_TRACK_THRESHOLD,S=Math.min(d.bottom,window.innerHeight)-Math.max(d.top,0),m=Math.min(d.right,window.innerWidth)-Math.max(d.left,0);d.top<window.innerHeight&&d.bottom>0&&d.left<window.innerWidth&&d.right>0&&S>0&&m>0&&S>=d.height*v&&(this.log(`Price element already visible in viewport for test ${n}:`,p),h())})},100)};e.selectors.length>0&&x(t,e,()=>{}),Z(t,{testId:e.testId,hypothesisId:e.hypothesisId,selectors:r},n=>{o(n)})}applyPriceTestWithMapLookup(t,e,i,s){if(!e.priceData){this.log("No price data for hypothesis '%s'",e.id);return}this.log("Hypothesis '%s' isControl=%s, priceData has %d variants",e.id,e.isControl,e.priceData.v.length);const r=e.priceData.v.slice(0,3);for(const[m,T,I]of r)this.log("  Sample priceData: variant=%s, price=%d, compareAt=%d",m,T,I);const o=ct(e.priceData),n=new Set;for(const m of i)if(m.priceData)for(const[T]of m.priceData.v)n.add(T);this.log("Price test Map lookup: %d products in hypothesis, %d total products to track",o.size,n.size);const a=e.priceData,c=new WeakSet;let h=!1;const u="[data-sl-attribute-p], [data-sl-attribute-cap], [data-sl-attribute-discount]",p=m=>{if(c.has(m))return;const T=m.getAttribute("data-sl-attribute-p"),I=m.getAttribute("data-sl-attribute-cap"),y=m.getAttribute("data-sl-attribute-discount"),f=T||I||y;if(!f||!n.has(f))return;c.add(m);const w=o.get(f);w&&(this.log("Applying price for product %s: %d cents (compare at: %d cents)",f,w.priceInCents,w.compareAtPriceInCents),dt(m,f,w,a),this.log("Applied price to element for product %s",f)),!h&&!this.state.essential.visitorTests.some(g=>g.testId===t)&&(m.setAttribute(this.DATA_SL_TEST_ID,String(t)),this.setupElementViewportTracking(m,t,()=>{h||(h=!0,s(t))}))},d=()=>{const m=document.querySelectorAll(u);this.log("Scanning for price elements, found: %d",m.length),m.forEach(p)},v=new MutationObserver(m=>{for(const T of m)T.type==="childList"&&T.addedNodes.forEach(I=>{if(I.nodeType===Node.ELEMENT_NODE){const y=I;(y.hasAttribute("data-sl-attribute-p")||y.hasAttribute("data-sl-attribute-cap")||y.hasAttribute("data-sl-attribute-discount"))&&p(y),y.querySelectorAll(u).forEach(p)}}),T.type==="attributes"&&T.target instanceof Element&&p(T.target)}),S=document.body||document.documentElement;v.observe(S,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-sl-attribute-p","data-sl-attribute-cap","data-sl-attribute-discount"]}),this.log("MutationObserver started for price elements"),d(),document.readyState==="loading"&&document.addEventListener("DOMContentLoaded",()=>{this.log("DOMContentLoaded - rescanning for price elements"),d()}),setTimeout(()=>{this.log("Delayed rescan for price elements"),d()},100),setTimeout(()=>{this.log("Final rescan for price elements"),d()},500)}setupElementViewportTracking(t,e,i){const s=this.VIEWPORT_TRACK_THRESHOLD,r=t.getBoundingClientRect(),o=Math.min(r.bottom,window.innerHeight)-Math.max(r.top,0),n=Math.min(r.right,window.innerWidth)-Math.max(r.left,0);if(r.top<window.innerHeight&&r.bottom>0&&r.left<window.innerWidth&&r.right>0&&o>0&&n>0&&o>=r.height*s){this.log("Price element already visible for test %s",e),i();return}const c=new IntersectionObserver(h=>{for(const u of h)if(u.isIntersecting&&u.intersectionRatio>=s){this.log("Price element entered viewport for test %s",e),c.disconnect(),i();break}},{threshold:s});c.observe(t)}debug(){const t=this.debugState();console.log(JSON.stringify(t,O,2))}}(async function(){window.shopliftInstance||(window.shopliftInstance=new pt("nbi-sems.myshopify.com","https://app.shoplift.ai","https://events.shoplift.ai",false,false,false,{"sendEvents":false,"mode":"gtag"},false,false,1000,[],[]),await window.shopliftInstance.init())})()})(); })("/", { suffix: "", type: "index" }, "main", 190790271345, false)</script>
<!-- End of Shoplift scripts -->

    <title>Online Continuing Legal Education (CLE) for Lawyers - NBI</title><script src="https://cmp.osano.com/nbiLELKyMgVu0/709102d1-d1c9-49d2-8480-c6f29ed0662b/osano.js"></script>
<script type='speculationrules'>
  {
    "prerender": [
      {
        "where": {
          "href_matches": "/*"
        },
        "eagerness": "moderate"
      }
    ]
  }
</script>
<meta charset='utf-8' data-svg-sprite-path='//nbi-sems.com/cdn/shop/t/347/assets/icons.svg?v=125041382580768648791772636480'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge'>
    <meta name='viewport' content='width=device-width,initial-scale=1'>
    <meta name='theme-color' content=''>
    <link rel='canonical' href='https://nbi-sems.com/'>
	
    

    <style>
      [cloak] {
        display: none !important;
      }
    </style><link rel='preconnect' href='https://cdn.shopify.com' crossorigin>
  <link
    href='https://9F1EFTW2FW-dsn.algolia.net'
    rel='preconnect'
    crossorigin
  ><link
        rel='icon'
        type='image/png'
        href='//nbi-sems.com/cdn/shop/files/nbi-favicon.png?crop=center&height=32&v=1756393666&width=32'
      >
<link
  rel='preload'
  href='//nbi-sems.com/cdn/shop/t/347/assets/Poppins-Light-get-licence.woff2?v=92620990510096469351772636480'
  as='font'
  type='font/woff2'
  crossorigin='anonymous'
>
<link
  rel='preload'
  href='//nbi-sems.com/cdn/shop/t/347/assets/Poppins-LightItalic-get-licence.woff2?v=153176908657296017581772636480'
  as='font'
  type='font/woff2'
  crossorigin='anonymous'
>
<link
  rel='preload'
  href='//nbi-sems.com/cdn/shop/t/347/assets/Poppins-Regular-get-licence.woff2?v=36635007855721191921772636480'
  as='font'
  type='font/woff2'
  crossorigin='anonymous'
>
<link
  rel='preload'
  href='//nbi-sems.com/cdn/shop/t/347/assets/Poppins-Italic-get-licence.woff2?v=97400587041497517491772636480'
  as='font'
  type='font/woff2'
  crossorigin='anonymous'
>
<link
  rel='preload'
  href='//nbi-sems.com/cdn/shop/t/347/assets/Poppins-Medium-get-licence.woff2?v=31341711846163145541772636480'
  as='font'
  type='font/woff2'
  crossorigin='anonymous'
>
<link
  rel='preload'
  href='//nbi-sems.com/cdn/shop/t/347/assets/Poppins-MediumItalic-get-licence.woff2?v=175462810319863838161772636480'
  as='font'
  type='font/woff2'
  crossorigin='anonymous'
>
<link
  rel='preload'
  href='//nbi-sems.com/cdn/shop/t/347/assets/Poppins-SemiBold-get-licence.woff2?v=34889148220121751201772636480'
  as='font'
  type='font/woff2'
  crossorigin='anonymous'
>
<link
  rel='preload'
  href='//nbi-sems.com/cdn/shop/t/347/assets/Poppins-SemiBoldItalic-get-licence.woff2?v=9996436155263148221772636480'
  as='font'
  type='font/woff2'
  crossorigin='anonymous'
>
<link
  rel='preload'
  href='//nbi-sems.com/cdn/shop/t/347/assets/Poppins-Bold-get-licence.woff2?v=90702032462431814811772636480'
  as='font'
  type='font/woff2'
  crossorigin='anonymous'
>
<link
  rel='preload'
  href='//nbi-sems.com/cdn/shop/t/347/assets/Poppins-BoldItalic-get-licence.woff2?v=84825915961992572641772636480'
  as='font'
  type='font/woff2'
  crossorigin='anonymous'
>

<style>
  @font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 300;
    font-display: swap;
    src: url('//nbi-sems.com/cdn/shop/t/347/assets/Poppins-Light-get-licence.woff2?v=92620990510096469351772636480') format('woff2');
  }

  @font-face {
    font-family: 'Poppins';
    font-style: italic;
    font-weight: 300;
    font-display: swap;
    src: url('//nbi-sems.com/cdn/shop/t/347/assets/Poppins-LightItalic-get-licence.woff2?v=153176908657296017581772636480') format('woff2');
  }

  @font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('//nbi-sems.com/cdn/shop/t/347/assets/Poppins-Regular-get-licence.woff2?v=36635007855721191921772636480') format('woff2');
  }

  @font-face {
    font-family: 'Poppins';
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url('//nbi-sems.com/cdn/shop/t/347/assets/Poppins-Italic-get-licence.woff2?v=97400587041497517491772636480') format('woff2');
  }

  @font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url('//nbi-sems.com/cdn/shop/t/347/assets/Poppins-Medium-get-licence.woff2?v=31341711846163145541772636480') format('woff2');
  }

  @font-face {
    font-family: 'Poppins';
    font-style: italic;
    font-weight: 500;
    font-display: swap;
    src: url('//nbi-sems.com/cdn/shop/t/347/assets/Poppins-MediumItalic-get-licence.woff2?v=175462810319863838161772636480') format('woff2');
  }

  @font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('//nbi-sems.com/cdn/shop/t/347/assets/Poppins-SemiBold-get-licence.woff2?v=34889148220121751201772636480') format('woff2');
  }

  @font-face {
    font-family: 'Poppins';
    font-style: italic;
    font-weight: 600;
    font-display: swap;
    src: url('//nbi-sems.com/cdn/shop/t/347/assets/Poppins-SemiBoldItalic-get-licence.woff2?v=9996436155263148221772636480') format('woff2');
  }

  @font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('//nbi-sems.com/cdn/shop/t/347/assets/Poppins-Bold-get-licence.woff2?v=90702032462431814811772636480') format('woff2');
  }

  @font-face {
    font-family: 'Poppins';
    font-style: italic;
    font-weight: 700;
    font-display: swap;
    src: url('//nbi-sems.com/cdn/shop/t/347/assets/Poppins-BoldItalic-get-licence.woff2?v=84825915961992572641772636480') format('woff2');
  }
</style>

      <meta name='description' content='Online Continuing Legal Education (CLE) Courses Attorneys Trust, NBI offers a diverse array of high quality accredited CLE courses, plus Live and OnDemand CLE resources.'>
    


<meta property='og:site_name' content='NBI'>
<meta property='og:url' content='https://nbi-sems.com/'>
<meta property='og:title' content='Online Continuing Legal Education (CLE) for Lawyers - NBI'>
<meta property='og:type' content='website'>
<meta property='og:description' content='Online Continuing Legal Education (CLE) Courses Attorneys Trust, NBI offers a diverse array of high quality accredited CLE courses, plus Live and OnDemand CLE resources.'><meta property='og:image' content='http://nbi-sems.com/cdn/shop/files/NBI_Social_Share_Default_backup.jpg?v=1762196555'>
  <meta property='og:image:secure_url' content='https://nbi-sems.com/cdn/shop/files/NBI_Social_Share_Default_backup.jpg?v=1762196555'>
  <meta property='og:image:width' content='1200'>
  <meta property='og:image:height' content='630'><meta name='twitter:site' content='@https://x.com/NBICLE'><meta name='twitter:card' content='summary_large_image'>
<meta name='twitter:title' content='Online Continuing Legal Education (CLE) for Lawyers - NBI'>
<meta name='twitter:description' content='Online Continuing Legal Education (CLE) Courses Attorneys Trust, NBI offers a diverse array of high quality accredited CLE courses, plus Live and OnDemand CLE resources.'>


<script type='application/ld+json'>
  {
    "@context": "http://schema.org",
    "@type": "Organization",
    "name": "NBI",
    
      "logo": "https:\/\/nbi-sems.com\/cdn\/shop\/files\/NBI_with_name_White_Logo.svg?v=1756322888\u0026width=500",
    
    "sameAs": [
      "https:\/\/x.com\/NBICLE",
      "https:\/\/www.facebook.com\/NBICLE",
      "",
      "",
      "",
      "",
      "",
      "",
      ""
    ],
    "url": "https:\/\/nbi-sems.com"
  }
</script>
  <script type='application/ld+json'>
    {
      "@context": "http://schema.org",
      "@type": "WebSite",
      "name": "NBI",
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https:\/\/nbi-sems.com\/search?q={search_term_string}",
        "query-input": "required name=search_term_string"
      },
      "url": "https:\/\/nbi-sems.com"
    }
  </script>
  <script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script><meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/69259985214/digital_wallets/dialog">
<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
<script id="shopify-features" type="application/json">{"accessToken":"c283a7c2076ec60fc3396172d8c6ceaa","betas":["rich-media-storefront-analytics"],"domain":"nbi-sems.com","predictiveSearch":true,"shopId":69259985214,"locale":"en"}</script>
<script>var Shopify = Shopify || {};
Shopify.shop = "nbi-sems.myshopify.com";
Shopify.locale = "en";
Shopify.currency = {"active":"USD","rate":"1.0"};
Shopify.country = "US";
Shopify.theme = {"name":"[RC] 2.7.0 - No 700","id":190790271345,"schema_name":"Domaine","schema_version":"2.7.0","theme_store_id":null,"role":"main"};
Shopify.theme.handle = "null";
Shopify.theme.style = {"id":null,"handle":null};
Shopify.cdnHost = "nbi-sems.com/cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "/";
Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";</script>
<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
<script id="shop-js-analytics" type="application/json">{"pageType":"index"}</script>
<script defer="defer" async type="module" src="//nbi-sems.com/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
<script type="module">
  await import("//nbi-sems.com/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");

  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});

</script>
<script>
  window.Shopify = window.Shopify || {};
  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
  window.Shopify.featureAssets['shop-js'] = {"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"avatar":["modules/v2/loader.avatar.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"]};
</script>
<script>(function() {
  var isLoaded = false;
  function asyncLoad() {
    if (isLoaded) return;
    isLoaded = true;
    var urls = ["https:\/\/static.rechargecdn.com\/assets\/js\/widget.min.js?shop=nbi-sems.myshopify.com","https:\/\/na.shgcdn3.com\/pixel-collector.js?shop=nbi-sems.myshopify.com"];
    for (var i = 0; i < urls.length; i++) {
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.async = true;
      s.src = urls[i];
      var x = document.getElementsByTagName('script')[0];
      x.parentNode.insertBefore(s, x);
    }
  };
  if(window.attachEvent) {
    window.attachEvent('onload', asyncLoad);
  } else {
    window.addEventListener('load', asyncLoad, false);
  }
})();</script>
<script id="__st">var __st={"a":69259985214,"offset":-18000,"reqid":"a2deb987-c25d-47e6-9700-e6c86546ce70-1773945845","pageurl":"nbi-sems.com\/","u":"8d560c8dc6a5","p":"home"};</script>
<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.2.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!1,!0)}();</script>
<script integrity="sha256-Rd0I1U3I5BUKM/ZklNQ9ssBhyhvFP+5roZEEsW2MGUw=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//nbi-sems.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-496de5fe.js" crossorigin="anonymous"></script>
<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://nbi-sems.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
</script>
<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
  function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
</script>
<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
</script>
<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://nbi-sems.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
<style id="shopify-accelerated-checkout-cart">
        #shopify-buyer-consent {
  margin-top: 1em;
  display: inline-block;
  width: 100%;
}

#shopify-buyer-consent.hidden {
  display: none;
}

#shopify-subscription-policy-button {
  background: none;
  border: none;
  padding: 0;
  text-decoration: underline;
  font-size: inherit;
  cursor: pointer;
}

#shopify-subscription-policy-button::before {
  box-shadow: none;
}

      </style>

<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
  





  <script type="text/javascript">
    
      window.__shgMoneyFormat = window.__shgMoneyFormat || {"USD":{"currency":"USD","currency_symbol":"$","currency_symbol_location":"left","decimal_places":2,"decimal_separator":".","thousands_separator":","}};
    
    window.__shgCurrentCurrencyCode = window.__shgCurrentCurrencyCode || {
      currency: "USD",
      currency_symbol: "$",
      decimal_separator: ".",
      thousands_separator: ",",
      decimal_places: 2,
      currency_symbol_location: "left"
    };
  </script>




    


  <link id="main-stylesheet" crossorigin="anonymous" href="//nbi-sems.com/cdn/shop/t/347/assets/index.DW-Xolew.min.css" rel="stylesheet" type="text/css" media="all" />





  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-global.cFhTYAjR.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/preload-helper.C1FmrZbK.min.js" crossorigin="anonymous">




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-app-provider.60v-Ntgb.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/aria-live-region-context.BZEtRCSs.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/cart-sections.WoVMkNAv.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/deferred-media.DLykk27G.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/modal-context.eEhUllgb.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/quickshop.CQYPJqsz.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/context-request-event.CcEA9XIP.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/state.Cmay8SOG.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/create-context.89xeped_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/main-header.BxFlVD6V.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/state.Cmay8SOG.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/query-all.D646pH-D.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/base.CShCMygk.min.js" crossorigin="anonymous">




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/algolia_hooks.iFkibV52.min.js" type="module" crossorigin="anonymous"></script>




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-icon.BpLvtnfP.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/task.BIuG9C6l.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/index.CKJCYK2x.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/unsafe-html.BXKrt2Ko.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/directive.C_Rw-dL6.min.js" crossorigin="anonymous">

<script>
    (function () {
      try {
        const p = (location.pathname || '').toLowerCase().replace(/\/+$/,'');
        if (p === '/account' || p.startsWith('/account/')) {
          const isLoggedIn = false;
          const home = '/';
          const accountUrl = 'https://account.nbi-sems.com/Account';

          if (p === '/account/logout') {
            location.replace(home);
            return;
          }

          if (isLoggedIn) {
            location.replace(accountUrl);
            return;
          }

          if (p === '/account' || p === '/account/login') {
            const loginBaseUrl = 'https://account.nbi-sems.com/Account/Login';
            if (loginBaseUrl) {
              const returnUrl = encodeURIComponent('https://account.nbi-sems.com/Account');
              location.replace(loginBaseUrl + '?returnUrl=' + returnUrl);
            } else {
              location.replace(home);
            }
            return;
          }

          location.replace(home);
        }
      } catch (e) {}
    })();
  </script>
<link href="//nbi-sems.com/cdn/shop/t/347/assets/icons.svg?v=125041382580768648791772636480" as="image" type="image/svg+xml" crossorigin="anonymous" rel="preload">
<script>
  document.documentElement.className = document.documentElement.className.replace('no-js', 'js')
</script>

<script>
  window.routes = {
    cart_add_url: '/cart/add',
    cart_change_url: '/cart/change',
    cart_update_url: '/cart/update',
    predictive_search_url: '/search/suggest',
  }

  window.cartStrings = {
    error: `There was an error while updating your cart. Please try again.`,
    quantityError: `You can only add {{ quantity }} of this item to your cart.`,
  }

  window.variantStrings = {
    addToCart: `Add to cart`,
    soldOut: `Sold out`,
    unavailable: `Unavailable`,
  }

  window.creditDetails = {
    daysLeftText: {
      one: `Day Left`,
      other: `Days Left`,
    },
  }
</script>

<script>
  window.__STOREFRONT_ACCESS_TOKEN__ = '03f73718f312692a2d2bd9087b1caf8b'
  window.__CART__ = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}
</script>

<script>
  ;(function bootstrapAlgoliaInsights() {
    if (window.__ALGOLIA_INSIGHTS_BOOTSTRAPPED__) return
    window.__ALGOLIA_INSIGHTS_BOOTSTRAPPED__ = true

    var INSIGHTS_SRC = 'https://cdn.jsdelivr.net/npm/search-insights@2'

    var initializeInsights = function () {
      if (!window.aa) return false
      var appId = window.algoliaShopify?.applicationID || window.algoliaShopify?.config?.applicationID
      var apiKey = window.algoliaShopify?.searchApiKey || window.algoliaShopify?.config?.searchApiKey
      if (!appId || !apiKey) return false
      if (window.__ALGOLIA_INSIGHTS_INITIALIZED__) return true
      window.aa('init', { appId: appId, apiKey: apiKey })
      window.__ALGOLIA_INSIGHTS_INITIALIZED__ = true
      document.dispatchEvent(new CustomEvent('algolia:insights-ready', { detail: { appId: appId } }))
      return true
    }

    var loadInsightsScript = function () {
      if (document.querySelector('script[data-algolia-insights]')) {
        return
      }
      var script = document.createElement('script')
      script.src = INSIGHTS_SRC
      script.async = true
      script.dataset.algoliaInsights = 'true'
      script.onload = function () {
        if (!initializeInsights()) {
          document.addEventListener('algolia.hooks.initialize', initializeInsights, { once: true })
        }
      }
      script.onerror = function () {
        console.error('[Algolia] Failed to load search-insights script')
      }
      document.head.appendChild(script)
    }

    if (!initializeInsights()) {
      loadInsightsScript()
      if (!window.algoliaShopify) {
        document.addEventListener('algolia.hooks.initialize', initializeInsights, { once: true })
      }
    }
  })()
</script>

<script>
  ;(function enableAlgoliaClickAnalytics() {
    var MAX_ATTEMPTS = 20
    var attempts = 0
    var hasApplied = false

    var withClickAnalytics = function (params) {
      return Object.assign({}, params, { clickAnalytics: true })
    }

    var patchRequests = function (requests) {
      if (Array.isArray(requests)) {
        return requests.map(function (request) {
          var nextParams = Object.assign({}, request.params || {}, { clickAnalytics: true })
          return Object.assign({}, request, { params: nextParams })
        })
      }

      if (requests && typeof requests === 'object') {
        var params = Object.assign({}, requests.params || {}, { clickAnalytics: true })
        return Object.assign({}, requests, { params: params })
      }

      return requests
    }

    var patchIndex = function (index) {
      if (!index || index.__nbiClickAnalyticsIndexPatched || typeof index.search !== 'function') {
        return index
      }

      var originalSearch = index.search
      index.search = function () {
        var args = Array.prototype.slice.call(arguments)
        if (typeof args[0] === 'string') {
          args[1] = withClickAnalytics(args[1] || {})
        } else if (args[0] && typeof args[0] === 'object') {
          var params = Object.assign({}, args[0].params || {}, { clickAnalytics: true })
          args[0] = Object.assign({}, args[0], { params: params })
        }
        return originalSearch.apply(this, args)
      }
      index.__nbiClickAnalyticsIndexPatched = true
      return index
    }

    var patchClient = function (client) {
      if (!client || client.__nbiClickAnalyticsClientPatched) {
        return
      }

      if (typeof client.search === 'function') {
        var originalSearch = client.search
        client.search = function () {
          var args = Array.prototype.slice.call(arguments)
          args[0] = patchRequests(args[0])
          return originalSearch.apply(this, args)
        }
      }

      if (typeof client.initIndex === 'function' && !client.__nbiClickAnalyticsInitPatched) {
        var originalInitIndex = client.initIndex
        client.initIndex = function () {
          var index = originalInitIndex.apply(this, arguments)
          return patchIndex(index)
        }
        client.__nbiClickAnalyticsInitPatched = true
      }

      client.__nbiClickAnalyticsClientPatched = true
    }

    var applyClickAnalytics = function () {
      var algoliaShopify = window.algoliaShopify
      if (!algoliaShopify) {
        return false
      }

      if (hasApplied) {
        return true
      }

      hasApplied = true

      algoliaShopify.config = algoliaShopify.config || {}
      algoliaShopify.config.search_parameters = withClickAnalytics(
        algoliaShopify.config.search_parameters || {}
      )

      if (algoliaShopify.instantsearch) {
        algoliaShopify.instantsearch.searchParameters = withClickAnalytics(
          algoliaShopify.instantsearch.searchParameters || {}
        )
      }

      patchClient(algoliaShopify.searchClient)
      patchClient(algoliaShopify.client)

      return true
    }

    var tryEnable = function () {
      attempts += 1
      if (applyClickAnalytics()) {
        document.removeEventListener('algolia.hooks.initialize', tryEnable)
        return true
      }
      return attempts >= MAX_ATTEMPTS
    }

    if (!tryEnable()) {
      document.addEventListener('algolia.hooks.initialize', tryEnable)
      var interval = setInterval(function () {
        if (tryEnable()) {
          clearInterval(interval)
        }
      }, 250)
    }
  })()
</script>
<script>
      ;(function fixAlgoliaCollectionFilters() {
        document.addEventListener('algolia.hooks.initialize', function () {
          var shopify = window.algoliaShopify
          if (!shopify || !shopify.hooks || !shopify.hooks.registerHook) return

          shopify.hooks.registerHook(
            'beforeInstantSearchFiltersString',
            function (defaultFilter) {
              if (!defaultFilter || defaultFilter.indexOf('collection_ids') === -1) {
                return defaultFilter
              }

              var match = window.location.pathname.match(/\/collections\/([^/]+)/i)
              var handle = match && match.length === 2 ? match[1] : null
              if (!handle) return defaultFilter

              return defaultFilter.replace(/collection_ids:"\w+"/g, 'collections:' + handle)
            }
          )
        })
      })()
    </script>
  
  

<script type="text/javascript">
  
    window.SHG_CUSTOMER = null;
  
</script>







<!-- BEGIN app block: shopify://apps/hulk-form-builder/blocks/app-embed/b6b8dd14-356b-4725-a4ed-77232212b3c3 --><!-- BEGIN app snippet: hulkapps-formbuilder-theme-ext --><script type="text/javascript">
  
  if (typeof window.formbuilder_customer != "object") {
        window.formbuilder_customer = {}
  }

  window.hulkFormBuilder = {
    form_data: {"form_0vMXVatDx3HrWbebp002_g":{"uuid":"0vMXVatDx3HrWbebp002_g","form_name":"Copy of Request a Quote","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#ffffff","form_title":"\u003cp\u003e\u003cspan style=\"color:#000000;\"\u003e\u003cbig\u003e\u003cstrong\u003e11+ Users: Get a Quote\u003c\/strong\u003e\u003c\/big\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003ch6\u003e\u003csmall\u003eGet a custom quote for larger teams.\u003c\/small\u003e\u003c\/h6\u003e\n","form_submit":"Request a Custom Quote","after_submit":"hideAndmessage","after_submit_msg":"\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eThank you for your Group Subscription submission!\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\n\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eOur team will be in contact with you shortly. We will work with you to customize a plan that fits your needs. After we connect, we will be able to provide a quote.\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\n\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eWe looking forward to speaking soon!\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"8","back_type":"color","input_back_color":"#edeff3","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#092254","button_align":"fullBtn","button_clr":"#ffffff","button_back_clr":"#0069a5","button_border_radius":"15","form_width":"600px","form_border_size":0,"form_border_clr":"#ffffff","form_border_radius":0,"label_font_size":"16","input_font_size":"13","button_font_size":"18","form_padding":"10","input_border_color":"#6b7690","input_border_color_hover":"#ccc","btn_border_clr":"#99e2f2","btn_border_size":"2","form_name":"Copy of Request a Quote","":"","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","banner_img_height":"350","form_banner_alignment":"left","input_font_family":"Poppins","label_font_family":"Poppins","banner_img_width":"350","blocked_emails":"","after_submit_script":"window.parent.postMessage('hulk_form_submit:Request Quote', '*'); ","formElements":[{"Conditions":{},"type":"text","position":0,"label":"Full Name","required":"yes","halfwidth":"yes","centerfield":"no","page_number":1},{"type":"email","position":1,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"page_number":1,"confirm_value":"no","halfwidth":"yes"},{"Conditions":{},"type":"text","position":2,"label":"Company Name","required":"yes","page_number":1,"halfwidth":"yes"},{"Conditions":{},"type":"number","position":3,"label":"# of Attorneys","required":"no","maxNumber":"10000","page_number":1,"halfwidth":"yes"},{"Conditions":{},"type":"number","position":4,"label":"# of Paralegals","required":"no","page_number":1,"halfwidth":"yes"},{"Conditions":{},"type":"select","position":5,"label":"State","option_sets":"state","values":"Alabama\nAlaska\nArizona\nArkansas\nByram\nCalifornia\nCokato\nColorado\nConnecticut\nDelaware\nDistrict of Columbia\nFlorida\nGeorgia\nHawaii\nIdaho\nIllinois\nIndiana\nIowa\nKansas\nKentucky\nLouisiana\nLowa\nMaine\nMaryland\nMassachusetts\nMedfield\nMichigan\nMinnesota\nMississippi\nMissouri\nMontana\nNebraska\nNevada\nNew Hampshire\nNew Jersey\nNew Jersy\nNew Mexico\nNew York\nNorth Carolina\nNorth Dakota\nOhio\nOklahoma\nOntario\nOregon\nPennsylvania\nRamey\nRhode Island\nSouth Carolina\nSouth Dakota\nSublimity\nTennessee\nTexas\nTrimble\nUtah\nVermont\nVirginia\nWashington\nWest Virginia\nWisconsin\nWyoming","elementCost":{},"option_country":"475","required":"yes","page_number":1,"halfwidth":"yes"},{"Conditions":{},"type":"phone","position":6,"label":"Phone Number","required":"no","phone_validate_field":"no","page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Shopify Plus","shop_shopify_domain":"nbi-sems.myshopify.com"},"form_60GrluyCkbIjDrMO0F7oLA":{"uuid":"60GrluyCkbIjDrMO0F7oLA","form_name":"Speak for NBI","form_data":{"div_back_gradient_1":"#092254","div_back_gradient_2":"#0069a5","back_color":"#1b3666","form_title":"\u003ch2 style=\"text-align: center;\"\u003e\u003cstrong\u003e\u003cspan style=\"color:#ffffff;\"\u003e\u003cspan style=\"font-family:Verdana;\"\u003eContact Us\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\u003c\/h2\u003e\n","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003ch2\u003e\u003cspan style=\"color:#ffffff;\"\u003e\u003cspan style=\"font-family:Verdana;\"\u003eThank you for taking the time to fill out this form! We have received your request and all content will be sent to\u0026nbsp;your email that was provided.\u003c\/span\u003e\u003c\/span\u003e\u003c\/h2\u003e\n","captcha_enable":"no","label_style":"blockLabels","input_border_radius":"15","back_type":"gradient","input_back_color":"#d3f0f8","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#ffffff","input_font_clr":"#000000","button_align":"centerBtn","button_clr":"#092254","button_back_clr":"#99e2f2","button_border_radius":"20","form_width":"500px","form_border_size":0,"form_border_clr":"#092254","form_border_radius":"15","label_font_size":"13","input_font_size":"11","button_font_size":"18","form_padding":"10","input_border_color":"#d3f0f8","input_border_color_hover":"#d3f0f8","btn_border_clr":"#99e2f2","btn_border_size":"5","form_name":"Speak for NBI","":"","form_emails":"facultyrecruitment@nbi-sems.com","admin_email_subject":"New form submission received.","admin_email_message":"Hi [first-name of store owner],\u003cbr\u003eSomeone just submitted a response to your form.\u003cbr\u003ePlease find the details below:","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","notification_email_send":true,"form_description":"\u003cp style=\"text-align: center;\"\u003e\u003cspan style=\"color:#ffffff;\"\u003e\u003cspan style=\"font-family:Verdana;\"\u003ePlease fill out a quick form to tell us about yourself and our Faculty Department will contact you shortly after.\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\n","form_banner_alignment":"left","label_font_family":"Poppins","input_placeholder_clr":"#000000","input_font_family":"Poppins","formElements":[{"Conditions":{},"type":"text","position":0,"label":"First Name","required":"yes","halfwidth":"yes","centerfield":"no","page_number":1},{"Conditions":{},"type":"text","position":1,"label":"Last Name","required":"yes","page_number":1,"halfwidth":"yes"},{"type":"email","position":2,"label":"Email","required":"yes","email_confirm":"yes","Conditions":{},"page_number":1},{"Conditions":{},"type":"phone","position":3,"label":"Phone","required":"yes","phone_validate_field":"no","page_number":1},{"Conditions":{},"type":"textarea","position":4,"label":"Tell us a bit about yourself","required":"yes","inputHeight":"50","placeholder":"Provide a brief overview about yourself, experience, area(s) of practice, and topic(s) you are interested in teaching.","page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"shopify_plus","shop_shopify_domain":"nbi-sems.myshopify.com","shop_remove_watermark":false,"shop_created_at":"2024-04-26T08:12:48.103-05:00"},"form_9D4DQu7qc9xWBuwLqk2c8g":{"uuid":"9D4DQu7qc9xWBuwLqk2c8g","form_name":"Course Registration Form - 5272217","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#0069a5","form_title":"\u003cdiv style=\"font-family:'Poppins', Arial, sans-serif; font-size:27px; color:#ffffff; font-weight:600; text-align:center; letter-spacing:0.5px; line-height:1.2;\"\u003eFree AI Course\u003c\/div\u003e\n","form_submit":"Watch Now For Free!","after_submit":"clearAndAllow","after_submit_msg":"","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"10","back_type":"color","input_back_color":"#ffffff","input_back_color_hover":"#ffffff","back_shadow":"hardDarkShadow","label_font_clr":"#ffffff","input_font_clr":"#092254","button_align":"centerBtn","button_clr":"#fff","button_back_clr":"#092254","button_border_radius":"10","form_width":"550px","form_border_size":"2","form_border_clr":"#99e2f2","form_border_radius":"25","label_font_size":"16","input_font_size":"16","button_font_size":"18","form_padding":"20","input_border_color":"#092254","input_border_color_hover":"#0069a5","btn_border_clr":"#ffffff","btn_border_size":"1","form_name":"Course Registration Form - 5272217","":"","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","advance_js":"(function () {\n  function onReady(fn){ if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); }\n\n  onReady(function () {\n    \/\/ Grab the only\/first form inside the iframe\n    const form = document.querySelector('form');\n    if (!form) return;\n\n    \/\/ ON24 fixed bits\n    const BASE_URL = 'https:\/\/seamlessreg.on24.com\/?eventid=5272217\u0026key=5871C5A3FDCA1EA81F8D3614EBA00934';\n\n    \/\/ Your fields are literally \"First Name\", \"Last Name\", \"Email\"\n    const firstEl = form.querySelector('input[name=\"First Name\"], input#First\\\\ Name, input[placeholder=\"First Name\"]');\n    const lastEl  = form.querySelector('input[name=\"Last Name\"],  input#Last\\\\ Name,  input[placeholder=\"Last Name\"]');\n    const emailEl = form.querySelector('input[name=\"Email\"],      input#Email,        input[placeholder=\"Email\"]');\n\n    function buildUrl() {\n      const firstname = (firstEl?.value || '').trim();\n      const lastname  = (lastEl?.value  || '').trim();\n      const email     = (emailEl?.value || '').trim();\n      if (!firstname || !lastname || !email) return null;\n\n      const qs = new URLSearchParams();\n      qs.set('firstname', firstname);\n      qs.set('lastname',  lastname);\n      qs.set('email',     email);\n      return BASE_URL + '\u0026' + qs.toString();\n    }\n\n    \/\/ Intercept submit AS EARLY AS POSSIBLE (capture) and stop Hulk handlers\n    let redirected = false;\n    function interceptAndRedirect(e) {\n      if (redirected) return;\n      const finalUrl = buildUrl();\n      if (!finalUrl) return; \/\/ let native submission proceed if missing fields\n\n      \/\/ Block Hulk’s submission chain\n      e.preventDefault();\n      e.stopPropagation();\n      if (typeof e.stopImmediatePropagation === 'function') e.stopImmediatePropagation();\n\n      redirected = true;\n\n      \/\/ Try to navigate the parent\/top (iframe → top)\n      const targetWin = (window.top \u0026\u0026 window.top !== window) ? window.top : window;\n      try {\n        targetWin.location.assign(finalUrl);\n      } catch (_) {\n        targetWin.location.href = finalUrl;\n      }\n    }\n\n    \/\/ 1) Submit (capture) to beat Hulk listeners\n    form.addEventListener('submit', interceptAndRedirect, true);\n\n    \/\/ 2) Also catch clicks on submit-type buttons (some forms block submit)\n    const submitBtns = form.querySelectorAll('button[type=\"submit\"], input[type=\"submit\"]');\n    submitBtns.forEach(btn =\u003e {\n      btn.addEventListener('click', function(e){\n        \/\/ Give the browser a tick for HTML5 validation; then redirect if valid\n        setTimeout(() =\u003e {\n          if (typeof form.checkValidity === 'function' \u0026\u0026 !form.checkValidity()) return;\n          interceptAndRedirect(e);\n        }, 0);\n      }, true);\n    });\n  });\n})();","input_font_family":"Poppins","input_fonts_type":"Google Fonts","label_font_family":"Poppins","input_placeholder_clr":"#1b3666","form_description":"\u003cdiv style=\"font-family:'Poppins', Arial, sans-serif; font-size:16px; color:#ffffff; text-align:center; font-weight:300; letter-spacing:0.4px; line-height:1.4; margin:14px 0 6px 0;\"\u003eGet instant access to practical insights on using Claude Cowork Legal Plugin in your practice.\u003c\/div\u003e\n","after_submit_script":"window.parent.postMessage('hulk_form_submit:AI Webinar Registration', '*'); ","formElements":[{"Conditions":{},"type":"text","position":0,"label":"First Name","halfwidth":"yes","required":"yes","page_number":1},{"Conditions":{},"type":"text","position":1,"label":"Last Name","required":"yes","halfwidth":"yes","page_number":1,"centerfield":"no"},{"type":"email","position":2,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"confirm_value":"no","page_number":1},{"Conditions":{},"type":"select","position":3,"label":"Position","values":"Managing Partner\nPartner\nSolo Practitioner\nAssociate\nOf Counsel\nCorporate Counsel\nGeneral Counsel\nParalegal\nLegal Assistant\nCPA \/ Accountant\nOther","elementCost":{},"page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"nbi-sems.myshopify.com"},"form_Cn4D5DoQGiTVHjY4aXv6IA":{"uuid":"Cn4D5DoQGiTVHjY4aXv6IA","form_name":"Course Registration Form - 5270860","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#0069a5","form_title":"\u003ch2 style=\"text-align: center; font-size: 28px; line-height: 1.2; font-weight: 700; color: rgb(255, 255, 255); margin: 0px 0px 24px;\"\u003eFree AI Course\u003c\/h2\u003e\n","form_submit":"Watch Now For Free!","after_submit":"clearAndAllow","after_submit_msg":"","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"10","back_type":"color","input_back_color":"#ffffff","input_back_color_hover":"#d3f0f8","back_shadow":"hardLightShadow","label_font_clr":"#ffffff","input_font_clr":"#092254","button_align":"centerBtn","button_clr":"#fff","button_back_clr":"#092254","button_border_radius":"15","form_width":"550px","form_border_size":"3","form_border_clr":"#99e2f2","form_border_radius":"20","label_font_size":"16","input_font_size":"16","button_font_size":"20","form_padding":"38","input_border_color":"#092254","input_border_color_hover":"#092254","btn_border_clr":"#99e2f2","btn_border_size":"1","form_name":"Course Registration Form - 5270860","":"","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","advance_js":"\/\/ Event ID 5270860 | Matt Form Javascript\n(function () {\n  function onReady(fn){ if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); }\n\n  onReady(function () {\n    \/\/ Grab the only\/first form inside the iframe\n    const form = document.querySelector('form');\n    if (!form) return;\n\n    \/\/ ON24 fixed bits\n    const BASE_URL = 'https:\/\/seamlessreg.on24.com\/?eventid=5270860\u0026key=92EB9F93A6AE411391ED4E39E36FF134';\n\n    \/\/ Your fields are literally \"First Name\", \"Last Name\", \"Email\"\n    const firstEl = form.querySelector('input[name=\"First Name\"], input#First\\\\ Name, input[placeholder=\"First Name\"]');\n    const lastEl  = form.querySelector('input[name=\"Last Name\"],  input#Last\\\\ Name,  input[placeholder=\"Last Name\"]');\n    const emailEl = form.querySelector('input[name=\"Email\"],      input#Email,        input[placeholder=\"Email\"]');\n\n    function buildUrl() {\n      const firstname = (firstEl?.value || '').trim();\n      const lastname  = (lastEl?.value  || '').trim();\n      const email     = (emailEl?.value || '').trim();\n      if (!firstname || !lastname || !email) return null;\n\n      const qs = new URLSearchParams();\n      qs.set('firstname', firstname);\n      qs.set('lastname',  lastname);\n      qs.set('email',     email);\n      return BASE_URL + '\u0026' + qs.toString();\n    }\n\n    \/\/ Intercept submit AS EARLY AS POSSIBLE (capture) and stop Hulk handlers\n    let redirected = false;\n    function interceptAndRedirect(e) {\n      if (redirected) return;\n      const finalUrl = buildUrl();\n      if (!finalUrl) return; \/\/ let native submission proceed if missing fields\n\n      \/\/ Block Hulk’s submission chain\n      e.preventDefault();\n      e.stopPropagation();\n      if (typeof e.stopImmediatePropagation === 'function') e.stopImmediatePropagation();\n\n      redirected = true;\n\n      \/\/ Try to navigate the parent\/top (iframe → top)\n      const targetWin = (window.top \u0026\u0026 window.top !== window) ? window.top : window;\n      try {\n        targetWin.location.assign(finalUrl);\n      } catch (_) {\n        targetWin.location.href = finalUrl;\n      }\n    }\n\n    \/\/ 1) Submit (capture) to beat Hulk listeners\n    form.addEventListener('submit', interceptAndRedirect, true);\n\n    \/\/ 2) Also catch clicks on submit-type buttons (some forms block submit)\n    const submitBtns = form.querySelectorAll('button[type=\"submit\"], input[type=\"submit\"]');\n    submitBtns.forEach(btn =\u003e {\n      btn.addEventListener('click', function(e){\n        \/\/ Give the browser a tick for HTML5 validation; then redirect if valid\n        setTimeout(() =\u003e {\n          if (typeof form.checkValidity === 'function' \u0026\u0026 !form.checkValidity()) return;\n          interceptAndRedirect(e);\n        }, 0);\n      }, true);\n    });\n  });\n})();","input_font_family":"Poppins","input_fonts_type":"Google Fonts","label_font_family":"Poppins","input_placeholder_clr":"#092254","form_description":"\u003c!-- Description --\u003e\n\u003cp style=\"text-align:center; font-size:16px; line-height:1.6; font-weight:300; color:#ffffff; margin:0 0 24px 0; font-family:Poppins, Arial, sans-serif;\"\u003eGet instant access to \u0026quot;\u003cstrong\u003eClaude Cowork Legal: Attorney Efficiency Tool or Career Extinguisher?\u0026quot;\u003c\/strong\u003e\u003c\/p\u003e\n","after_submit_script":"window.parent.postMessage('hulk_form_submit:AI Webinar Registration', '*'); ","formElements":[{"Conditions":{},"type":"text","position":0,"label":"First Name","halfwidth":"yes","required":"yes","page_number":1},{"Conditions":{},"type":"text","position":1,"label":"Last Name","required":"yes","halfwidth":"yes","page_number":1,"centerfield":"no"},{"type":"email","position":2,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"confirm_value":"no","page_number":1},{"Conditions":{},"type":"select","position":3,"label":"Position","values":"Managing Partner\nPartner\nSolo Practitioner\nAssociate\nOf Counsel\nCorporate Counsel\nGeneral Counsel\nParalegal\nLegal Assistant\nCPA \/ Accountant\nOther","elementCost":{},"page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"nbi-sems.myshopify.com"},"form_e4BOhLg8jlmI0RJvpwa4VQ":{"uuid":"e4BOhLg8jlmI0RJvpwa4VQ","form_name":"AI Webinar Registration Form ","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#0069a5","form_title":"\u003ch2 style=\"text-align: center; font-size: 28px; line-height: 1.2; font-weight: 700; color: rgb(255, 255, 255); margin: 0px 0px 24px;\"\u003eFree AI Webinar\u0026nbsp;\u003c\/h2\u003e\n","form_submit":"Watch Now For Free!","after_submit":"clearAndAllow","after_submit_msg":"","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"10","back_type":"color","input_back_color":"#ffffff","input_back_color_hover":"#d3f0f8","back_shadow":"hardLightShadow","label_font_clr":"#ffffff","input_font_clr":"#092254","button_align":"centerBtn","button_clr":"#fff","button_back_clr":"#092254","button_border_radius":"15","form_width":"400px","form_border_size":"3","form_border_clr":"#99e2f2","form_border_radius":"20","label_font_size":"16","input_font_size":"16","button_font_size":"20","form_padding":"38","input_border_color":"#092254","input_border_color_hover":"#092254","btn_border_clr":"#99e2f2","btn_border_size":"1","form_name":"AI Webinar Registration Form ","":"","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","advance_js":"(function () {\n  function onReady(fn){ if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); }\n\n  onReady(function () {\n    \/\/ Grab the only\/first form inside the iframe\n    const form = document.querySelector('form');\n    if (!form) return;\n\n    \/\/ ON24 fixed bits\n    const BASE_URL = 'https:\/\/seamlessreg.on24.com\/?eventid=5153081\u0026key=4377973767356E1C49823F19D912B2F3';\n\n    \/\/ Your fields are literally \"First Name\", \"Last Name\", \"Email\"\n    const firstEl = form.querySelector('input[name=\"First Name\"], input#First\\\\ Name, input[placeholder=\"First Name\"]');\n    const lastEl  = form.querySelector('input[name=\"Last Name\"],  input#Last\\\\ Name,  input[placeholder=\"Last Name\"]');\n    const emailEl = form.querySelector('input[name=\"Email\"],      input#Email,        input[placeholder=\"Email\"]');\n\n    function buildUrl() {\n      const firstname = (firstEl?.value || '').trim();\n      const lastname  = (lastEl?.value  || '').trim();\n      const email     = (emailEl?.value || '').trim();\n      if (!firstname || !lastname || !email) return null;\n\n      const qs = new URLSearchParams();\n      qs.set('firstname', firstname);\n      qs.set('lastname',  lastname);\n      qs.set('email',     email);\n      return BASE_URL + '\u0026' + qs.toString();\n    }\n\n    \/\/ Intercept submit AS EARLY AS POSSIBLE (capture) and stop Hulk handlers\n    let redirected = false;\n    function interceptAndRedirect(e) {\n      if (redirected) return;\n      const finalUrl = buildUrl();\n      if (!finalUrl) return; \/\/ let native submission proceed if missing fields\n\n      \/\/ Block Hulk’s submission chain\n      e.preventDefault();\n      e.stopPropagation();\n      if (typeof e.stopImmediatePropagation === 'function') e.stopImmediatePropagation();\n\n      redirected = true;\n\n      \/\/ Try to navigate the parent\/top (iframe → top)\n      const targetWin = (window.top \u0026\u0026 window.top !== window) ? window.top : window;\n      try {\n        targetWin.location.assign(finalUrl);\n      } catch (_) {\n        targetWin.location.href = finalUrl;\n      }\n    }\n\n    \/\/ 1) Submit (capture) to beat Hulk listeners\n    form.addEventListener('submit', interceptAndRedirect, true);\n\n    \/\/ 2) Also catch clicks on submit-type buttons (some forms block submit)\n    const submitBtns = form.querySelectorAll('button[type=\"submit\"], input[type=\"submit\"]');\n    submitBtns.forEach(btn =\u003e {\n      btn.addEventListener('click', function(e){\n        \/\/ Give the browser a tick for HTML5 validation; then redirect if valid\n        setTimeout(() =\u003e {\n          if (typeof form.checkValidity === 'function' \u0026\u0026 !form.checkValidity()) return;\n          interceptAndRedirect(e);\n        }, 0);\n      }, true);\n    });\n  });\n})();","input_font_family":"Poppins","input_fonts_type":"Google Fonts","label_font_family":"Poppins","input_placeholder_clr":"#092254","form_description":"\u003c!-- Description --\u003e\n\u003cp style=\"text-align:center; font-size:16px; line-height:1.6; font-weight:300; color:#ffffff; margin:0 0 24px 0; font-family:Poppins, Arial, sans-serif;\"\u003eGet instant access to expert insights on AI in the legal field.\u003c\/p\u003e\n","after_submit_script":"window.parent.postMessage('hulk_form_submit:AI Webinar Registration', '*'); ","formElements":[{"Conditions":{},"type":"text","position":0,"label":"First Name","halfwidth":"yes","required":"yes","page_number":1},{"Conditions":{},"type":"text","position":1,"label":"Last Name","required":"yes","halfwidth":"yes","page_number":1,"centerfield":"no"},{"type":"email","position":2,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"confirm_value":"no","page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"nbi-sems.myshopify.com"},"form_g6en0VMf4mB8n3tu948SBw":{"uuid":"g6en0VMf4mB8n3tu948SBw","form_name":"Florida Group Pass","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#ffffff","form_title":"\u003ch1 style=\"font-family: Poppins, sans-serif; color: rgb(9, 34, 84); text-align: center; font-weight: 700; font-size: 28px; margin-bottom: 10px;\"\u003eRequest a Quote\u003c\/h1\u003e\n","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eThank you for your Group Subscription submission!\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\n\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eOur team will be in contact with you shortly. We will work with you to customize a plan that fits your needs. After we connect, we will be able to provide a quote.\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\n\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eWe looking forward to speaking soon!\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"8","back_type":"color","input_back_color":"#edeff3","input_back_color_hover":"#fff","back_shadow":"softDarkShadow","label_font_clr":"#333333","input_font_clr":"#092254","button_align":"centerBtn","button_clr":"#092254","button_back_clr":"#99e2f2","button_border_radius":"15","form_width":"550px","form_border_size":"1","form_border_clr":"#a5a1a1","form_border_radius":"20","label_font_size":"18","input_font_size":"16","button_font_size":"20","form_padding":"20","input_border_color":"#6b7690","input_border_color_hover":"#ccc","btn_border_clr":"#ffffff","btn_border_size":0,"form_name":"Florida Group Pass","":"nicole.borchardt@nbi-sems.com","form_emails":"OutboundSales@nbi-sems.com,nicole.borchardt@nbi-sems.com","admin_email_subject":"FLORIDA GROUP PASS - New form submission received.","admin_email_message":"Hi [first-name of store owner],\u003cbr\u003eSomeone just submitted a response to your form.\u003cbr\u003ePlease find the details below:","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","banner_img_height":"350","form_banner_alignment":"left","input_font_family":"Poppins","label_font_family":"Poppins","banner_img_width":"350","blocked_emails":"","notification_email_send":true,"after_submit_script":"window.parent.postMessage('hulk_form_submit:Request Quote', '*'); ","form_description":"","formElements":[{"Conditions":{},"type":"text","position":0,"label":"First Name","required":"yes","halfwidth":"yes","centerfield":"no","page_number":1},{"Conditions":{},"type":"text","position":1,"label":"Last Name","required":"yes","centerfield":"no","page_number":1,"halfwidth":"yes"},{"Conditions":{},"type":"number","position":2,"label":"# of Attorneys","required":"no","maxNumber":"10000","page_number":1,"halfwidth":"yes","customID":"attorneys-count","customClass":"attorneys-count"},{"Conditions":{},"type":"number","position":3,"label":"# of Paralegals","required":"no","page_number":1,"halfwidth":"yes","customID":"paralegals-count","customClass":"paralegals-count"},{"type":"email","position":4,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"page_number":1,"confirm_value":"no"},{"Conditions":{},"type":"text","position":5,"label":"Company Name","required":"yes","page_number":1},{"Conditions":{},"type":"phone","position":6,"label":"Phone Number","required":"no","phone_validate_field":"no","page_number":1},{"Conditions":{},"type":"select","position":7,"label":"Primary Practice Area","values":"Accounting and Tax Law\nAlternative Dispute Resolution\nBanking, Finance, and Foreclosure\nBoundary and Easement Law\nBusiness and Corporate Law\nCollections and Bankruptcy Law\nConstruction Law\nCriminal Law\nDisability and Social Security Law\nElder Law\nEnvironmental Law and Energy Law\nEstate Planning\nEthics\/Professional Responsibility\nFamily Law\nGeneral Civil Litigation\/Trial Law\nGeneral Practice\nGovernment Law\nInsurance Defense\nInsurance Law and Disputes\nLabor, Employment, and HR Law\nLand Use and Zoning Law\nLandlord-Tenant Law\nMedicaid Planning\nParalegal\nPersonal Injury\nProbate and Estate Administration\nReal Estate Law\nSchool and Special Education Law\nWorkers’ Compensation\nOther","elementCost":{},"page_number":1,"other_value":"no"}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"shopify_plus","shop_shopify_domain":"nbi-sems.myshopify.com","shop_remove_watermark":false,"shop_created_at":"2024-04-26T08:12:48.103-05:00"},"form_Iw9epmYx0xFK2BJdwjNDlA":{"uuid":"Iw9epmYx0xFK2BJdwjNDlA","form_name":"Search by Topic","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#0069a5","form_title":"\u003ch2 style=\"text-align: center;\"\u003e\u003cfont color=\"#ffffff\"\u003eCLE Courses that Fit\u003c\/font\u003e\u003c\/h2\u003e\n\n\u003ch2 style=\"text-align: center;\"\u003e\u003cfont color=\"#ffffff\"\u003e\u003cem\u003eYour \u003c\/em\u003ePractice\u003c\/font\u003e\u003c\/h2\u003e\n","form_submit":"Get Your Courses \u003e","after_submit":"clearAndAllow","after_submit_msg":"","captcha_enable":"no","label_style":"blockLabels","input_border_radius":"10","back_type":"transparent","input_back_color":"#ffffff","input_back_color_hover":"#ffffff","back_shadow":"none","label_font_clr":"#ffffff","input_font_clr":"#333333","button_align":"centerBtn","button_clr":"#092254","button_back_clr":"#99e2f2","button_border_radius":"15","form_width":"60%","form_border_size":"2","form_border_clr":"#99e2f2","form_border_radius":"20","label_font_size":"16","input_font_size":"14","button_font_size":"18","form_padding":"25","input_border_color":"#99e2f2","input_border_color_hover":"#0069a5","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Search by Topic","":"matt.mansfield@nbi-sems.com","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","after_submit_script":"window.parent.postMessage('hulk_form_submit:Advanced Search', '*'); ","form_timer_sec":"1","form_load_as_popup":"no","advance_js":"(function () {\n  \/\/ ====== State lists ======\n  const US_STATE_NAMES = [\n    'Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut','Delaware','Florida','Georgia',\n    'Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky','Louisiana','Maine','Maryland',\n    'Massachusetts','Michigan','Minnesota','Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire',\n    'New Jersey','New Mexico','New York','North Carolina','North Dakota','Ohio','Oklahoma','Oregon','Pennsylvania',\n    'Rhode Island','South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington',\n    'West Virginia','Wisconsin','Wyoming','District of Columbia'\n  ];\n  const US_STATE_ABBRS = { AL:'Alabama', AK:'Alaska', AZ:'Arizona', AR:'Arkansas', CA:'California', CO:'Colorado', CT:'Connecticut',\n    DE:'Delaware', FL:'Florida', GA:'Georgia', HI:'Hawaii', ID:'Idaho', IL:'Illinois', IN:'Indiana', IA:'Iowa',\n    KS:'Kansas', KY:'Kentucky', LA:'Louisiana', ME:'Maine', MD:'Maryland', MA:'Massachusetts', MI:'Michigan',\n    MN:'Minnesota', MS:'Mississippi', MO:'Missouri', MT:'Montana', NE:'Nebraska', NV:'Nevada', NH:'New Hampshire',\n    NJ:'New Jersey', NM:'New Mexico', NY:'New York', NC:'North Carolina', ND:'North Dakota', OH:'Ohio',\n    OK:'Oklahoma', OR:'Oregon', PA:'Pennsylvania', RI:'Rhode Island', SC:'South Carolina', SD:'South Dakota',\n    TN:'Tennessee', TX:'Texas', UT:'Utah', VT:'Vermont', VA:'Virginia', WA:'Washington', WV:'West Virginia',\n    WI:'Wisconsin', WY:'Wyoming', DC:'District of Columbia' };\n\n  \/\/ ====== Topic → Collection mapping ======\n  const TOPIC_TO_URL = {\n    'Accounting': '\/collections\/accounting-cle-courses',\n    'Banking and Finance': '\/collections\/banking-finance-cle-courses',\n    'Bankruptcy Foreclosure and Collection Law': '\/collections\/bankruptcy-foreclosure-collection-law-cle-courses',\n    'Business and Securities Law': '\/collections\/business-securities-law-cle-courses',\n    'Cannabis Law': '\/collections\/cannabis-law-cle-courses',\n    'Constitutional Law': '\/collections\/constitutional-law-cle-courses',\n    'Construction Law': '\/collections\/construction-law-cle-courses',\n    'Consumer Law': '\/collections\/consumer-law-cle-courses',\n    'Contract Law': '\/collections\/contract-law-cle-courses',\n    'Criminal Law': '\/collections\/criminal-law-cle-courses',\n    'Disability and Social Security': '\/collections\/disability-social-security-cle-courses',\n    'Education Law': '\/collections\/education-law-cle-courses',\n    'Elder Law': '\/collections\/elder-law-cle-courses',\n    'Entertainment Art and Sports Law': '\/collections\/entertainment-art-sports-law-cle-courses',\n    'Environmental Law': '\/collections\/environmental-law-cle-courses',\n    'Ethics and Specialty Credits': '\/collections\/ethics-specialty-credits-cle-courses',\n    'Family Law': '\/collections\/family-law-cle-courses',\n    'Firearms Law': '\/collections\/firearms-law-cle-courses',\n    'Food and Beverage Law': '\/collections\/food-beverage-law-cle-courses',\n    'Generative AI': '\/collections\/generative-ai-cle-courses',\n    'Government Claims and Military Law': '\/collections\/government-claims-military-law-cle-courses',\n    'Health Law': '\/collections\/health-law-cle-courses',\n    'Immigration': '\/collections\/immigration-cle-courses',\n    'Insurance Law': '\/collections\/insurance-law-cle-courses',\n    'Intellectual Property': '\/collections\/intellectual-property-cle-courses',\n    'Judicial Forum': '\/collections\/judicial-forum-cle-courses',\n    'Labor and Employment': '\/collections\/labor-employment-cle-courses',\n    'Law Practice Management': '\/collections\/law-practice-management-cle-courses',\n    'Legal Research and Writing': '\/collections\/legal-research-writing-cle-courses',\n    'Litigation and Appeals': '\/collections\/litigation-appeals-cle-courses',\n    'Local Government Law': '\/collections\/local-government-law-cle-courses',\n    'Medicolegal': '\/collections\/medicolegal-cle-courses',\n    'Nonprofit Law': '\/collections\/nonprofit-law-cle-courses',\n    'Personal Injury and Negligence': '\/collections\/personal-injury-negligence-cle-courses',\n    'Professional and Business Skills': '\/collections\/professional-business-skills-cle-courses',\n    'Real Estate': '\/collections\/real-estate-cle-courses',\n    'Tax': '\/collections\/tax-cle-courses',\n    'Technology Privacy and Cybersecurity': '\/collections\/technology-privacy-cybersecurity-cle-courses',\n    'True Crime': '\/collections\/true-crime-cle',\n    'Trusts Estates and Probate': '\/collections\/trusts-estates-probate-cle-courses',\n    'Workers Compensation': '\/collections\/workers-compensation-cle-courses'\n  };\n  const toMapKey = s =\u003e String(s||'')\n    .replace(\/%27\/gi,\"'\").replace(\/[’'\"]\/g,'').replace(\/\u0026\/g,'and')\n    .replace(\/[,\/]+\/g,' ').replace(\/\\s+\/g,' ').trim().toLowerCase();\n  const TOPIC_TO_URL_NORM = Object.fromEntries(Object.entries(TOPIC_TO_URL).map(([k,v]) =\u003e [toMapKey(k), v]));\n\n  \/\/ ====== Param helpers (iframe-aware) ======\n  const getParamHere = n =\u003e { try { return new URLSearchParams(location.search).get(n) || null; } catch { return null; } };\n  function getParamFromReferrer(n){\n    try{\n      const ref = getParamHere('referrer_url');\n      if (!ref) return null;\n      const u = new URL(decodeURIComponent(ref));\n      return new URLSearchParams(u.search).get(n) || null;\n    }catch{ return null; }\n  }\n\n  \/\/ ====== State normalization ======\n  function normalizeMaybeState(raw){\n    if (!raw) return null;\n    const t = String(raw).trim();\n    const byName = US_STATE_NAMES.find(s =\u003e s.toLowerCase() === t.toLowerCase());\n    if (byName) return byName;\n    if (\/^[A-Za-z]{2}$\/.test(t)) {\n      const full = US_STATE_ABBRS[t.toUpperCase()];\n      if (full) return full;\n    }\n    const pretty = t.replace(\/[-_]+\/g,' ').replace(\/\\s+\/g,' ').trim();\n    const cap = pretty.replace(\/\\b\\w\/g, m =\u003e m.toUpperCase());\n    if (US_STATE_NAMES.includes(cap)) return cap;\n    const stripped = t.replace(\/\\s+cle$\/i,'').trim();\n    const byName2 = US_STATE_NAMES.find(s =\u003e s.toLowerCase() === stripped.toLowerCase());\n    if (byName2) return byName2;\n    return null;\n  }\n\n  \/\/ ====== DOM helpers ======\n  function onReady(fn){ if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); }\n  function fireAllEvents(el){\n    if (!el) return;\n    el.dispatchEvent(new Event('input', {bubbles:true}));\n    el.dispatchEvent(new Event('change',{bubbles:true}));\n    setTimeout(() =\u003e el.dispatchEvent(new Event('change',{bubbles:true})), 0);\n    setTimeout(() =\u003e el.dispatchEvent(new Event('blur',  {bubbles:true})), 10);\n  }\n  function clickStyledProxyIfAny(selectEl){\n    const wrap = selectEl.closest('.formElement,.form-group,[id^=\"conditionInclude_\"]') || selectEl.parentElement;\n    const proxy = wrap?.querySelector('[role=\"combobox\"],.select2-selection,.choices,.custom-select');\n    if (proxy \u0026\u0026 proxy.click) { try { proxy.click(); } catch {} }\n  }\n  function ensureErrorBelow(targetEl, id){\n    if (!targetEl) return null;\n    let err = document.getElementById(id);\n    if (!err){\n      err = document.createElement('div');\n      err.id = id;\n      err.className = 'inline-error-message';\n      err.style.fontSize = '12px';\n      err.style.lineHeight = '1.2';\n      err.style.marginTop  = '4px';\n    }\n    if (err.parentElement) err.parentElement.remove();\n    targetEl.insertAdjacentElement('afterend', err);\n    return err;\n  }\n  function showFieldError(targetEl, id, msg){\n    const err = ensureErrorBelow(targetEl, id);\n    if (err) err.textContent = msg || '';\n    targetEl?.setAttribute('aria-invalid', msg ? 'true' : 'false');\n    if (msg) targetEl?.focus?.();\n  }\n  function clearFieldError(targetEl, id){\n    const err = document.getElementById(id);\n    if (err) err.textContent = '';\n    targetEl?.setAttribute('aria-invalid', 'false');\n  }\n\n  \/\/ ====== Select discovery ======\n  function findTopicSelect(root=document){\n    return root.querySelector('form select[name=\"Course Topic\"]') ||\n           root.querySelector('form select[name*=\"Course\"][name*=\"Topic\"]') ||\n           root.querySelector('form select[data-label*=\"Course\" i][data-label*=\"Topic\" i]');\n  }\n  function findStateSelect(root=document){\n    return root.querySelector('form select[name=\"Jurisdiction State\"]') ||\n           root.querySelector('form select[name*=\"Jurisdiction\"][name*=\"State\"]') ||\n           root.querySelector('form select[data-label*=\"Jurisdiction\" i][data-label*=\"State\" i]');\n  }\n\n  \/\/ ====== Placeholder detection (fix for “please select” submitting) ======\n  const PLACEHOLDER_RE = \/(please\\s*select|select\\s*(a\\s*)?state|all\\s*cle\\s*courses)\/i;\n  function isPlaceholderOption(opt){\n    if (!opt) return true;\n    const val = (opt.value || '').trim();\n    const txt = (opt.textContent || '').trim();\n    if (!val) return true;                        \/\/ empty value attribute\n    if (PLACEHOLDER_RE.test(txt)) return true;    \/\/ label looks like a placeholder\n    return false;\n  }\n  function getSelectedText(selectEl){\n    if (!selectEl) return '';\n    const idx = selectEl.selectedIndex;\n    const opt = idx \u003e= 0 ? selectEl.options[idx] : null;\n    if (!opt || isPlaceholderOption(opt)) return ''; \/\/ treat as empty\n    return (opt.textContent || '').trim();\n  }\n\n  function setSelectValue(selectEl, desired){\n    if (!selectEl || !desired) return false;\n    const want = String(desired).trim().toLowerCase();\n    const opts = Array.from(selectEl.options);\n    \/\/ prefer non-placeholder matches\n    let target = opts.find(o =\u003e !isPlaceholderOption(o) \u0026\u0026 (\n      (o.textContent||'').trim().toLowerCase() === want ||\n      (o.value||'').trim().toLowerCase() === want\n    ));\n    if (!target){\n      target = opts.find(o =\u003e !isPlaceholderOption(o) \u0026\u0026 (\n        (o.textContent||'').trim().toLowerCase().startsWith(want) ||\n        (o.value||'').trim().toLowerCase().startsWith(want)\n      ));\n    }\n    if (!target) return false;\n    selectEl.value = target.value;\n    fireAllEvents(selectEl);\n    clickStyledProxyIfAny(selectEl);\n    return true;\n  }\n\n  \/\/ ====== Preselect from URL\/referrer ======\n  function preselectFromUrl(topicSelect, stateSelect){\n    const topicParam = getParamHere('topic') || getParamHere('topics') || getParamHere('course_topic') ||\n                       getParamFromReferrer('topic') || getParamFromReferrer('topics') || getParamFromReferrer('course_topic');\n    if (topicParam \u0026\u0026 topicSelect) setSelectValue(topicSelect, topicParam);\n\n    const rawState = getParamHere('state') || getParamHere('jurisdiction') || getParamHere('cle_state') ||\n                     getParamFromReferrer('state') || getParamFromReferrer('jurisdiction') || getParamFromReferrer('cle_state');\n    const state = normalizeMaybeState(rawState);\n    if (state \u0026\u0026 stateSelect) setSelectValue(stateSelect, state);\n  }\n\n  \/\/ ====== URL builder (collection path + state facet + form_name + carry UTMs) ======\n  const KEEP_KEYS = new Set(['form_name','utm_source','utm_medium','utm_campaign','utm_term','utm_content']);\n  function carryKeepParams(params){\n    try {\n      const cur = new URL(location.href);\n      for (const [k,v] of cur.searchParams) {\n        if (KEEP_KEYS.has(k) \u0026\u0026 !params.has(k)) params.append(k, v);\n      }\n    } catch {}\n  }\n  function normalizeStateFacet(s){ return s \u0026\u0026 !\/ CLE$\/i.test(s) ? (s + ' CLE') : s; }\n\n  function buildUrl(topicSelect, stateSelect){\n    const topicLabel = getSelectedText(topicSelect);\n    const path = TOPIC_TO_URL_NORM[toMapKey(topicLabel)] || '\/search';\n    const base = 'https:\/\/nbi-sems.com' + path;\n\n    const stateLabel = getSelectedText(stateSelect);   \/\/ now empty if placeholder\/default\n    const stateFacet = normalizeStateFacet(stateLabel);\n\n    const params = new URLSearchParams();\n    if (stateFacet) params.append('refinementList[meta.custom.cle_state][0]', stateFacet);\n    params.append('form_name', 'topic_search_form');\n    carryKeepParams(params);\n\n    const qs = params.toString();\n    return { url: qs ? `${base}?${qs}` : base, hasState: !!stateFacet };\n  }\n\n  \/\/ ====== Success detection \u0026 redirect (lets Hulk record first) ======\n  let pendingRedirectUrl = null;\n  let redirected = false;\n  let watcherStarted = false;\n  let restoreFetch = null;\n  let restoreXHR = null;\n\n  function isHulkEndpoint(url){\n    try {\n      const u = new URL(url, location.href);\n      const host = u.hostname;\n      return \/hulkapps|formbuilder|hulkform\/i.test(host) || \/\\\/formbuilder\\\/\/i.test(u.pathname);\n    } catch { return false; }\n  }\n  function setupNetworkWatchers(){\n    if (!restoreFetch \u0026\u0026 'fetch' in window) {\n      const origFetch = window.fetch;\n      window.fetch = function(input, init){\n        let url = typeof input === 'string' ? input : (input?.url || '');\n        const method = (init?.method || '').toUpperCase() || 'GET';\n        return origFetch(input, init).then(resp =\u003e {\n          try {\n            if (isHulkEndpoint(url) \u0026\u0026 (method === 'POST' || method === 'PUT')) {\n              if (resp.ok) setTimeout(doRedirect, 50);\n            }\n          } catch {}\n          return resp;\n        });\n      };\n      restoreFetch = () =\u003e { window.fetch = origFetch; };\n    }\n    if (!restoreXHR \u0026\u0026 'XMLHttpRequest' in window) {\n      const OrigXHR = window.XMLHttpRequest;\n      function PatchedXHR(){\n        const xhr = new OrigXHR();\n        let _method = 'GET'; let _url = '';\n        const origOpen = xhr.open;\n        xhr.open = function(method, url){\n          _method = (method || 'GET').toUpperCase();\n          _url = url || '';\n          return origOpen.apply(xhr, arguments);\n        };\n        xhr.addEventListener('loadend', function(){\n          try {\n            if (isHulkEndpoint(_url) \u0026\u0026 (_method === 'POST' || _method === 'PUT')) {\n              if (xhr.status \u003e= 200 \u0026\u0026 xhr.status \u003c 300) setTimeout(doRedirect, 50);\n            }\n          } catch {}\n        });\n        return xhr;\n      }\n      window.XMLHttpRequest = PatchedXHR;\n      restoreXHR = () =\u003e { window.XMLHttpRequest = OrigXHR; };\n    }\n  }\n  function teardownNetworkWatchers(){ try{restoreFetch\u0026\u0026restoreFetch();}catch{} try{restoreXHR\u0026\u0026restoreXHR();}catch{} restoreFetch=null; restoreXHR=null; }\n  function doRedirect(){\n    if (redirected || !pendingRedirectUrl) return;\n    redirected = true;\n    teardownNetworkWatchers();\n    const target = (window.top \u0026\u0026 window.top !== window) ? window.top : window;\n    try { target.location.assign(pendingRedirectUrl); } catch { target.location.href = pendingRedirectUrl; }\n  }\n  function startSuccessWatcher(form){\n    if (watcherStarted) return; watcherStarted = true;\n    setupNetworkWatchers();\n    const successTextRegex = \/(thank\\s*you|success|submitted|we'?ve\\s+received|submission)\/i;\n    const root = document.body;\n    const mo = new MutationObserver(() =\u003e {\n      const formGone = !document.body.contains(form);\n      if (formGone) { mo.disconnect(); doRedirect(); return; }\n      const txt = root.textContent || '';\n      if (successTextRegex.test(txt)) { mo.disconnect(); doRedirect(); }\n    });\n    mo.observe(root, { childList:true, subtree:true });\n    setTimeout(() =\u003e { mo.disconnect(); doRedirect(); }, 8000);\n  }\n\n  \/\/ ====== Boot ======\n  onReady(function(){\n    const form = document.querySelector('form');\n    if (!form) return;\n\n    const topicSelect = findTopicSelect(form);\n    const stateSelect = findStateSelect(form);\n\n    \/\/ Require state at HTML level (helps native validation if visible)\n    stateSelect?.setAttribute('required', 'true');\n    stateSelect?.addEventListener('change', () =\u003e clearFieldError(stateSelect, 'jurisdiction-state-error'));\n\n    \/\/ Preselect from URL\/referrer if present\n    preselectFromUrl(topicSelect, stateSelect);\n\n    \/\/ Intercept submit: allow Hulk to record only when state is truly selected (not placeholder)\n    form.addEventListener('submit', function(e){\n      const built = buildUrl(topicSelect, stateSelect);\n\n      if (!built.hasState) {\n        e.preventDefault(); e.stopPropagation();\n        showFieldError(stateSelect, 'jurisdiction-state-error', 'Please select a jurisdiction state.');\n        return false;\n      }\n\n      clearFieldError(stateSelect, 'jurisdiction-state-error');\n      pendingRedirectUrl = built.url;\n      startSuccessWatcher(form);\n      \/\/ DO NOT preventDefault → lets Hulk record\n    }, true);\n\n    \/\/ Also guard button clicks that trigger custom submits\n    form.addEventListener('click', function (e) {\n      const t = e.target;\n      if (!t) return;\n      if (t.closest('button[type=\"submit\"], input[type=\"submit\"], .btn')) {\n        const built = buildUrl(topicSelect, stateSelect);\n        if (!built.hasState) {\n          e.preventDefault(); e.stopPropagation();\n          showFieldError(stateSelect, 'jurisdiction-state-error', 'Please select a jurisdiction state.');\n          return false;\n        }\n        pendingRedirectUrl = built.url;\n        startSuccessWatcher(form);\n      }\n    }, true);\n  });\n})();","input_font_family":"Poppins","input_placeholder_clr":"#333333","label_font_family":"Poppins","advance_css":".inline-error-message { color:#ffffff !important;}","inline_validation":"yes","flow_trigger_integration":"no","formElements":[{"Conditions":{},"type":"select","position":0,"label":"Course Topic","values":"Accounting\nBanking and Finance\nBankruptcy Foreclosure and Collection Law\nBusiness and Securities Law\nCannabis Law\nConstitutional Law\nConstruction Law\nConsumer Law\nContract Law\nCriminal Law\nDisability and Social Security\nEducation Law\nElder Law\nEntertainment Art and Sports Law\nEnvironmental Law\nEthics and Specialty Credits\nFamily Law\nFirearms Law\nFood and Beverage Law\nGenerative AI\nGovernment Claims and Military Law\nHealth Law\nImmigration\nInsurance Law\nIntellectual Property\nJudicial Forum\nLabor and Employment\nLaw Practice Management\nLegal Research and Writing\nLitigation and Appeals\nLocal Government Law\nMedicolegal\nNonprofit Law\nPersonal Injury and Negligence\nProfessional and Business Skills\nReal Estate\nTax\nTechnology Privacy and Cybersecurity\nTrue Crime\nTrusts Estates and Probate\nWorkers Compensation","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{},"type":"select","position":1,"label":"Jurisdiction State","values":"Alabama\nAlaska\nArizona\nArkansas\nCalifornia\nColorado\nConnecticut\nDelaware\nFlorida\nGeorgia\nHawaii\nIdaho\nIllinois\nIndiana\nIowa\nKansas\nKentucky\nLouisiana\nMaine\nMinnesota\nMississippi\nMissouri\nMontana\nNebraska\nNevada\nNew Hampshire\nNew Jersey\nNew Mexico\nNew York\nNorth Carolina\nNorth Dakota\nNorthern Mariana Islands\nOhio\nOklahoma\nOregon\nPennsylvania\nRhode Island\nSouth Carolina\nTennessee\nTexas\nUtah\nVermont\nVeterans Affairs\nVirginia\nWashington\nWest Virginia\nWisconsin\nWyoming","elementCost":{},"page_number":1,"halfwidth":"yes","required":"yes"}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"shopify_plus","shop_shopify_domain":"nbi-sems.myshopify.com"},"form_iYBC6Q4KJ9bzVhLoPloqSA":{"uuid":"iYBC6Q4KJ9bzVhLoPloqSA","form_name":"Copy of Florida Group Pass","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#ffffff","form_title":"\u003ch1 style=\"font-family: Poppins, sans-serif; color: rgb(9, 34, 84); text-align: center; font-weight: 700; font-size: 28px; margin-bottom: 10px;\"\u003eGet started in 2 easy steps\u003c\/h1\u003e\n","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eThank you for your Group Subscription submission!\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\n\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eOur team will be in contact with you shortly. We will work with you to customize a plan that fits your needs. After we connect, we will be able to provide a quote.\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\n\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eWe looking forward to speaking soon!\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"8","back_type":"color","input_back_color":"#edeff3","input_back_color_hover":"#fff","back_shadow":"softDarkShadow","label_font_clr":"#333333","input_font_clr":"#092254","button_align":"centerBtn","button_clr":"#092254","button_back_clr":"#99e2f2","button_border_radius":"15","form_width":"550px","form_border_size":"1","form_border_clr":"#a5a1a1","form_border_radius":"20","label_font_size":"18","input_font_size":"16","button_font_size":"20","form_padding":"20","input_border_color":"#6b7690","input_border_color_hover":"#ccc","btn_border_clr":"#ffffff","btn_border_size":0,"form_name":"Florida Group Pass","":"","form_emails":"OutboundSales@nbi-sems.com","admin_email_subject":"FLORIDA GROUP PASS - New form submission received.","admin_email_message":"Hi [first-name of store owner],\u003cbr\u003eSomeone just submitted a response to your form.\u003cbr\u003ePlease find the details below:","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","banner_img_height":"350","form_banner_alignment":"left","input_font_family":"Poppins","label_font_family":"Poppins","banner_img_width":"350","blocked_emails":"","notification_email_send":true,"after_submit_script":"window.parent.postMessage('hulk_form_submit:Request Quote', '*'); ","form_description":"\u003cp style=\"font-family: 'Poppins', sans-serif; color: #092254; text-align: center; font-size: 16px; margin: 4px 0;\"\u003e1. \u003ca href=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0692\/5998\/5214\/files\/Florida_NBI_and_IPE_Course_Listings_by_Credit.pdf?v=1748633959\" style=\"color: #092254; text-decoration: underline;\" target=\"_blank\"\u003eCheck out our \u003cu\u003eFlorida Compliance Coverage\u003c\/u\u003e\u003c\/a\u003e\u003c\/p\u003e\n\n\u003cp style=\"font-family: 'Poppins', sans-serif; color: #092254; text-align: center; font-size: 16px; margin: 10px 0 4px;\"\u003e2. Request a Quote\u003c\/p\u003e\n","formElements":[{"Conditions":{},"type":"text","position":0,"label":"First Name","required":"yes","halfwidth":"yes","centerfield":"no","page_number":1},{"Conditions":{},"type":"text","position":1,"label":"Last Name","required":"yes","centerfield":"no","page_number":1,"halfwidth":"yes"},{"Conditions":{},"type":"number","position":2,"label":"# of Attorneys","required":"no","maxNumber":"10000","page_number":1,"halfwidth":"yes"},{"Conditions":{},"type":"number","position":3,"label":"# of Paralegals","required":"no","page_number":1,"halfwidth":"yes"},{"type":"email","position":4,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"page_number":1,"confirm_value":"no"},{"Conditions":{},"type":"text","position":5,"label":"Company Name","required":"yes","page_number":1},{"Conditions":{},"type":"phone","position":6,"label":"Phone Number","required":"no","phone_validate_field":"no","page_number":1},{"Conditions":{},"type":"select","position":7,"label":"Primary Practice Area","values":"Accounting and Tax Law\nAlternative Dispute Resolution\nBanking, Finance, and Foreclosure\nBoundary and Easement Law\nBusiness and Corporate Law\nCollections and Bankruptcy Law\nConstruction Law\nCriminal Law\nDisability and Social Security Law\nElder Law\nEnvironmental Law and Energy Law\nEstate Planning\nEthics\/Professional Responsibility\nFamily Law\nGeneral Civil Litigation\/Trial Law\nGeneral Practice\nGovernment Law\nInsurance Defense\nInsurance Law and Disputes\nLabor, Employment, and HR Law\nLand Use and Zoning Law\nLandlord-Tenant Law\nMedicaid Planning\nParalegal\nPersonal Injury\nProbate and Estate Administration\nReal Estate Law\nSchool and Special Education Law\nWorkers’ Compensation\nOther","elementCost":{},"page_number":1,"other_value":"no"}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"shopify_plus","shop_shopify_domain":"nbi-sems.myshopify.com","shop_remove_watermark":false,"shop_created_at":"2024-04-26T08:12:48.103-05:00"},"form_kYaDYDdMqW2j6BfTzejYgQ":{"uuid":"kYaDYDdMqW2j6BfTzejYgQ","form_name":"Email Lead Capture","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003ch2 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#ffffff;\"\u003e\u003cstrong\u003eThank you!\u003c\/strong\u003e\u003c\/span\u003e\u003c\/h2\u003e\n","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"2","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#092254","button_align":"leftBtn","button_clr":"#092254","button_back_clr":"#99e2f2","button_border_radius":"20","form_width":"100%","form_border_size":"2","form_border_clr":"transparent","form_border_radius":"1","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"25","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"transparent","btn_border_size":"1","form_name":"Email Lead Capture","":"jessica.erickson@nbi-sems.com","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","submition_single_email":"yes","label_font_family":"Poppins","input_font_family":"Poppins","after_submit_script":"window.parent.postMessage('hulk_form_submit:Email Lead Capture', '*'); ","formElements":[{"Conditions":{},"type":"headings","position":0,"label":"Label (1)","headings":"\u003ch2\u003e\u003cspan style=\"color:#ffffff;\"\u003e\u003cspan style=\"font-family:Arial;\"\u003e\u003cstrong\u003eStay Up To Date\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/h2\u003e\n","page_number":1},{"Conditions":{},"type":"paragraph","position":1,"label":"Label (2)","page_number":1,"paragraph":"\u003cdiv\u003e\u003cspan style=\"color:#ffffff;\"\u003e\u003cspan style=\"font-family:Arial;\"\u003eSign up to receive exclusive offers, new releases, updates and more!\u003c\/span\u003e\u003c\/span\u003e\u003c\/div\u003e\n"},{"Conditions":{},"type":"text","position":2,"label":"First Name","halfwidth":"yes","required":"yes","page_number":1,"placeholder":"First Name"},{"Conditions":{},"type":"text","position":3,"label":"Last Name","placeholder":"Last Name","halfwidth":"yes","required":"yes","page_number":1},{"type":"email","position":4,"label":"Email Address","required":"yes","email_confirm":"yes","Conditions":{},"page_number":1,"placeholder":"Email Address"},{"Conditions":{},"type":"checkbox","position":5,"label":"\u003cb style=color:#ffffff;\u003eI agree to the  \u003ca href=https:\/\/nbi-sems.com\/pages\/nbi-terms-of-use\u003eTerms \u0026 Conditions\u003c\/a\u003e\u003c\/b\u003e","required":"yes","page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"shopify_plus","shop_shopify_domain":"nbi-sems.myshopify.com","shop_remove_watermark":false,"shop_created_at":"2024-04-26T08:12:48.103-05:00"},"form_LyibItNb677nLivNLN3YoA":{"uuid":"LyibItNb677nLivNLN3YoA","form_name":"Watch This Course ","form_data":{"div_back_gradient_1":"#092254","div_back_gradient_2":"#1b3666","back_color":"#ffffff","form_title":"\u003ch2 style=\"text-align:center;color:#092254;margin:0 0 14px;font:700 24px\/1.2 'Poppins', Arial, sans-serif;\"\u003eGet Your Free Microlessons\u003c\/h2\u003e\n","form_submit":"View Lessons Now","after_submit":"hideAndmessage","after_submit_msg":"\u003ch3\u003e\u003cspan style=\"font-family:Verdana;\"\u003e\u003cspan style=\"color:#000000;\"\u003eThank you for your submission.\u0026nbsp;You will receive the courses through email shortly. Please contact support with questions.\u0026nbsp;\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"20","back_type":"color","input_back_color":"#1b3666","input_back_color_hover":"#d3f0f8","back_shadow":"none","label_font_clr":"#ffffff","input_font_clr":"#092254","button_align":"centerBtn","button_clr":"#fff","button_back_clr":"#0069a5","button_border_radius":"20","form_width":"400px","form_border_size":0,"form_border_clr":"#ffffff","form_border_radius":"10","label_font_size":"14","input_font_size":"12","button_font_size":"18","form_padding":"15","input_border_color":"#ffffff","input_border_color_hover":"#092254","btn_border_clr":"#0069a5","btn_border_size":"3","form_name":"Watch This Course ","":"sales","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","input_font_family":"Poppins","form_description":"\u003cp style=\"text-align:center;color:#092254;margin:0 0 16px;font:400 16px\/1.5 'Poppins', Arial, sans-serif;\"\u003e\u003cstrong\u003e10-minute lessons\u003c\/strong\u003e\u0026nbsp;on cash flow, AI, marketing, and ops. Watch now and start applying the playbooks today.\u003c\/p\u003e\n","label_font_family":"Poppins","banner_img_height":"150","input_placeholder_clr":"#ffffff","formElements":[{"Conditions":{},"type":"text","position":0,"label":"First Name ","halfwidth":"no","required":"yes","page_number":1,"centerfield":"no"},{"Conditions":{},"type":"text","position":1,"label":"Last Name ","halfwidth":"no","required":"yes","page_number":1},{"type":"email","position":2,"label":"Email","required":"yes","email_confirm":"yes","Conditions":{},"page_number":1},{"Conditions":{},"type":"select","position":3,"label":"State","values":"Alabama\nAlaska\nArizona\nArkansas\nCalifornia\nColorado\nConnecticut\nDelaware\nFlorida\nGeorgia\nHawaii\nIdaho\nIllinois\nIndiana\nIowa\nKansas\nKentucky\nLouisiana\nMaine\nMaryland\nMassachusetts\nMichigan\nMinnesota\nMississippi\nMissouri\nMontana\nNebraska\nNevada\nNew Hampshire\nNew Jersey\nNew Mexico\nNew York\nNorth Carolina\nNorth Dakota\nOhio\nOklahoma\nOregon\nPennsylvania\nRhode Island\nSouth Carolina\nSouth Dakota\nTennessee\nTexas\nUtah\nVermont\nVirginia\nWashington\nWest Virginia\nWisconsin\nWyoming","elementCost":{},"required":"yes","page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"shopify_plus","shop_shopify_domain":"nbi-sems.myshopify.com","shop_remove_watermark":false,"shop_created_at":"2024-04-26T08:12:48.103-05:00"},"form_mHu52hDfSoL8MZOI-bgEiQ":{"uuid":"mHu52hDfSoL8MZOI-bgEiQ","form_name":"Contact Us ","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#b3abff","back_color":"#ffffff","form_title":"\u003ch1 style=\"text-align: center;\"\u003e\u003cstrong\u003eContact Us\u003c\/strong\u003e\u003c\/h1\u003e\n\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003cp\u003eThank you for your submission. A team member will reach out shortly.\u0026nbsp;\u003c\/p\u003e\n","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"2","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"centerBtn","button_clr":"#fff","button_back_clr":"#0069a5","button_border_radius":"16","form_width":"900px","form_border_size":"2","form_border_clr":"#c8ced2","form_border_radius":"3","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"16","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Contact Us ","":"segmedina@shopcircle.co","form_description":"\u003cp style=\"text-align: center;\"\u003e\u0026nbsp;\u003c\/p\u003e\n\n\u003cp style=\"text-align: center;\"\u003ePlease feel free to contact us using this form, and we will respond as quickly as possible.\u003c\/p\u003e\n\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e","label_font_family":"Poppins","input_font_family":"Poppins","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","blocked_emails":"","advance_css":"{background-color: #EDEFF3}","after_submit_script":"window.parent.postMessage('hulk_form_submit:Contact Us', '*'); ","formElements":[{"Conditions":{},"type":"headings","position":0,"label":"Label (4)","headings":"\u003ch4\u003e\u003cstrong\u003eCustomer Service\u003c\/strong\u003e\u0026nbsp; \u0026nbsp;\u003c\/h4\u003e\n\n\u003ch3\u003e\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;\u003c\/h3\u003e\n\n\u003cp\u003e\u003cstrong\u003eHours of Operation\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eMonday-Friday\u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp; \u0026nbsp;\u0026nbsp;\u003c\/p\u003e\n\n\u003cp\u003e7:00am - 5:30pm Central Time\u003c\/p\u003e\n\n\u003cp\u003ePhone \u003cu\u003e\u003ca href=\"tel:8009306182\"\u003e(800) 930-6182\u003c\/a\u003e\u003c\/u\u003e\u003c\/p\u003e\n\n\u003cp\u003eFax \u003cu\u003e\u003ca href=\"tel:7158351405\"\u003e(715) 835-1405\u003c\/a\u003e\u003c\/u\u003e\u003c\/p\u003e\n\n\u003cp\u003eEmail \u003cu\u003e\u003ca href=\"mailto:customerservice@nbi-sems.com\"\u003ecustomerservice@nbi-sems.com\u003c\/a\u003e\u003c\/u\u003e\u003c\/p\u003e\n","page_number":1},{"Conditions":{},"type":"headings","position":1,"label":"Label (5)","headings":"\u003cp\u003e\u003cstrong\u003eFAQ\u0026nbsp;\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eTake a look at our \u003cu\u003e\u003ca href=\"https:\/\/nbi-sems.com\/pages\/faqs\"\u003eFAQs\u003c\/a\u003e\u003c\/u\u003e\u0026nbsp;to see if your question has already been answered.\u0026nbsp;\u003c\/p\u003e\n","page_number":1},{"Conditions":{},"type":"headings","position":2,"label":"Label (7)","headings":"\u003cp\u003e\u003cstrong\u003eMailing Address\u0026nbsp;\u003c\/strong\u003e\u003c\/p\u003e\n\n\u003cp\u003eNational Business Institute\u0026nbsp;\u003c\/p\u003e\n\n\u003cp\u003ePO Box 3067\u003c\/p\u003e\n\n\u003cp\u003eEau Claire, WI 54702\u003c\/p\u003e\n","page_number":1},{"Conditions":{},"type":"text","position":3,"label":"Name","halfwidth":"no","centerfield":"no","required":"yes","page_number":1,"customClass":"form-control data-hj-allow"},{"type":"email","position":4,"label":"Email","required":"yes","email_confirm":"yes","Conditions":{},"page_number":1,"customClass":"form-control data-hj-allow"},{"Conditions":{},"type":"number","position":5,"label":"Phone Number","placeholder":"(000) 000 0000","page_number":1,"customClass":"form-control data-hj-allow"},{"Conditions":{},"type":"textarea","position":6,"label":"What can we help you with? ","placeholder":"Please write your questions or problems here. ","page_number":1,"customClass":"form-control data-hj-allow"}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Shopify Plus","shop_shopify_domain":"nbi-sems.myshopify.com"},"form_MKfR9ZgCspvhKa3HmgRqAg":{"uuid":"MKfR9ZgCspvhKa3HmgRqAg","form_name":"Large Firm Sales Inquiry Form","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"\u003ch2 style=\"text-align: center;\"\u003e\u003cstrong\u003eContact Our CLE \u003c\/strong\u003e\u003c\/h2\u003e\n\n\u003ch2 style=\"text-align: center;\"\u003e\u003cstrong\u003eExperts\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e","form_submit":"Request Information Today!","after_submit":"hideAndmessage","after_submit_msg":"\u003ch3 center=\"\" style=\"text-align: center;\"\u003e\u003cstrong\u003eThank you for your submisson! Our team will be in contact shortly.\u0026nbsp;\u003c\/strong\u003e\u003c\/h3\u003e\n","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"2","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"centerBtn","button_clr":"#fff","button_back_clr":"#0069a5","button_border_radius":"21","form_width":"600px","form_border_size":"2","form_border_clr":"#c7c7c7","form_border_radius":"1","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"35","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Large Firm Sales Inquiry Form","":"laura.han","form_emails":"outboundsales@nbi-sems.com","form_description":"\u003cp style=\"text-align: center;\"\u003e\u0026nbsp;\u003c\/p\u003e\n\n\u003cp style=\"text-align: center;\"\u003eWe pride ourselves on building custom CLE solutions for legal teams of all sizes.\u0026nbsp; A group CLE team member can help customize your package to your unique needs.\u0026nbsp;\u003c\/p\u003e\n\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e","image_url":"https:\/\/form-builder-by-hulkapps.s3.amazonaws.com\/uploads\/form_template_image\/form_template\/45\/d-koi-_3yUyAOg_ZY-unsplash.jpg","admin_email_subject":"New form submission received.","admin_email_message":"Hi [first-name of store owner],\u003cbr\u003eSomeone just submitted a response to your form.\u003cbr\u003ePlease find the details below:","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","blocked_emails":"","notification_email_send":true,"after_submit_url":"https:\/\/nbi-sems.myshopify.com\/","after_submit_script":"window.parent.postMessage('hulk_form_submit:Large Firm Sales Inquiry Form', '*'); ","formElements":[{"Conditions":{},"type":"text","position":0,"label":"First Name","required":"yes","halfwidth":"yes","page_number":1},{"Conditions":{},"type":"text","position":1,"label":"Last Name","required":"yes","halfwidth":"yes","page_number":1},{"type":"email","position":2,"label":"Email","required":"yes","email_confirm":"yes","Conditions":{},"page_number":1},{"Conditions":{},"type":"text","position":3,"label":"Company Name","required":"no","page_number":1},{"Conditions":{},"type":"number","position":4,"label":"Phone Number","required":"no","page_number":1},{"Conditions":{},"type":"text","position":5,"label":"State","required":"no","page_number":1},{"Conditions":{},"type":"text","position":6,"label":"Number of Attorneys","halfwidth":"yes","required":"no","page_number":1},{"Conditions":{},"type":"text","position":7,"label":"Number of Paralegals","required":"no","halfwidth":"yes","page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"shopify_plus","shop_shopify_domain":"nbi-sems.myshopify.com","shop_remove_watermark":false,"shop_created_at":"2024-04-26T08:12:48.103-05:00"},"form_NqKPpGt2bBvHXQ0YX0hQWg":{"uuid":"NqKPpGt2bBvHXQ0YX0hQWg","form_name":"AI Readiness Form","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"\u003cdiv style=\"font-family: Poppins, sans-serif; font-size: 20px; font-weight: 400; line-height: 1.3; margin: 0px 0px 8px; color: rgb(9, 34, 84); text-align: center;\"\u003eGet Your \u003cstrong style=\"font-weight: 700;\"\u003eFREE Legal AI Readiness Scorecard\u003c\/strong\u003e\u003c\/div\u003e\n","form_submit":"Get Your Scorecard","after_submit":"redirect","after_submit_msg":"\u003cp\u003eThank you for your submission!\u003c\/p\u003e\n","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"10","back_type":"color","input_back_color":"#edeff3","input_back_color_hover":"#fff","back_shadow":"softDarkShadow","label_font_clr":"#092254","input_font_clr":"#092254","button_align":"centerBtn","button_clr":"#fff","button_back_clr":"#b72544","button_border_radius":"20","form_width":"800px","form_border_size":"2","form_border_clr":"#b8b4b4","form_border_radius":"30","label_font_size":"12","input_font_size":"12","button_font_size":"20","form_padding":"15","input_border_color":"#092254","input_border_color_hover":"#092254","btn_border_clr":"#ffffff","btn_border_size":"5","form_name":"AI Readiness Form","":"","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","form_description":"\u003cdiv style=\"font-family: 'Poppins', sans-serif; color: #092254 !important; text-align: center;\"\u003e\n\u003cdiv style=\"font-size: 16px; line-height: 1.6; font-style: italic; margin-bottom: 8px;\"\u003eBenchmark your knowledge, ethical awareness, and practice integration in under \u003cstrong\u003e5 minutes.\u003c\/strong\u003e\u003c\/div\u003e\n\n\u003cdiv style=\"font-size: 16px; margin-bottom: 6px;\"\u003eYou\u0026rsquo;ll receive a personalized score card showing:\u003c\/div\u003e\n\n\u003cdiv style=\"font-size: 16px; line-height: 1.6;\"\u003e\u0026bull; Your current Legal AI readiness level\u003cbr \/\u003e\n\u0026bull; Strengths, gaps, and opportunities\u003cbr \/\u003e\n\u0026bull; Personalized next steps to help you advance\u003c\/div\u003e\n\u003c\/div\u003e\n","form_banner_alignment":"left","input_font_family":"Poppins","label_font_family":"Poppins","after_submit_url":"https:\/\/nbi-sems.com\/products\/101035","openinnewtab":"yes","flow_trigger_integration":"no","formElements":[{"Conditions":{},"type":"text","position":0,"label":"First Name","placeholder":"First Name","required":"yes","page_number":1,"halfwidth":"yes"},{"Conditions":{},"type":"text","position":1,"label":"Last Name","placeholder":"Last Name","page_number":1,"halfwidth":"yes","required":"yes"},{"Conditions":{},"type":"email","position":2,"required":"yes","email_confirm":"no","placeholder":"Email Address","confirm_value":"no","label":"Email Address","page_number":1},{"Conditions":{},"type":"text","position":3,"label":"Role","placeholder":"Role","required":"no","page_number":1,"halfwidth":"no"},{"Conditions":{},"type":"select","position":4,"label":"State","halfwidth":"no","placeholder":"State","values":"Alabama\nAlaska\nArizona\nArkansas\nCalifornia\nColorado\nConnecticut\nDelaware\nFlorida\nGeorgia\nHawaii\nIdaho\nIllinois\nIndiana\nIowa\nKansas\nKentucky\nLouisiana\nMaine\nMinnesota\nMississippi\nMissouri\nMontana\nNebraska\nNevada\nNew Hampshire\nNew Jersey\nNew Mexico\nNew York\nNorth Carolina\nNorth Dakota\nOhio\nOklahoma\nOregon\nPennsylvania\nRhode Island\nSouth Carolina\nTennessee\nTexas\nUtah\nVermont\nVirginia\nWashington\nWest Virginia\nWisconsin\nWyoming","elementCost":{},"page_number":1},{"Conditions":{},"type":"paragraph","position":5,"label":"Label (9)","paragraph":"\u003cdiv style=\"font-family: Poppins, sans-serif; font-size: 12px; line-height: 1.4; color: rgb(9, 34, 84); margin-top: 12px; text-align: center;\"\u003eBy continuing, you agree to our \u003ca href=\"https:\/\/nbi-sems.com\/pages\/nbi-terms-of-use\" style=\"color: #092254; text-decoration: underline;\" target=\"_blank\"\u003eTerms \u0026amp; Conditions\u003c\/a\u003e and \u003ca href=\"https:\/\/nbi-sems.com\/pages\/privacy-policy\" style=\"color: #092254; text-decoration: underline;\" target=\"_blank\"\u003ePrivacy Policy\u003c\/a\u003e. You can unsubscribe at any time.\u003c\/div\u003e\n","page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"shopify_plus","shop_shopify_domain":"nbi-sems.myshopify.com","shop_remove_watermark":false,"shop_created_at":"2024-04-26T08:12:48.103-05:00"},"form_PjxixVNHzeOoOagZFAxntw":{"uuid":"PjxixVNHzeOoOagZFAxntw","form_name":"Request a Quote","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#ffffff","form_title":"\u003cp style=\"text-align: center;\"\u003e\u003cspan style=\"color:#092254;\"\u003e\u003cbig\u003e\u003cstrong\u003eRequest a Quote\u003c\/strong\u003e\u003c\/big\u003e\u003c\/span\u003e\u003c\/p\u003e\n","form_submit":"Submit","after_submit":"hideAndmessage","after_submit_msg":"\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003e\u003cstrong\u003eThank you for your Group Subscription request!\u003c\/strong\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\n\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eOur team will be in touch soon\u0026mdash;please watch for an email from us.\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n\n\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#003366;\"\u003e\u003cspan style=\"font-family:Tahoma;\"\u003eWe look forward to working with you to create a customized plan that fits your needs.\u003c\/span\u003e\u003c\/span\u003e\u003c\/h3\u003e\n","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"8","back_type":"color","input_back_color":"#edeff3","input_back_color_hover":"#fff","back_shadow":"softDarkShadow","label_font_clr":"#333333","input_font_clr":"#092254","button_align":"centerBtn","button_clr":"#092254","button_back_clr":"#99e2f2","button_border_radius":"15","form_width":"600px","form_border_size":0,"form_border_clr":"#ffffff","form_border_radius":"20","label_font_size":"16","input_font_size":"13","button_font_size":"18","form_padding":"20","input_border_color":"#6b7690","input_border_color_hover":"#ccc","btn_border_clr":"#99e2f2","btn_border_size":0,"form_name":"Request a Quote","":"","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","banner_img_height":"350","form_banner_alignment":"left","input_font_family":"Poppins","label_font_family":"Poppins","banner_img_width":"350","blocked_emails":"","after_submit_script":"window.parent.postMessage('hulk_form_submit:Request Quote', '*'); ","formElements":[{"Conditions":{},"type":"text","position":0,"label":"First Name","required":"yes","halfwidth":"yes","centerfield":"no","page_number":1},{"Conditions":{},"type":"text","position":1,"label":"Last Name","halfwidth":"yes","required":"yes","page_number":1},{"Conditions":{},"type":"number","position":2,"label":"# of Attorneys","required":"no","maxNumber":"10000","page_number":1,"halfwidth":"yes"},{"Conditions":{},"type":"number","position":3,"label":"# of Paralegals","required":"no","page_number":1,"halfwidth":"yes"},{"type":"email","position":4,"label":"Email","required":"yes","email_confirm":"no","Conditions":{},"page_number":1,"confirm_value":"no","halfwidth":"no"},{"Conditions":{},"type":"text","position":5,"label":"Company Name","required":"yes","page_number":1,"halfwidth":"no"},{"Conditions":{},"type":"select","position":6,"label":"State","option_sets":"state","values":"Alabama\nAlaska\nArizona\nArkansas\nByram\nCalifornia\nCokato\nColorado\nConnecticut\nDelaware\nDistrict of Columbia\nFlorida\nGeorgia\nHawaii\nIdaho\nIllinois\nIndiana\nIowa\nKansas\nKentucky\nLouisiana\nLowa\nMaine\nMaryland\nMassachusetts\nMedfield\nMichigan\nMinnesota\nMississippi\nMissouri\nMontana\nNebraska\nNevada\nNew Hampshire\nNew Jersey\nNew Jersy\nNew Mexico\nNew York\nNorth Carolina\nNorth Dakota\nOhio\nOklahoma\nOntario\nOregon\nPennsylvania\nRamey\nRhode Island\nSouth Carolina\nSouth Dakota\nSublimity\nTennessee\nTexas\nTrimble\nUtah\nVermont\nVirginia\nWashington\nWest Virginia\nWisconsin\nWyoming","elementCost":{},"option_country":"475","required":"yes","page_number":1,"halfwidth":"no"},{"Conditions":{},"type":"phone","position":7,"label":"Phone Number","required":"no","phone_validate_field":"no","page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"nbi-sems.myshopify.com"},"form_plgRH2Ix4ALf5gXT_4MEBA":{"uuid":"plgRH2Ix4ALf5gXT_4MEBA","form_name":"Advanced Search","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#0069a5","form_title":"\u003ch2 style=\"text-align: center;\"\u003e\u003cfont color=\"#ffffff\"\u003eFind the Courses You Need\u003c\/font\u003e\u003c\/h2\u003e\n","form_submit":"Get Your Courses \u003e","after_submit":"clearAndAllow","after_submit_msg":"","captcha_enable":"no","label_style":"blockLabels","input_border_radius":"10","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#ffffff","back_shadow":"none","label_font_clr":"#ffffff","input_font_clr":"#333333","button_align":"centerBtn","button_clr":"#092254","button_back_clr":"#99e2f2","button_border_radius":"20","form_width":"60%","form_border_size":"2","form_border_clr":"#99e2f2","form_border_radius":"30","label_font_size":"16","input_font_size":"14","button_font_size":"18","form_padding":"20","input_border_color":"#0069a5","input_border_color_hover":"#0069a5","btn_border_clr":"#092254","btn_border_size":"1","form_name":"Advanced Search","":"matt.mansfield@nbi-sems.com","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","after_submit_script":"window.parent.postMessage('hulk_form_submit:Advanced Search', '*'); ","form_timer_sec":"5","form_load_as_popup":"no","advance_js":"(function () {\n  \/\/ ===== URL-ONLY PRESELECT (Jurisdiction) =====\n  const CONFIG_PRESELECT = [{ field: 'Jurisdiction State', critical: true }];\n\n  \/\/ ---------- robust conditional triggers ----------\n  function fireAllEvents(el){\n    if (!el) return;\n    el.dispatchEvent(new Event('input',  { bubbles: true }));\n    el.dispatchEvent(new Event('change', { bubbles: true }));\n    setTimeout(() =\u003e el.dispatchEvent(new Event('change', { bubbles: true })), 0);\n    setTimeout(() =\u003e el.dispatchEvent(new Event('blur',   { bubbles: true })), 10);\n  }\n  function clickStyledProxyIfAny(selectEl){\n    const wrapper = selectEl.closest('.formElement, .form-group, [id^=\"conditionInclude_\"]') || selectEl.parentElement;\n    const proxy = wrapper?.querySelector('[role=\"combobox\"], .select2-selection, .choices, .custom-select');\n    if (proxy \u0026\u0026 typeof proxy.click === 'function') { try { proxy.click(); } catch {} }\n  }\n\n  \/\/ ---------- state lists ----------\n  const US_STATE_NAMES = [\n    'Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut','Delaware','Florida','Georgia',\n    'Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky','Louisiana','Maine','Maryland',\n    'Massachusetts','Michigan','Minnesota','Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire',\n    'New Jersey','New Mexico','New York','North Carolina','North Dakota','Ohio','Oklahoma','Oregon','Pennsylvania',\n    'Rhode Island','South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington',\n    'West Virginia','Wisconsin','Wyoming','District of Columbia'\n  ];\n  const US_STATE_ABBRS = {\n    AL:'Alabama', AK:'Alaska', AZ:'Arizona', AR:'Arkansas', CA:'California', CO:'Colorado', CT:'Connecticut',\n    DE:'Delaware', FL:'Florida', GA:'Georgia', HI:'Hawaii', ID:'Idaho', IL:'Illinois', IN:'Indiana', IA:'Iowa',\n    KS:'Kansas', KY:'Kentucky', LA:'Louisiana', ME:'Maine', MD:'Maryland', MA:'Massachusetts', MI:'Michigan',\n    MN:'Minnesota', MS:'Mississippi', MO:'Missouri', MT:'Montana', NE:'Nebraska', NV:'Nevada', NH:'New Hampshire',\n    NJ:'New Jersey', NM:'New Mexico', NY:'New York', NC:'North Carolina', ND:'North Dakota', OH:'Ohio',\n    OK:'Oklahoma', OR:'Oregon', PA:'Pennsylvania', RI:'Rhode Island', SC:'South Carolina', SD:'South Dakota',\n    TN:'Tennessee', TX:'Texas', UT:'Utah', VT:'Vermont', VA:'Virginia', WA:'Washington', WV:'West Virginia',\n    WI:'Wisconsin', WY:'Wyoming', DC:'District of Columbia'\n  };\n\n  \/\/ ---------- query helpers (frame + referrer_url) ----------\n  function getParamHere(name) {\n    try { return new URLSearchParams(location.search).get(name) || null; } catch { return null; }\n  }\n  function getParamFromReferrer(name) {\n    try {\n      const ref = getParamHere('referrer_url');\n      if (!ref) return null;\n      const u = new URL(ref);\n      return new URLSearchParams(u.search).get(name) || null;\n    } catch { return null; }\n  }\n  function normalizeMaybeState(raw){\n    if (!raw) return null;\n    const t = String(raw).trim();\n\n    const byName = US_STATE_NAMES.find(s =\u003e s.toLowerCase() === t.toLowerCase());\n    if (byName) return byName;\n\n    if (\/^[A-Za-z]{2}$\/.test(t)) {\n      const full = US_STATE_ABBRS[t.toUpperCase()];\n      if (full) return full;\n    }\n\n    const pretty = t.replace(\/[-_]+\/g, ' ').replace(\/\\s+\/g, ' ').trim();\n    const cap = pretty.replace(\/\\b\\w\/g, m =\u003e m.toUpperCase());\n    if (US_STATE_NAMES.includes(cap)) return cap;\n\n    const stripped = t.replace(\/\\s+cle$\/i, '').trim();\n    const byName2 = US_STATE_NAMES.find(s =\u003e s.toLowerCase() === stripped.toLowerCase());\n    if (byName2) return byName2;\n\n    return null;\n  }\n  function resolveStateFromQueryOnly(){\n    const tryKeys = ['state','jurisdiction','cle_state'];\n    for (const k of tryKeys) {\n      const here = getParamHere(k);\n      const nHere = normalizeMaybeState(here);\n      if (nHere) return nHere;\n\n      const refVal = getParamFromReferrer(k);\n      const nRef = normalizeMaybeState(refVal);\n      if (nRef) return nRef;\n    }\n    return null;\n  }\n\n  \/\/ ---------- find\/set selects ----------\n  function findSelectByNameOrLabel(fieldName, root = document) {\n    let sel = root.querySelector(`form select[name=\"${fieldName}\"]`) ||\n              root.querySelector(`form select[name*=\"${fieldName}\"]`);\n    if (sel) return sel;\n\n    const labels = Array.from(root.querySelectorAll('form label'));\n    const match = labels.find(l =\u003e {\n      const t = (l.textContent || '').toLowerCase();\n      return t.includes('jurisdiction') \u0026\u0026 t.includes('state');\n    });\n    if (match) {\n      const forId = match.getAttribute('for');\n      if (forId) {\n        const byFor = document.getElementById(forId);\n        if (byFor \u0026\u0026 byFor.tagName === 'SELECT') return byFor;\n      }\n      const near = match.closest('div,fieldset,section')?.querySelector('select');\n      if (near) return near;\n    }\n\n    sel = root.querySelector('form select[data-label*=\"Jurisdiction\" i][data-label*=\"State\" i]');\n    return sel || null;\n  }\n\n  function normalizeOptionText(s){\n    return (s || '')\n      .replace(\/\\s+cle$\/i, '')\n      .replace(\/\\s*\\(\\s*[A-Z]{2}\\s*\\)\\s*$\/, '')\n      .trim()\n      .toLowerCase();\n  }\n\n  function setSelectValue(selectEl, desired) {\n    if (!selectEl || !desired) return false;\n\n    const desiredTxt = desired.trim().toLowerCase();\n    const desiredVariants = new Set([\n      desiredTxt,\n      (desired + ' CLE').trim().toLowerCase(),\n      (desired + ' cle').trim().toLowerCase()\n    ]);\n\n    const opts = Array.from(selectEl.options);\n\n    let target = opts.find(o =\u003e {\n      const v = normalizeOptionText(o.value);\n      const t = normalizeOptionText(o.textContent);\n      return desiredVariants.has(v) || desiredVariants.has(t) || v === desiredTxt || t === desiredTxt;\n    });\n\n    if (!target) {\n      target = opts.find(o =\u003e {\n        const v = normalizeOptionText(o.value);\n        const t = normalizeOptionText(o.textContent);\n        return v.startsWith(desiredTxt) || t.startsWith(desiredTxt);\n      });\n    }\n\n    if (!target) return false;\n\n    selectEl.value = target.value;\n    fireAllEvents(selectEl);\n    clickStyledProxyIfAny(selectEl);\n    return true;\n  }\n\n  \/\/ ---------- reinforce selection across async Hulk renders ----------\n  function reinforceSelection(selectEl, desired, attempts = 8) {\n    if (!attempts || !selectEl || !desired) return;\n    setTimeout(() =\u003e {\n      setSelectValue(selectEl, desired);\n      requestAnimationFrame(() =\u003e {\n        setSelectValue(selectEl, desired);\n        reinforceSelection(selectEl, desired, attempts - 1);\n      });\n    }, attempts \u003c= 4 ? 140 : 70);\n  }\n\n  \/\/ ---------- preselect driver (URL-only) ----------\n  function preselectDropdowns(configs) {\n    if (!Array.isArray(configs) || !configs.length) return;\n\n    const tryAll = () =\u003e {\n      let ok = true;\n      for (const cfg of configs) {\n        const sel = findSelectByNameOrLabel(cfg.field);\n        if (!sel) { ok = false; continue; }\n\n        const desired = resolveStateFromQueryOnly();\n        if (!desired) { ok = false; continue; }\n\n        const changed = setSelectValue(sel, desired);\n        if (changed) {\n          if (cfg.critical) reinforceSelection(sel, desired);\n        } else {\n          ok = false;\n        }\n      }\n      return ok;\n    };\n\n    if (tryAll()) return;\n\n    if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', tryAll, { once: true });\n    } else {\n      tryAll();\n    }\n\n    const obs = new MutationObserver(() =\u003e {\n      if (tryAll()) obs.disconnect();\n    });\n    obs.observe(document.documentElement, { childList: true, subtree: true });\n  }\n\n  \/\/ ====== Topic → Subtopics mapping (exact labels) ======\n  const TOPIC_SUBTOPICS = {\n    'Accounting': ['General Accounting'],\n    'Banking \u0026 Finance': [\n      'Consumer Protection (Financial)','Corporate Finance','Financial Crimes',\n      'Foreclosure \u0026 Mortgage Lending','General Banking \u0026 Finance'\n    ],\n    'Bankruptcy, Foreclosure \u0026 Collection Law': [\n      'Collection Law \u0026 Creditors\\' Rights','Consumer Bankruptcy','Corporate Bankruptcy',\n      'Foreclosure Law','General Bankruptcy, Foreclosure \u0026 Collection Law','Student Loan Law'\n    ],\n    'Business \u0026 Securities Law': [\n      'Agriculture','Business Contracts','Business Organizations','Business Tax','Corporate Governance',\n      'General Business \u0026 Securities Law','Mergers \u0026 Acquisitions','Securities','Shareholder Disputes\/Litigation',\n      'Small Business','White Collar Crime'\n    ],\n    'Cannabis Law': ['General Cannabis Law'],\n    'Constitutional Law': ['General Constitutional Law'],\n    'Construction Law': ['General Construction Law'],\n    'Consumer Law': ['General Consumer Law'],\n    'Contract Law': ['General Contract Law'],\n    'Criminal Law': ['General Criminal Law'],\n    'Disability \u0026 Social Security': ['General Disability \u0026 Social Security'],\n    'Education Law': ['General Education Law','Special Education','Student Discipline'],\n    'Elder Law': [\n      'General Elder Law','Guardianships','Medicaid \u0026 Long-Term Care Planning','Military \u0026 Veterans','POAs \u0026 Advance Directives'\n    ],\n    'Entertainment, Art \u0026 Sports Law': ['General Entertainment, Art \u0026 Sports Law'],\n    'Environmental Law': ['General Environmental Law'],\n    'Ethics \u0026 Specialty Credits': [\n      'Civility \u0026 Professionalism','Confidentiality \u0026 Privilege','Conflicts of Interest',\n      'Elimination of Bias\/Diversity','Ethics \u0026 Technology','General Ethics \u0026 Specialty Credits',\n      'Wellness \u0026 Substance Abuse'\n    ],\n    'Family Law': [\n      'Adoption, ART \u0026 Surrogacy','Child Advocacy','Child Custody','General Family Law','Marital Agreements','Marital Dissolution'\n    ],\n    'Firearms Law': ['General Firearms Law'],\n    'Food \u0026 Beverage Law': ['General Food \u0026 Beverage Law'],\n    'Generative AI': ['General Generative AI'],\n    'Government Claims \u0026 Military Law': ['General Government Claims \u0026 Military Law'],\n    'Health Law': ['General Health Law'],\n    'Immigration': ['General Immigrations'],\n    'Insurance Law': [\n      'Bad Faith','Business Insurance','General Insurance Law','Insurance Claims','Insurance Coverage Litigation',\n      'Life\/Health Insurance','Property\/Title Insurance','Subrogation','Vehicle Insurance'\n    ],\n    'Intellectual Property': ['Copyright','General Intellectual Property','Patent','Trademark'],\n    'Judicial Forum': ['Civil Court'],\n    'Labor \u0026 Employment': [\n      'Discrimination \u0026 Harassment','Employee Privacy','Employment Contracts','Employment Litigation',\n      'General Labor \u0026 Employment','Health \u0026 Safety','Hiring \u0026 Termination','Human Resources',\n      'Leave Management','Wage \u0026 Hour','Workplace Investigations'\n    ],\n    'Law Practice Management': ['General Law Practice Management'],\n    'Legal Research \u0026 Writing': ['General Legal Research \u0026 Writing'],\n    'Litigation \u0026 Appeals': [\n      'Appellate Practice','Discovery','E-Discovery','Evidence','Federal Litigation','General Litigation \u0026 Appeals',\n      'Mediation\/Arbitration\/ADR','Motions','Trial Practice'\n    ],\n    'Local Government Law': ['General Local Government Law'],\n    'Medicolegal': ['General Medicolegal'],\n    'Nonprofit Law': ['General Nonprofit Law'],\n    'Personal Injury \u0026 Negligence': [\n      'Damages','General Personal Injury \u0026 Negligence','Liens \u0026 Subrogation','Medical Malpractice',\n      'Negotiations \u0026 Advocacy','Nursing Home','Premises Liability','Product Liability','Vehicle Injury','Wrongful Death'\n    ],\n    'Professional \u0026 Business Skills': ['General Professional \u0026 Business Skills'],\n    'Real Estate': [\n      'Condominium\/HOA','Easements \u0026 Boundaries','Foreclosure Law','General Real Estate','Housing Law',\n      'Land Use \u0026 Zoning','Landlord-Tenant Law','Oil, Gas \u0026 Energy','Real Estate Contracts','Real Estate Development',\n      'Real Estate Investment','Real Estate Leasing','Real Estate Tax','Real Estate Transactions','Title Law \u0026 Title Insurance'\n    ],\n    'Tax': [\n      'Business Tax','General Tax','Income \u0026 Capital Gains Tax','Real Estate Tax','Sales \u0026 Use Tax',\n      'Tax Disputes \u0026 Litigation','Taxation of Trusts \u0026 Estates'\n    ],\n    'Technology, Privacy \u0026 Cybersecurity': ['General Technology, Privacy \u0026 Cybersecurity'],\n    'True Crime': ['General True Crime'],\n    'Trusts, Estates \u0026 Probate': [\n      'Asset Protection','Charitable Planning','Disputes \u0026 Probate Litigation','Estate Planning',\n      'General Trusts, Estates \u0026 Probate','Probate \u0026 Estate Administration','Taxation of Trusts \u0026 Estates','Trusts'\n    ],\n    \"Workers' Compensation\": [\"General Workers' Compensation\"]\n  };\n\n  \/\/ ---------- topic key resolver ----------\n  function normalizeTopicKey(s){\n    return (s || '')\n      .replace(\/%27\/gi, \"'\")\n      .replace(\/[\\u2019\\u2018\\u2032\\u2035\\u02B9\\u0060]\/g, \"'\")\n      .replace(\/\\s+\/g, ' ')\n      .trim()\n      .toLowerCase();\n  }\n  function resolveTopicKey(topicLabel){\n    if (!topicLabel) return null;\n    if (Object.prototype.hasOwnProperty.call(TOPIC_SUBTOPICS, topicLabel)) return topicLabel;\n    const want = normalizeTopicKey(topicLabel);\n    const exact = Object.keys(TOPIC_SUBTOPICS).find(k =\u003e normalizeTopicKey(k) === want);\n    if (exact) return exact;\n    const stripApos = s =\u003e normalizeTopicKey(s).replace(\/'\/g, '');\n    const looser = Object.keys(TOPIC_SUBTOPICS).find(k =\u003e stripApos(k) === stripApos(topicLabel));\n    return looser || null;\n  }\n\n  function onReady(fn){ if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); }\n\n  onReady(function () {\n    \/\/ Preselect ASAP so dependent fields appear (only if URL param present)\n    preselectDropdowns(CONFIG_PRESELECT);\n\n    const form = document.querySelector('form');\n    if (!form) return;\n\n    const q  = (sel, root=form) =\u003e root.querySelector(sel);\n    const qa = (sel, root=form) =\u003e Array.from(root.querySelectorAll(sel));\n\n    \/\/ Require Jurisdiction State\n    const stateSelect = q('select[name=\"Jurisdiction State\"]') || q('select[name*=\"Jurisdiction\"][name*=\"State\"]');\n    if (stateSelect) stateSelect.setAttribute('required', 'true');\n\n    \/\/ --- utils for builder ---\n    function normalizeState(state){\n      state = (state || '').trim();\n      return state ? (state.endsWith(' CLE') ? state : `${state} CLE`) : '';\n    }\n    function ensureErrorBelow(targetEl, id){\n      if (!targetEl) return null;\n      let err = document.getElementById(id);\n      if (!err) {\n        err = document.createElement('div');\n        err.id = id;\n        err.style.color = '#ffffff';\n        err.style.fontSize = '12px';\n        err.style.lineHeight = '1.2';\n        err.style.marginTop = '4px';\n      }\n      if (err.parentElement) err.parentElement.removeChild(err);\n      targetEl.insertAdjacentElement('afterend', err);\n      return err;\n    }\n    function showFieldError(targetEl, id, msg){\n      const err = ensureErrorBelow(targetEl, id);\n      if (err) err.textContent = msg || '';\n      if (targetEl) targetEl.setAttribute('aria-invalid', msg ? 'true' : 'false');\n    }\n    function clearFieldError(targetEl, id){\n      const err = document.getElementById(id);\n      if (err) err.textContent = '';\n      if (targetEl) targetEl.setAttribute('aria-invalid', 'false');\n    }\n\n    function normalizeFormat(label){\n      const key = (label || '').trim().toLowerCase();\n      if (!key || key === 'please select' || key === 'all cle courses') return '';\n      if (key === 'ondemand' || key === 'on demand') return 'OnDemand';\n      if (key.includes('live online') || key.includes('live webinar') || key.includes('upcoming live webinars') || key === 'webinar') return 'Live Online';\n      if (key.includes('in-person') || key === 'live in person' || key === 'live in-person') return 'Live In-Person';\n      return (label || '').trim();\n    }\n    function getCourseFormat(){\n      let selects = qa('select[name=\"Course Format\"]');\n      if (!selects.length) selects = qa('select[name*=\"Course\"][name*=\"Format\"]');\n      for (const s of selects) {\n        const raw = (s.value || '').trim();\n        if (raw) return normalizeFormat(raw);\n      }\n      return '';\n    }\n    function getCreditType(){\n      let selects = qa('select[name=\"Credit Type\"]');\n      if (!selects.length) selects = qa('select[name*=\"Credit\"][name*=\"Type\"]');\n      for (const s of selects) {\n        const val = (s.value || '').trim();\n        if (val) return val;\n      }\n      return '';\n    }\n    function getCourseTopic(){\n      const el = q('select[name=\"Course Topic\"]') || q('select[name*=\"Course\"][name*=\"Topic\"]');\n      if (!el) return '';\n      const rawText = (el.options[el.selectedIndex]?.textContent || '').trim();\n      const rawVal  = (el.value || '').trim();\n      const raw = rawText || rawVal;\n      return raw\n        .replace(\/%27\/gi, \"'\")\n        .replace(\/[\\u2019\\u2018\\u2032\\u2035\\u02B9\\u0060]\/g, \"'\")\n        .replace(\/\\s+\/g, ' ')\n        .trim();\n    }\n\n    \/\/ Clear state error on change\n    stateSelect?.addEventListener('change', () =\u003e clearFieldError(stateSelect, 'jurisdiction-state-error'));\n\n    \/\/ --- URL build ---\n    function buildUrl(){\n      const baseUrl    = 'https:\/\/nbi-sems.com\/search';\n      const keyword    = (q('input[name=\"Keyword\"]')?.value || '').trim();\n      const stateRaw   = stateSelect?.value || '';\n      const formatVal  = getCourseFormat();\n      const creditType = getCreditType();\n      const topicLabel = getCourseTopic();\n\n      const state = normalizeState(stateRaw);\n      const params = new URLSearchParams();\n\n      if (state) params.append('refinementList[meta.custom.cle_state][0]', state);\n      if (formatVal) params.append('refinementList[named_tags.format][0]', formatVal);\n      if (state \u0026\u0026 creditType) params.append('refinementList[meta.custom.credit_type][0]', `${state}: ${creditType}`);\n      if (keyword) params.append('q', keyword);\n\n      \/\/ Include all subtopics for the chosen topic\n      try {\n        if (topicLabel) {\n          const key  = resolveTopicKey(topicLabel);\n          const subs = key ? TOPIC_SUBTOPICS[key] : [];\n          if (subs \u0026\u0026 subs.length) {\n            const literalTopic = (key || topicLabel)\n              .replace(\/%27\/gi, \"'\")\n              .replace(\/[\\u2019\\u2018\\u2032\\u2035\\u02B9\\u0060]\/g, \"'\")\n              .replace(\/\\s+\/g, ' ')\n              .trim();\n\n            const added = new Set();\n            let idx = 0;\n            subs.forEach((sub) =\u003e {\n              const literalSub = String(sub)\n                .replace(\/%27\/gi, \"'\")\n                .replace(\/[\\u2019\\u2018\\u2032\\u2035\\u02B9\\u0060]\/g, \"'\")\n                .replace(\/\\s+\/g, ' ')\n                .trim();\n\n              const facet = `${literalTopic}: ${literalSub}`;\n              if (!added.has(facet)) {\n                params.append(`refinementList[meta.custom.topic_subtopic][${idx}]`, facet);\n                added.add(facet);\n                idx += 1;\n              }\n            });\n          }\n        }\n      } catch {}\n\n      const url = params.toString() ? `${baseUrl}?${params.toString()}` : baseUrl;\n      return { url, hasState: !!state };\n    }\n\n    \/\/ ---------------- SUCCESS WATCH (network + DOM) ----------------\n    let pendingRedirectUrl = null;\n    let redirected = false;\n    let watcherStarted = false;\n\n    function doRedirect(){\n      if (redirected || !pendingRedirectUrl) return;\n      redirected = true;\n      teardownNetworkWatchers();\n      const target = (window.top \u0026\u0026 window.top !== window) ? window.top : window;\n      try { target.location.assign(pendingRedirectUrl); }\n      catch { target.location.href = pendingRedirectUrl; }\n    }\n\n    \/\/ Network watchers\n    let restoreFetch = null;\n    let restoreXHR = null;\n\n    function isHulkEndpoint(url){\n      try {\n        const u = new URL(url, location.href);\n        const host = u.hostname;\n        return \/hulkapps|formbuilder|hulkform\/i.test(host) || \/\\\/formbuilder\\\/\/i.test(u.pathname);\n      } catch { return false; }\n    }\n\n    function setupNetworkWatchers(){\n      if (!restoreFetch \u0026\u0026 'fetch' in window) {\n        const origFetch = window.fetch;\n        window.fetch = function(input, init){\n          let url = typeof input === 'string' ? input : (input?.url || '');\n          const method = (init?.method || '').toUpperCase() || 'GET';\n          return origFetch(input, init).then(resp =\u003e {\n            try {\n              if (isHulkEndpoint(url) \u0026\u0026 (method === 'POST' || method === 'PUT')) {\n                if (resp.ok) setTimeout(doRedirect, 50);\n              }\n            } catch {}\n            return resp;\n          });\n        };\n        restoreFetch = () =\u003e { window.fetch = origFetch; };\n      }\n\n      if (!restoreXHR \u0026\u0026 'XMLHttpRequest' in window) {\n        const OrigXHR = window.XMLHttpRequest;\n        function PatchedXHR(){\n          const xhr = new OrigXHR();\n          let _method = 'GET';\n          let _url = '';\n          const origOpen = xhr.open;\n          xhr.open = function(method, url){\n            _method = (method || 'GET').toUpperCase();\n            _url = url || '';\n            return origOpen.apply(xhr, arguments);\n          };\n          xhr.addEventListener('loadend', function(){\n            try {\n              if (isHulkEndpoint(_url) \u0026\u0026 (_method === 'POST' || _method === 'PUT')) {\n                if (xhr.status \u003e= 200 \u0026\u0026 xhr.status \u003c 300) setTimeout(doRedirect, 50);\n              }\n            } catch {}\n          });\n          return xhr;\n        }\n        window.XMLHttpRequest = PatchedXHR;\n        restoreXHR = () =\u003e { window.XMLHttpRequest = OrigXHR; };\n      }\n    }\n\n    function teardownNetworkWatchers(){\n      try { restoreFetch \u0026\u0026 restoreFetch(); } catch {}\n      try { restoreXHR \u0026\u0026 restoreXHR(); } catch {}\n      restoreFetch = null;\n      restoreXHR = null;\n    }\n\n    function startSuccessWatcher(){\n      if (watcherStarted) return; watcherStarted = true;\n\n      setupNetworkWatchers();\n\n      \/\/ DOM watcher (form replaced or success text)\n      const successTextRegex = \/(thank\\s*you|success|submitted|we'?ve\\s+received|submission)\/i;\n      const root = document.body;\n      const mo = new MutationObserver(() =\u003e {\n        const formGone = !document.body.contains(form);\n        if (formGone) { mo.disconnect(); doRedirect(); return; }\n        const txt = root.textContent || '';\n        if (successTextRegex.test(txt)) { mo.disconnect(); doRedirect(); }\n      });\n      mo.observe(root, { childList: true, subtree: true });\n\n      \/\/ Safety timeout (recording usually finishes fast)\n      setTimeout(() =\u003e { mo.disconnect(); doRedirect(); }, 8000);\n    }\n\n    \/\/ --------------- SUBMIT HANDLING (record -\u003e redirect) ---------------\n    function intercept(e, fromClick){\n      const { url, hasState } = buildUrl();\n\n      if (!hasState) {\n        e.preventDefault();\n        e.stopPropagation();\n        showFieldError(stateSelect, 'jurisdiction-state-error', 'Please select a jurisdiction state.');\n        return;\n      }\n      clearFieldError(stateSelect, 'jurisdiction-state-error');\n\n      \/\/ Important: ALLOW submit so Hulk records the response\n      pendingRedirectUrl = url;\n      startSuccessWatcher();\n      \/\/ no preventDefault() here\n    }\n\n    form.addEventListener('submit', e =\u003e intercept(e, false), false);\n\n    \/\/ Prepare early on button clicks too (some setups hijack submit)\n    form.addEventListener('click', e =\u003e {\n      const t = e.target;\n      if (t \u0026\u0026 t.closest('button[type=\"submit\"], input[type=\"submit\"], .btn')) {\n        const built = buildUrl();\n        if (built.hasState) {\n          pendingRedirectUrl = built.url;\n          startSuccessWatcher();\n          \/\/ still do NOT prevent default; let Hulk submit\n        } else {\n          e.preventDefault(); e.stopPropagation();\n          showFieldError(stateSelect, 'jurisdiction-state-error', 'Please select a jurisdiction state.');\n        }\n      }\n    }, true);\n  });\n})();","input_font_family":"Poppins","input_placeholder_clr":"#333333","label_font_family":"Poppins","advance_css":"","form_description":"\u003cp style=\"text-align: center;\"\u003e\u003cspan style=\"color:#ffffff;\"\u003eNarrow your search by credit type, format, or topic\u0026nbsp;\u0026mdash; or leave fields blank to explore all available courses.\u003c\/span\u003e\u003c\/p\u003e\n","formElements":[{"Conditions":{},"type":"select","position":0,"label":"Jurisdiction State","values":"Alabama\nAlaska\nArizona\nArkansas\nCalifornia\nColorado\nConnecticut\nDelaware\nFlorida\nGeorgia\nHawaii\nIdaho\nIllinois\nIndiana\nIowa\nKansas\nKentucky\nLouisiana\nMaine\nMinnesota\nMississippi\nMissouri\nMontana\nNebraska\nNevada\nNew Hampshire\nNew Jersey\nNew Mexico\nNew York\nNorth Carolina\nNorth Dakota\nNorthern Mariana Islands\nOhio\nOklahoma\nOregon\nPennsylvania\nRhode Island\nSouth Carolina\nTennessee\nTexas\nUtah\nVermont\nVeterans Affairs\nVirginia\nWashington\nWest Virginia\nWisconsin\nWyoming","elementCost":{},"page_number":1,"halfwidth":"yes","required":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Northern Mariana Islands","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","Tennessee","Texas","Utah","Vermont","Veterans Affairs","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],"SelectedValue":"Alabama"},"type":"select","position":1,"label":"Course Topic","values":"Accounting\nBanking \u0026 Finance\nBankruptcy, Foreclosure \u0026 Collection Law\nBusiness \u0026 Securities Law\nCannabis Law\nConstitutional Law\nConstruction Law\nConsumer Law\nContract Law\nCriminal Law\nDisability \u0026 Social Security\nEducation Law\nElder Law\nEntertainment, Art \u0026 Sports Law\nEnvironmental Law\nEthics \u0026 Specialty Credits\nFamily Law\nFirearms Law\nFood \u0026 Beverage Law\nGenerative AI\nGovernment Claims \u0026 Military Law\nHealth Law\nImmigration\nInsurance Law\nIntellectual Property\nJudicial Forum\nLabor \u0026 Employment\nLaw Practice Management\nLegal Research \u0026 Writing\nLitigation \u0026 Appeals\nLocal Government Law\nMedicolegal\nNonprofit Law\nPersonal Injury \u0026 Negligence\nProfessional \u0026 Business Skills\nReal Estate\nTax\nTechnology, Privacy \u0026 Cybersecurity\nTrue Crime\nTrusts, Estates \u0026 Probate\nWorkers′ Compensation","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Northern Mariana Islands","Veterans Affairs"],"SelectedValue":"Northern Mariana Islands"},"type":"select","position":2,"label":"Credit Type","values":"General","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"ONE","SelectedValues":["Oregon"],"SelectedValue":"Oregon"},"type":"select","position":3,"label":"Credit Type","values":"General\nAbuse Reporting\nAccess to Justice\nAccess to Justice Introductory\nEthics\nMental Health \u0026 Substance Use Education\nNew Attorney Oregon Ethics\nNew Attorney Oregon Practice \u0026 Procedure\nNew Attorney Practical Skills","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New York"],"SelectedValue":"New York"},"type":"select","position":4,"label":"Credit Type","values":"General\nAreas of Professional Practice\nCybersecurity, Privacy and Data Protection-General\nDiversity, Inclusion and Elimination of Bias\nEthics\/Professionalism\nLaw Practice Management\nSkills","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Vermont"],"SelectedValue":"Vermont"},"type":"select","position":5,"label":"Credit Type","values":"General\nAttorney Wellness\nDiversity and Inclusion\nEthics","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Iowa"],"SelectedValue":"Iowa"},"type":"select","position":6,"label":"Credit Type","values":"General\nAttorney Wellness\nDiversity and Inclusion\nLegal Ethics","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Indiana"],"SelectedValue":"Indiana"},"type":"select","position":7,"label":"Credit Type","values":"General\nCivil Mediators\nDomestic Relations Mediators\nEthics\nNewly Admitted Applied Professionalism","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["California"],"SelectedValue":"California"},"type":"select","position":8,"label":"Credit Type","values":"General\nCivility\nCompetence Issues\nElimination of Bias\nImplicit Bias\nLegal Ethics\nPrevention and Detection Competence\nTechnology","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Illinois"],"SelectedValue":"Illinois"},"type":"select","position":9,"label":"Credit Type","values":"General\nDiversity and Inclusion\nMental Health and Substance Abuse\nNew Attorney Basic Skills Course\nProfessional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Rhode Island"],"SelectedValue":"Rhode Island"},"type":"select","position":10,"label":"Credit Type","values":"General\nDiversity, Equity, and Inclusion\nLegal Ethics","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New Jersey"],"SelectedValue":"New Jersey"},"type":"select","position":11,"label":"Credit Type","values":"General\nDiversity, Inclusion and Elimination of Bias\nEthics\/Professionalism\nNew Admit - NJ Basic Administrative Law\nNew Admit - NJ Basic Estate Administration\nNew Admit - NJ Basic Estate Planning\nNew Admit - NJ Civil or Criminal Trial Preparation\nNew Admit - NJ Family Law Practice\nNew Admit - NJ Labor and Employment Law\nNew Admit - NJ Landlord\/Tenant Practice\nNew Admit - NJ Law Office Management\nNew Admit - NJ Municipal Court Practice\nNew Admit - NJ Real Estate Closing Procedures\nNew Admit - NJ Trust \u0026 Business Accounting\nNew Admit - NJ Worker′s Compensation Law","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Minnesota"],"SelectedValue":"Minnesota"},"type":"select","position":12,"label":"Credit Type","values":"General\nElimination of Bias\nEthics\nMental Health and Substance Use","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Washington"],"SelectedValue":"Washington"},"type":"select","position":13,"label":"Credit Type","values":"General\nEquity Credit\nEthics\/Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New Mexico"],"SelectedValue":"New Mexico"},"type":"select","position":14,"label":"Credit Type","values":"General\nEquity in Justice\nEthics","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Colorado"],"SelectedValue":"Colorado"},"type":"select","position":15,"label":"Credit Type","values":"General\nEquity, Diversity and Inclusivity\nProfessional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Nevada"],"SelectedValue":"Nevada"},"type":"select","position":16,"label":"Credit Type","values":"General\nEthical Considerations\nSubstance Abuse","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Georgia"],"SelectedValue":"Georgia"},"type":"select","position":17,"label":"Credit Type","values":"General\nEthics\nProfessionalism","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Arkansas","Delaware","Kentucky","North Dakota","Pennsylvania","West Virginia","Wyoming"],"SelectedValue":"Arkansas"},"type":"select","position":18,"label":"Credit Type","values":"General\nEthics","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Maine"],"SelectedValue":"Maine"},"type":"select","position":19,"label":"Credit Type","values":"General\nEthics\nHarassment and Discriminatory Communication\nPRACPRO","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Louisiana"],"SelectedValue":"Louisiana"},"type":"select","position":20,"label":"Credit Type","values":"General\nEthics\nLaw Office Practice\nProfessionalism","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Utah"],"SelectedValue":"Utah"},"type":"select","position":21,"label":"Credit Type","values":"General\nEthics\nProfessionalism \u0026 Civility","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Missouri"],"SelectedValue":"Missouri"},"type":"select","position":22,"label":"Credit Type","values":"General\nEthics, Professionalism or Malpractice Prevention\nExplicit or Implicit Bias, Diversity, Inclusion, or Cultural Competency","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Hawaii","Wisconsin"],"SelectedValue":"Hawaii","Operator":"OR"},"type":"select","position":23,"label":"Credit Type","values":"General\nEthics\/Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Alabama","Connecticut","Kansas","Mississippi","New Hampshire","Tennessee","Virginia"],"SelectedValue":"Alabama"},"type":"select","position":24,"label":"Credit Type","values":"General\nEthics\/Professionalism","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Oklahoma"],"SelectedValue":"Oklahoma"},"type":"select","position":25,"label":"Credit Type","values":"General\nLegal Ethics","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Texas"],"SelectedValue":"Texas"},"type":"select","position":26,"label":"Credit Type","values":"General\nLegal Ethics\/Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Idaho"],"SelectedValue":"Idaho"},"type":"select","position":27,"label":"Credit Type","values":"General\nLegal Ethics\/Professional Responsibility\nNew Admittee Credit","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["South Carolina"],"SelectedValue":"South Carolina"},"type":"select","position":28,"label":"Credit Type","values":"General\nLegal Ethics\/Professional Responsibility\nSubstance Abuse\/Mental Health","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Alaska"],"SelectedValue":"Alaska"},"type":"select","position":29,"label":"Credit Type","values":"General\nMECLE Ethics","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Ohio"],"SelectedValue":"Ohio"},"type":"select","position":30,"label":"Credit Type","values":"General\nNew Lawyer Training\nProfessional Conduct","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Montana"],"SelectedValue":"Montana"},"type":"select","position":31,"label":"Credit Type","values":"General\nProfessional Fitness and Integrity","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Arizona","Nebraska"],"SelectedValue":"Arizona"},"type":"select","position":32,"label":"Credit Type","values":"General\nProfessional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["North Carolina"],"SelectedValue":"North Carolina"},"type":"select","position":33,"label":"Credit Type","values":"General\nProfessional Responsibility\nProfessional Well-being\nProfessionalism for New Attorneys\nTechnology","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Florida"],"SelectedValue":"Florida"},"type":"select","position":34,"label":"Credit Type","values":"General\nProfessional Responsibility\nTechnology","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Delaware","Louisiana","Mississippi","Nebraska","South Carolina"],"SelectedValue":"Delaware"},"type":"select","position":35,"label":"Course Format","values":"Live In-Person\nLive Online\nOnDemand","elementCost":{},"page_number":1,"halfwidth":"yes","placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Maine","Minnesota","Missouri","Montana","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Northern Mariana Islands","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],"SelectedValue":"Alabama"},"type":"select","position":36,"label":"Course Format","halfwidth":"yes","values":"Live Online\nOnDemand","elementCost":{},"page_number":1,"placeholder":"View all"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Veterans Affairs"],"SelectedValue":"Veterans Affairs"},"type":"select","position":37,"label":"Course Format","values":"OnDemand","elementCost":{},"page_number":1,"placeholder":"View all"}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Shopify Plus","shop_shopify_domain":"nbi-sems.myshopify.com"},"form_PLYGvXV0jtgBOobXB2H5jg":{"uuid":"PLYGvXV0jtgBOobXB2H5jg","form_name":"Specialty Credits Quick Search","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#092254","form_title":"\u003ch3 style=\"text-align: center;\"\u003e\u003cspan style=\"color:#ffffff;\"\u003eSelect your state to find the exact courses you need:\u003c\/span\u003e\u003c\/h3\u003e\n\n\u003ch3\u003e\u0026nbsp;\u003c\/h3\u003e\n","form_submit":"See Your Courses","after_submit":"clearAndAllow","after_submit_msg":"","captcha_enable":"no","label_style":"blockLabels","input_border_radius":"25","back_type":"color","input_back_color":"#fff","input_back_color_hover":"#ffffff","back_shadow":"none","label_font_clr":"#ffffff","input_font_clr":"#333333","button_align":"centerBtn","button_clr":"#092254","button_back_clr":"#99e2f2","button_border_radius":"25","form_width":"100%","form_border_size":"2","form_border_clr":"#99e2f2","form_border_radius":"25","label_font_size":"16","input_font_size":"16","button_font_size":"18","form_padding":"40","input_border_color":"#0069a5","input_border_color_hover":"#0069a5","btn_border_clr":"#99e2f2","btn_border_size":0,"form_name":"Specialty Credits Quick Search","":"matt.mansfield@nbi-sems.com","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","after_submit_script":"window.parent.postMessage('hulk_form_submit:Specialty Credits Quick Search', '*'); ","form_timer_sec":"5","form_load_as_popup":"no","advance_js":"(function () {\n  function onReady(fn){ if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); }\n\n  onReady(function () {\n    const form = document.querySelector('form');\n    if (!form) return;\n\n    const q  = (sel, root=form) =\u003e root.querySelector(sel);\n    const qa = (sel, root=form) =\u003e Array.from(root.querySelectorAll(sel));\n\n    \/\/ --- helpers ------------------------------------------------------------\n    const stateSelect = q('select[name=\"Jurisdiction State\"]');\n\n    function isVisible(el){\n      if (!el) return false;\n      if (el.hidden) return false;\n      const cs = getComputedStyle(el);\n      if (cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false;\n      const rect = el.getBoundingClientRect?.();\n      if (!rect || (rect.width === 0 \u0026\u0026 rect.height === 0)) return false;\n      return el.ownerDocument?.documentElement.contains(el);\n    }\n\n    function normalizeState(state){\n      state = (state || '').trim();\n      return state ? (state.endsWith(' CLE') ? state : `${state} CLE`) : '';\n    }\n\n    function getCreditType(){\n      const selects = qa('select[name=\"Credit Type\"]');\n      for (const s of selects) {\n        const wrap = s.closest('[id^=\"conditionInclude_\"], .form-group, .formElement') || s;\n        const val = (s.value || '').trim();\n        if (val \u0026\u0026 isVisible(wrap)) return val;\n      }\n      for (const s of selects) {\n        const val = (s.value || '').trim();\n        if (val) return val;\n      }\n      return '';\n    }\n\n    function showStateError(msg){\n      let err = q('#jurisdiction-state-error');\n      if (!err) {\n        err = document.createElement('div');\n        err.id = 'jurisdiction-state-error';\n        err.style.color = '#ffffff';\n        err.style.fontSize = '12px';\n        err.style.marginTop = '4px';\n        (stateSelect.closest('.form-group') || stateSelect.parentElement).appendChild(err);\n      }\n      err.textContent = msg || '';\n      stateSelect?.setAttribute('aria-invalid', msg ? 'true' : 'false');\n      if (msg) stateSelect?.focus();\n    }\n    function clearStateError(){ showStateError(''); }\n    stateSelect?.addEventListener('change', clearStateError);\n\n    function buildUrl(){\n      const baseUrl   = 'https:\/\/nbi-sems.com\/search';\n      const stateRaw  = q('select[name=\"Jurisdiction State\"]')?.value || '';\n      const creditType = getCreditType();\n      const state     = normalizeState(stateRaw);\n      const params    = new URLSearchParams();\n\n      if (state) params.append('refinementList[meta.custom.cle_state][0]', state);\n      if (state \u0026\u0026 creditType) {\n        params.append('refinementList[meta.custom.credit_type][0]', `${state}: ${creditType}`);\n      }\n      params.set('form', 'specialty_credits_quick_search');\n\n      return { url: params.toString() ? `${baseUrl}?${params.toString()}` : baseUrl, hasState: !!state };\n    }\n\n    \/\/ --- success detection \u0026 redirect (network + DOM) -----------------------\n    let pendingRedirectUrl = null;\n    let redirected = false;\n    let watcherStarted = false;\n\n    function doRedirect(){\n      if (redirected || !pendingRedirectUrl) return;\n      redirected = true;\n      \/\/ clean up wrappers (restore fetch\/XHR) when we redirect\n      teardownNetworkWatchers();\n      const target = (window.top \u0026\u0026 window.top !== window) ? window.top : window;\n      try { target.location.assign(pendingRedirectUrl); }\n      catch { target.location.href = pendingRedirectUrl; }\n    }\n\n    \/\/ Network watchers (catch Hulk AJAX submit completing successfully)\n    let restoreFetch = null;\n    let restoreXHR = null;\n\n    function isHulkEndpoint(url){\n      try {\n        const u = new URL(url, location.href);\n        const host = u.hostname;\n        return \/hulkapps|formbuilder|hulkform\/i.test(host) || \/\\\/formbuilder\\\/\/i.test(u.pathname);\n      } catch { return false; }\n    }\n\n    function setupNetworkWatchers(){\n      \/\/ fetch wrapper\n      if (!restoreFetch \u0026\u0026 'fetch' in window) {\n        const origFetch = window.fetch;\n        window.fetch = function(input, init){\n          let url = typeof input === 'string' ? input : (input?.url || '');\n          const method = (init?.method || '').toUpperCase() || 'GET';\n          return origFetch(input, init).then(resp =\u003e {\n            try {\n              if (isHulkEndpoint(url) \u0026\u0026 (method === 'POST' || method === 'PUT')) {\n                \/\/ consider 2xx as success\n                if (resp.ok) setTimeout(doRedirect, 50);\n              }\n            } catch {}\n            return resp;\n          });\n        };\n        restoreFetch = () =\u003e { window.fetch = origFetch; };\n      }\n\n      \/\/ XHR wrapper\n      if (!restoreXHR \u0026\u0026 'XMLHttpRequest' in window) {\n        const OrigXHR = window.XMLHttpRequest;\n        function PatchedXHR(){\n          const xhr = new OrigXHR();\n          let _method = 'GET';\n          let _url = '';\n\n          const origOpen = xhr.open;\n          xhr.open = function(method, url){\n            _method = (method || 'GET').toUpperCase();\n            _url = url || '';\n            return origOpen.apply(xhr, arguments);\n          };\n\n          xhr.addEventListener('loadend', function(){\n            try {\n              if (isHulkEndpoint(_url) \u0026\u0026 (_method === 'POST' || _method === 'PUT')) {\n                if (xhr.status \u003e= 200 \u0026\u0026 xhr.status \u003c 300) setTimeout(doRedirect, 50);\n              }\n            } catch {}\n          });\n\n          return xhr;\n        }\n        window.XMLHttpRequest = PatchedXHR;\n        restoreXHR = () =\u003e { window.XMLHttpRequest = OrigXHR; };\n      }\n    }\n\n    function teardownNetworkWatchers(){\n      try { restoreFetch \u0026\u0026 restoreFetch(); } catch {}\n      try { restoreXHR \u0026\u0026 restoreXHR(); } catch {}\n      restoreFetch = null;\n      restoreXHR = null;\n    }\n\n    function startSuccessWatcher(){\n      if (watcherStarted) return; watcherStarted = true;\n\n      setupNetworkWatchers();\n\n      \/\/ MutationObserver: form replaced\/hides or generic success text appears\n      const successTextRegex = \/(thank\\s*you|success|submitted|we'?ve\\s+received|submission)\/i;\n      const root = document.body;\n      const mo = new MutationObserver(() =\u003e {\n        const formGone  = !document.body.contains(form);\n        if (formGone) { mo.disconnect(); doRedirect(); return; }\n        \/\/ look for generic “success” text in the iframe body (kept broad)\n        const txt = root.textContent || '';\n        if (successTextRegex.test(txt)) { mo.disconnect(); doRedirect(); }\n      });\n      mo.observe(root, { childList: true, subtree: true });\n\n      \/\/ Hard timeout fallback (8s is usually plenty for Hulk AJAX)\n      setTimeout(() =\u003e { mo.disconnect(); doRedirect(); }, 8000);\n    }\n\n    \/\/ --- submit handler: allow default submit so Hulk records the response ---\n    form.addEventListener('submit', function (e) {\n      const { url, hasState } = buildUrl();\n\n      if (!hasState) {\n        e.preventDefault();\n        e.stopPropagation();\n        showStateError('Please select a jurisdiction state.');\n        return;\n      }\n      clearStateError();\n\n      \/\/ Let Hulk submit normally; prepare redirect once we detect success\n      pendingRedirectUrl = url;\n      startSuccessWatcher();\n    }, false);\n\n    \/\/ Also prepare on explicit submit button clicks\n    form.addEventListener('click', function (e) {\n      const t = e.target;\n      if (!t) return;\n      if (t.closest('button[type=\"submit\"], input[type=\"submit\"], .btn')) {\n        const built = buildUrl();\n        if (built.hasState) {\n          pendingRedirectUrl = built.url;\n          startSuccessWatcher();\n        } else {\n          e.preventDefault(); e.stopPropagation();\n          showStateError('Please select a jurisdiction state.');\n        }\n      }\n    }, true);\n  });\n})();","input_font_family":"Poppins","input_placeholder_clr":"#333333","label_font_family":"Poppins","banner_img_width":"60","banner_img_height":"100","form_banner_alignment":"center","image_url":"https:\/\/form-builder-by-hulkapps.s3.amazonaws.com\/uploads\/nbi-sems.myshopify.com\/backend_image\/form-spacer.png","advance_css":"#jurisdiction-state-error {\n  color: #ffffff !important;\n}jurisdiction-state-error {color: #ffffff !important;}","formElements":[{"Conditions":{},"type":"select","position":0,"label":"Jurisdiction State","values":"Alabama\nAlaska\nArizona\nArkansas\nCalifornia\nColorado\nConnecticut\nDelaware\nFlorida\nGeorgia\nHawaii\nIdaho\nIllinois\nIndiana\nIowa\nKansas\nKentucky\nLouisiana\nMaine\nMinnesota\nMississippi\nMissouri\nMontana\nNebraska\nNevada\nNew Hampshire\nNew Jersey\nNew Mexico\nNew York\nNorth Carolina\nNorth Dakota\nOhio\nOklahoma\nOregon\nPennsylvania\nRhode Island\nSouth Carolina\nTennessee\nTexas\nUtah\nVermont\nVirginia\nWashington\nWest Virginia\nWisconsin\nWyoming","elementCost":{},"page_number":1,"halfwidth":"no","required":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New Jersey"],"SelectedValue":"New Jersey"},"type":"paragraph","position":1,"label":"Label (33)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired New Jersey Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e5.00 Ethics\/Professionalism\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003eAt least 2.00 credits must be in Diversity, Inclusion, and Elimination of Bias\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003eNOTE: New Jersey has separate credit requirements for new attorneys as well. Please review the details on the \u003ca href=\"https:\/\/nbi-sems.com\/pages\/new-jerseyclerequirements\"\u003e\u003cspan style=\"color:white; text-decoration: underline;\"\u003eNew Jersey CLE Requirements page.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Alabama"],"SelectedValue":"Alabama"},"type":"paragraph","position":2,"label":"Label (34)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Alabama Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1 hour of ethics or professionalism credit per reporting period\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Alaska"],"SelectedValue":"Alaska"},"type":"paragraph","position":3,"label":"Label (35)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Alaska Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 credit hours per year in mandatory ethics continuing legal education\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["California"],"SelectedValue":"California"},"type":"paragraph","position":4,"label":"Label (38)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired California Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e4.00 Legal Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Competence Issues credits (1.00 hour must focus on Prevention and Detection Competence)\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Elimination of Bias credits (at least 1.00 of which must be in Implicit Bias and the promotion of bias-reducing strategies)\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Technology credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Civility credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Arizona"],"SelectedValue":"Arizona"},"type":"paragraph","position":5,"label":"Label (36)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Arizona Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3 hours of professional responsibility credits per reporting period\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Arkansas"],"SelectedValue":"Arkansas"},"type":"paragraph","position":6,"label":"Label (37)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Arkansas Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Ethics credit\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Colorado"],"SelectedValue":"Colorado"},"type":"paragraph","position":7,"label":"Label (39)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Colorado Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e7.00 Professional Responsibility (at least 2.00 credit hours must be in the area of equity, diversity and inclusivity)\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Connecticut"],"SelectedValue":"Connecticut"},"type":"paragraph","position":8,"label":"Label (40)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Connecticut Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Ethics\/Professionalism credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Delaware"],"SelectedValue":"Delaware"},"type":"paragraph","position":9,"label":"Label (41)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Delaware Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e4.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Florida"],"SelectedValue":"Florida"},"type":"paragraph","position":10,"label":"Label (42)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Florida Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e5.00 Professional Responsibility credits (May include legal ethics, professionalism, substance abuse or mental illness and wellness programs)\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003eNote: 2.00 of these must be from the mandatory Florida Legal Professionalism course offered by The Florida Bar.\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Technology credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Georgia"],"SelectedValue":"Georgia"},"type":"paragraph","position":11,"label":"Label (43)","paragraph":"\u003cp\u003e\u003cspan style=\"color:#ffffff;\"\u003e\u003cstrong\u003eRequired Georgia Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:#ffffff;\"\u003e3.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:#ffffff;\"\u003e2.00 Professionalism credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Hawaii"],"SelectedValue":"Hawaii"},"type":"paragraph","position":12,"label":"Label (44)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Hawaii Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Ethics\/Professional Responsibility credit every three years\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Idaho"],"SelectedValue":"Idaho"},"type":"paragraph","position":13,"label":"Label (45)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Idaho Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Legal Ethics\/Professional Responsibility credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003eNOTE: Idaho has separate credit requirements for new attorneys as well. Please review the details on the \u003ca href=\"https:\/\/nbi-sems.com\/pages\/idahoclerequirements\"\u003e\u003cspan style=\"color:white; text-decoration: underline;\"\u003eIdaho CLE Requirements page.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Illinois"],"SelectedValue":"Illinois"},"type":"paragraph","position":14,"label":"Label (46)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Illinois Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e6.00 Professional Responsibility credits (Including legal ethics, professionalism, civility, sexual harassment prevention training, diversity and inclusion, and\/or mental health and substance abuse)\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003eOf those, 1.00 credit must be in Diversity and Inclusion and 1.00 credit must be in Mental Health and Substance Abuse or participation in an approved year-long Lawyer-to-Lawyer Mentoring Program\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003eNOTE: Illinois has separate credit requirements for new attorneys as well. Please review the details on the \u003ca href=\"https:\/\/nbi-sems.com\/pages\/illinoisclerequirements\"\u003e\u003cspan style=\"color:white; text-decoration: underline;\"\u003eIllinois CLE Requirements page.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Indiana"],"SelectedValue":"Indiana"},"type":"paragraph","position":15,"label":"Label (47)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Indiana Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e6.00 Civil Mediation (for mediator attorneys only) credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e6.00 Domestic Relations Mediation (for mediator attorneys only) credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003eNOTE: Indiana has separate credit requirements for new attorneys as well. Please review the details on the \u003ca href=\"https:\/\/nbi-sems.com\/pages\/indianaclerequirements\"\u003e\u003cspan style=\"color:white; text-decoration: underline;\"\u003eIndiana CLE Requirements page.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Iowa"],"SelectedValue":"Iowa"},"type":"paragraph","position":16,"label":"Label (48)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Iowa Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Legal Ethics credit\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Attorney Wellness or Diversity and Inclusion credit\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Kansas"],"SelectedValue":"Kansas"},"type":"paragraph","position":17,"label":"Label (49)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Kansas Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Ethics and Professionalism credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Kentucky"],"SelectedValue":"Kentucky"},"type":"paragraph","position":18,"label":"Label (50)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Kentucky Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Louisiana"],"SelectedValue":"Louisiana"},"type":"paragraph","position":19,"label":"Label (51)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Louisiana Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Ethics credit\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Professionalism credit\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Maine"],"SelectedValue":"Maine"},"type":"paragraph","position":20,"label":"Label (52)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Maine Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Ethics (must be earned through live programs) credit\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Harassment and Discriminatory Education credit (must be earned through in-person programs; temporarily waived for live online)\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Minnesota"],"SelectedValue":"Minnesota"},"type":"paragraph","position":21,"label":"Label (53)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Minnesota Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Elimination of Bias credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Mental Health and Substance Use in the Legal Profession credit\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Mississippi"],"SelectedValue":"Mississippi"},"type":"paragraph","position":22,"label":"Label (54)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Mississippi Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Ethics\/Professionalism credit\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Missouri"],"SelectedValue":"Missouri"},"type":"paragraph","position":23,"label":"Label (55)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Missouri Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Ethics, Professionalism or Malpractice Prevention credits (at least 1.00 credit must be in explicit or implicit bias, diversity, inclusion, or cultural competency; all must be live)\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Montana"],"SelectedValue":"Montana"},"type":"paragraph","position":24,"label":"Label (56)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Montana Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Professional Fitness and Integrity credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Nebraska"],"SelectedValue":"Nebraska"},"type":"paragraph","position":25,"label":"Label (57)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Nebraska Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Professional Responsibility credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Nevada"],"SelectedValue":"Nevada"},"type":"paragraph","position":26,"label":"Label (58)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Nevada Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Ethical Considerations credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Substance Abuse, Addictive Disorders, and\/or Mental Health Issues credit\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New Hampshire"],"SelectedValue":"New Hampshire"},"type":"paragraph","position":27,"label":"Label (59)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired New Hampshire Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 hours (120 minutes) Ethics\/Professionalism credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New Mexico"],"SelectedValue":"New Mexico"},"type":"paragraph","position":28,"label":"Label (60)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired New Mexico Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Equity in Justice credit\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New York"],"SelectedValue":"New York"},"type":"paragraph","position":29,"label":"Label (61)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired New York Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e4.00 Ethics\/Professionalism credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Diversity, Inclusion and Elimination of Bias credit\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Cybersecurity, Privacy and Data Protection credit\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["North Carolina"],"SelectedValue":"North Carolina"},"type":"paragraph","position":30,"label":"Label (62)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired North Carolina Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e4.00 Professional Responsibility credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Technology Training credit\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Professional Well-being credit\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003eNOTE: North Carolina has separate credit requirements for new attorneys as well. Please review the details on the \u003ca href=\"https:\/\/nbi-sems.com\/pages\/north-carolinaclerequirements\"\u003e\u003cspan style=\"color:white; text-decoration: underline;\"\u003eNorth Carolina CLE Requirements page.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["North Dakota"],"SelectedValue":"North Dakota"},"type":"paragraph","position":31,"label":"Label (63)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired North Dakota Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Ohio"],"SelectedValue":"Ohio"},"type":"paragraph","position":32,"label":"Label (64)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Ohio Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.50 Professional Conduct credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003eNOTE: Ohio has separate credit requirements for new attorneys as well. Please review the details on the \u003ca href=\"https:\/\/nbi-sems.com\/pages\/ohioclerequirements\"\u003e\u003cspan style=\"color:white; text-decoration: underline;\"\u003eOhio CLE Requirements page.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Oklahoma"],"SelectedValue":"Oklahoma"},"type":"paragraph","position":33,"label":"Label (65)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Oklahoma Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Legal Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Oregon"],"SelectedValue":"Oregon"},"type":"paragraph","position":34,"label":"Label (66)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Oregon Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e5.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Abuse Reporting credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Mental Health\/Substance Abuse credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Access to Justice credits (in alternate reporting periods)\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003eNOTE: Oregon has separate credit requirements for new attorneys as well. Please review the details on the \u003ca href=\"https:\/\/nbi-sems.com\/pages\/oregonclerequirements\"\u003e\u003cspan style=\"color:white; text-decoration: underline;\"\u003eOregon CLE Requirements page.\u003c\/span\u003e\u003c\/a\u003e\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Pennsylvania"],"SelectedValue":"Pennsylvania"},"type":"paragraph","position":35,"label":"Label (67)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Pennsylvania Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Rhode Island"],"SelectedValue":"Rhode Island"},"type":"paragraph","position":36,"label":"Label (68)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Rhode Island Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Legal Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 DEI (Diversity, Equity, and Inclusion) credit (Effective July 1, 2025 \u0026ndash; June 30, 2026)\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["South Carolina"],"SelectedValue":"South Carolina"},"type":"paragraph","position":37,"label":"Label (69)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired South Carolina Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Legal Ethics\/Professional Responsibility credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Substance Abuse\/Mental Health credit (required every two years)\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Tennessee"],"SelectedValue":"Tennessee"},"type":"paragraph","position":38,"label":"Label (70)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Tennessee Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Ethics\/Professionalism credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Texas"],"SelectedValue":"Texas"},"type":"paragraph","position":39,"label":"Label (71)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Texas Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Legal Ethics\/Professional Responsibility credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Utah"],"SelectedValue":"Utah"},"type":"paragraph","position":40,"label":"Label (72)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Utah Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Ethics credit\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Professionalism and Civility credit\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Vermont"],"SelectedValue":"Vermont"},"type":"paragraph","position":41,"label":"Label (73)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Vermont Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Attorney Wellness credit\u003c\/span\u003e\u003c\/li\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e1.00 Diversity \u0026amp; Inclusion credit\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Virginia"],"SelectedValue":"Virginia"},"type":"paragraph","position":42,"label":"Label (74)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Virginia Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Ethics\/Professionalism credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Washington"],"SelectedValue":"Washington"},"type":"paragraph","position":43,"label":"Label (75)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Washington Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e6.00 Ethics\/Professional Responsibility credits (with at least 1.00 credit on equity, inclusion, and mitigation of implicit\/explicit bias)\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["West Virginia"],"SelectedValue":"West Virginia"},"type":"paragraph","position":44,"label":"Label (76)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired West Virginia Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Ethics credits (which may include Ethics, Office Management, Attorney Well-Being, and\/or Elimination of Bias)\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Wisconsin"],"SelectedValue":"Wisconsin"},"type":"paragraph","position":45,"label":"Label (77)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Wisconsin Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e3.00 Ethics\/Professional Responsibility (EPR) credits. Must be taken as live programs.\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Wyoming"],"SelectedValue":"Wyoming"},"type":"paragraph","position":46,"label":"Label (78)","paragraph":"\u003cp\u003e\u003cspan style=\"color:white;\"\u003e\u003cstrong\u003eRequired Wyoming Ethics and Specialty CLE Credits\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\n\u003cul style=\"color:#ffffff; padding-left: 50px;\"\u003e\n\t\u003cli\u003e\u003cspan style=\"color:white;\"\u003e2.00 Ethics credits\u003c\/span\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"ONE","SelectedValues":["Oregon"],"SelectedValue":"Oregon"},"type":"select","position":47,"label":"Credit Type","values":"Abuse Reporting\nAccess to Justice\nEthics\nMental Health \u0026 Substance Use Education","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New York"],"SelectedValue":"New York"},"type":"select","position":48,"label":"Credit Type","values":"Areas of Professional Practice\nCybersecurity, Privacy and Data Protection-General\nDiversity, Inclusion and Elimination of Bias\nEthics\/Professionalism\nLaw Practice Management\nSkills","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Vermont"],"SelectedValue":"Vermont"},"type":"select","position":49,"label":"Credit Type","values":"Attorney Wellness\nDiversity and Inclusion\nEthics","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Iowa"],"SelectedValue":"Iowa"},"type":"select","position":50,"label":"Credit Type","values":"Attorney Wellness\nDiversity and Inclusion\nLegal Ethics","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Indiana"],"SelectedValue":"Indiana"},"type":"select","position":51,"label":"Credit Type","values":"Civil Mediators\nDomestic Relations Mediators\nEthics","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["California"],"SelectedValue":"California"},"type":"select","position":52,"label":"Credit Type","values":"Civility\nCompetence Issues\nElimination of Bias\nImplicit Bias\nLegal Ethics\nPrevention and Detection Competence\nTechnology","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Illinois"],"SelectedValue":"Illinois"},"type":"select","position":53,"label":"Credit Type","values":"Diversity and Inclusion\nMental Health and Substance Abuse\nProfessional Responsibility","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Rhode Island"],"SelectedValue":"Rhode Island"},"type":"select","position":54,"label":"Credit Type","values":"Diversity, Equity, and Inclusion\nLegal Ethics","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New Jersey"],"SelectedValue":"New Jersey"},"type":"select","position":55,"label":"Credit Type","values":"Diversity, Inclusion and Elimination of Bias\nEthics\/Professionalism","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Minnesota"],"SelectedValue":"Minnesota"},"type":"select","position":56,"label":"Credit Type","values":"Elimination of Bias\nEthics\nMental Health and Substance Use","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Washington"],"SelectedValue":"Washington"},"type":"select","position":57,"label":"Credit Type","values":"Equity Credit\nEthics\/Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New Mexico"],"SelectedValue":"New Mexico"},"type":"select","position":58,"label":"Credit Type","values":"Equity in Justice\nEthics","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Colorado"],"SelectedValue":"Colorado"},"type":"select","position":59,"label":"Credit Type","values":"Equity, Diversity and Inclusivity\nProfessional Responsibility","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Nevada"],"SelectedValue":"Nevada"},"type":"select","position":60,"label":"Credit Type","values":"Ethical Considerations\nSubstance Abuse","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Georgia"],"SelectedValue":"Georgia"},"type":"select","position":61,"label":"Credit Type","values":"Ethics\nProfessionalism","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Arkansas","Delaware","Kentucky","North Dakota","Pennsylvania","West Virginia","Wyoming"],"SelectedValue":"Arkansas"},"type":"select","position":62,"label":"Credit Type","values":"Ethics","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Maine"],"SelectedValue":"Maine"},"type":"select","position":63,"label":"Credit Type","values":"Ethics\nHarassment and Discriminatory Communication\nPRACPRO","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Louisiana"],"SelectedValue":"Louisiana"},"type":"select","position":64,"label":"Credit Type","values":"Ethics\nLaw Office Practice\nProfessionalism","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Utah"],"SelectedValue":"Utah"},"type":"select","position":65,"label":"Credit Type","values":"Ethics\nProfessionalism \u0026 Civility","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Missouri"],"SelectedValue":"Missouri"},"type":"select","position":66,"label":"Credit Type","values":"Ethics, Professionalism or Malpractice Prevention\nExplicit or Implicit Bias, Diversity, Inclusion, or Cultural Competency","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Hawaii","Wisconsin"],"SelectedValue":"Hawaii","Operator":"OR"},"type":"select","position":67,"label":"Credit Type","values":"Ethics\/Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Alabama","Connecticut","Kansas","Mississippi","New Hampshire","Tennessee","Virginia"],"SelectedValue":"Alabama"},"type":"select","position":68,"label":"Credit Type","values":"Ethics\/Professionalism","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Oklahoma"],"SelectedValue":"Oklahoma"},"type":"select","position":69,"label":"Credit Type","values":"Legal Ethics","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Texas"],"SelectedValue":"Texas"},"type":"select","position":70,"label":"Credit Type","values":"Legal Ethics\/Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Idaho"],"SelectedValue":"Idaho"},"type":"select","position":71,"label":"Credit Type","values":"Legal Ethics\/Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["South Carolina"],"SelectedValue":"South Carolina"},"type":"select","position":72,"label":"Credit Type","values":"Legal Ethics\/Professional Responsibility\nSubstance Abuse\/Mental Health","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Alaska"],"SelectedValue":"Alaska"},"type":"select","position":73,"label":"Credit Type","values":"MECLE Ethics","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Ohio"],"SelectedValue":"Ohio"},"type":"select","position":74,"label":"Credit Type","values":"Professional Conduct","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Montana"],"SelectedValue":"Montana"},"type":"select","position":75,"label":"Credit Type","values":"Professional Fitness and Integrity","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Arizona","Nebraska"],"SelectedValue":"Arizona"},"type":"select","position":76,"label":"Credit Type","values":"Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["North Carolina"],"SelectedValue":"North Carolina"},"type":"select","position":77,"label":"Credit Type","values":"Professional Responsibility\nProfessional Well-being\nTechnology","elementCost":{},"page_number":1,"halfwidth":"no"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Florida"],"SelectedValue":"Florida"},"type":"select","position":78,"label":"Credit Type","values":"Professional Responsibility\nTechnology","elementCost":{},"page_number":1,"halfwidth":"no"}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Shopify Plus","shop_shopify_domain":"nbi-sems.myshopify.com"},"form_Y-rNTkQvNxHiOGCvfhIB2g":{"uuid":"Y-rNTkQvNxHiOGCvfhIB2g","form_name":"Old Advanced Search Template","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#0069a5","form_title":"\u003ch2 style=\"text-align: center;\"\u003e\u003cfont color=\"#ffffff\"\u003eAdvanced Search\u003c\/font\u003e\u003c\/h2\u003e\n\n\u003cp\u003e\u0026nbsp;\u003c\/p\u003e\n","form_submit":"See Your Courses","after_submit":"clearAndAllow","after_submit_msg":"","captcha_enable":"no","label_style":"blockLabels","input_border_radius":"2","back_type":"color","input_back_color":"#fff","input_back_color_hover":"#ffffff","back_shadow":"none","label_font_clr":"#ffffff","input_font_clr":"#333333","button_align":"fullBtn","button_clr":"#fff","button_back_clr":"#092254","button_border_radius":"2","form_width":"60%","form_border_size":"2","form_border_clr":"#092254","form_border_radius":"1","label_font_size":"16","input_font_size":"14","button_font_size":"18","form_padding":"35","input_border_color":"#0069a5","input_border_color_hover":"#0069a5","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Old Advanced Search Template","":"matt.mansfield@nbi-sems.com","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","after_submit_script":"window.parent.postMessage('hulk_form_submit:Full Advanced Search Template', '*'); ","form_timer_sec":"5","form_load_as_popup":"no","advance_js":"(function () {\n  const DEBUG = false;\n  const log = (...a) =\u003e { if (DEBUG) console.log('[Hulk URL Builder]', ...a); };\n\n  function onReady(fn){ if (document.readyState !== 'loading') fn(); else document.addEventListener('DOMContentLoaded', fn); }\n\n  onReady(function () {\n    const form = document.querySelector('form');\n    if (!form) return;\n\n    const q  = (sel, root=form) =\u003e root.querySelector(sel);\n    const qa = (sel, root=form) =\u003e Array.from(root.querySelectorAll(sel));\n\n    \/\/ Require Jurisdiction State\n    const stateSelect = q('select[name=\"Jurisdiction State\"]') || q('select[name*=\"Jurisdiction\"][name*=\"State\"]');\n    if (stateSelect) stateSelect.setAttribute('required', 'true');\n\n    \/\/ --- utils ---\n    function isVisible(el){\n      if (!el) return false;\n      if (el.hidden) return false;\n      const cs = getComputedStyle(el);\n      if (cs.display === 'none' || cs.visibility === 'hidden' || cs.opacity === '0') return false;\n      const r = el.getBoundingClientRect?.();\n      if (!r || (r.width === 0 \u0026\u0026 r.height === 0)) return false;\n      return el.ownerDocument?.documentElement.contains(el);\n    }\n    function normalizeState(state){\n      state = (state || '').trim();\n      return state ? (state.endsWith(' CLE') ? state : `${state} CLE`) : '';\n    }\n\n    \/\/ --- Course Format (visible select + normalization) ---\n    function normalizeFormat(label){\n      const key = (label || '').trim().toLowerCase();\n      if (!key || key === 'please select' || key === 'all cle courses') return '';\n      if (key === 'ondemand' || key === 'on demand') return 'OnDemand';\n      if (key.includes('live online') || key.includes('live webinar') || key.includes('upcoming live webinars') || key === 'webinar') return 'Live Online';\n      if (key.includes('in-person') || key === 'live in person' || key === 'live in-person') return 'Live In-Person';\n      return (label || '').trim();\n    }\n    function getCourseFormat(){\n      let selects = qa('select[name=\"Course Format\"]');\n      if (!selects.length) selects = qa('select[name*=\"Course\"][name*=\"Format\"]');\n      for (const s of selects) {\n        const wrap = s.closest('[id^=\"conditionInclude_\"], .form-group, .formElement') || s;\n        const raw = (s.value || '').trim();\n        if (isVisible(wrap) \u0026\u0026 raw) return normalizeFormat(raw);\n      }\n      for (const s of selects) {\n        const raw = (s.value || '').trim();\n        if (raw) return normalizeFormat(raw);\n      }\n      return '';\n    }\n\n    \/\/ --- Credit Type (visible among many) ---\n    function getCreditType(){\n      let selects = qa('select[name=\"Credit Type\"]');\n      if (!selects.length) selects = qa('select[name*=\"Credit\"][name*=\"Type\"]');\n      for (const s of selects) {\n        const wrap = s.closest('[id^=\"conditionInclude_\"], .form-group, .formElement') || s;\n        const val = (s.value || '').trim();\n        if (isVisible(wrap) \u0026\u0026 val) return val;\n      }\n      for (const s of selects) {\n        const val = (s.value || '').trim();\n        if (val) return val;\n      }\n      return '';\n    }\n\n    \/\/ --- Topic (single) \u0026 Sub-Topic (visible among many) ---\n    function getCourseTopic(){\n      const el = q('select[name=\"Course Topic\"]') || q('select[name*=\"Course\"][name*=\"Topic\"]');\n      return { value: (el?.value || '').trim(), el };\n    }\n\n    \/\/ IMPORTANT: always return the **visible sub-topic element**, even if empty\n    function getCourseSubTopic(){\n      let selects = qa('select[name=\"Course Sub-Topic\"]');\n      if (!selects.length) selects = qa('select[name*=\"Sub-Topic\"], select[name*=\"Sub Topic\"]');\n\n      \/\/ First pass: return the visible element regardless of its value\n      for (const s of selects) {\n        const wrap = s.closest('[id^=\"conditionInclude_\"], .form-group, .formElement') || s;\n        if (isVisible(wrap)) {\n          const val = (s.value || '').trim();\n          return { value: val, el: s };\n        }\n      }\n      \/\/ Fallback: any element (use first), even if empty\n      if (selects.length) {\n        const s = selects[0];\n        return { value: (s.value || '').trim(), el: s };\n      }\n      return { value: '', el: null };\n    }\n\n    \/\/ --- light gray inline errors, always placed under the target field ---\n    function ensureErrorBelow(targetEl, id){\n      if (!targetEl) return null;\n      let err = document.getElementById(id);\n      if (!err) {\n        err = document.createElement('div');\n        err.id = id;\n        err.style.color = '#ffffff';      \/\/ white\n        err.style.fontSize = '12px';\n        err.style.lineHeight = '1.2';\n        err.style.marginTop = '4px';\n      }\n      \/\/ Re-insert under the current target every time (so it doesn't stick under another field)\n      if (err.parentElement) err.parentElement.removeChild(err);\n      targetEl.insertAdjacentElement('afterend', err);\n      return err;\n    }\n    function showFieldError(targetEl, id, msg){\n      const err = ensureErrorBelow(targetEl, id);\n      if (err) err.textContent = msg || '';\n      if (targetEl) targetEl.setAttribute('aria-invalid', msg ? 'true' : 'false');\n    }\n    function clearFieldError(targetEl, id){\n      const err = document.getElementById(id);\n      if (err) err.textContent = '';\n      if (targetEl) targetEl.setAttribute('aria-invalid', 'false');\n    }\n\n    \/\/ Live rule: topic chosen =\u003e visible sub-topic becomes required\n    function syncSubTopicRequired(){\n      const { value: topicVal } = getCourseTopic();\n      const { el: subEl } = getCourseSubTopic();\n      if (subEl) {\n        if (topicVal) subEl.setAttribute('required', 'true');\n        else subEl.removeAttribute('required');\n        clearFieldError(subEl, 'course-subtopic-error');\n      }\n    }\n\n    \/\/ Wire change listeners\n    stateSelect?.addEventListener('change', () =\u003e clearFieldError(stateSelect, 'jurisdiction-state-error'));\n    (q('select[name=\"Course Topic\"]') || q('select[name*=\"Course\"][name*=\"Topic\"]'))?.addEventListener('change', syncSubTopicRequired);\n    qa('select[name=\"Course Sub-Topic\"], select[name*=\"Sub-Topic\"], select[name*=\"Sub Topic\"]').forEach(s =\u003e {\n      s.addEventListener('change', () =\u003e clearFieldError(s, 'course-subtopic-error'));\n    });\n\n    \/\/ --- URL build ---\n    function buildUrl(){\n      const baseUrl  = 'https:\/\/nbi-sems.com\/search';\n\n      const keyword     = (q('input[name=\"Keyword\"]')?.value || '').trim();\n      const stateRaw    = stateSelect?.value || '';\n      const formatVal   = getCourseFormat();\n      const creditType  = getCreditType();\n      const { value: topic }  = getCourseTopic();\n      const { value: subTopic, el: subEl } = getCourseSubTopic();\n\n      const state = normalizeState(stateRaw);\n\n      const params = new URLSearchParams();\n      if (state) params.append('refinementList[meta.custom.cle_state][0]', state);\n      if (formatVal) params.append('refinementList[named_tags.format][0]', formatVal);\n      if (state \u0026\u0026 creditType) params.append('refinementList[meta.custom.credit_type][0]', `${state}: ${creditType}`);\n      if (topic \u0026\u0026 subTopic) params.append('refinementList[meta.custom.topic_subtopic][0]', `${topic}: ${subTopic}`);\n      if (keyword) params.append('q', keyword);\n\n      const url = params.toString() ? `${baseUrl}?${params.toString()}` : baseUrl;\n      return { url, hasState: !!state, topic, subTopic, subEl };\n    }\n\n    \/\/ --- intercept submit \u0026 button click (capture) ---\n    function intercept(e, via){\n      const { url, hasState, topic, subTopic, subEl } = buildUrl();\n\n      \/\/ State required -\u003e error under the state field\n      if (!hasState) {\n        e.preventDefault(); e.stopPropagation();\n        showFieldError(stateSelect, 'jurisdiction-state-error', 'Please select a jurisdiction state.');\n        return;\n      }\n      clearFieldError(stateSelect, 'jurisdiction-state-error');\n\n      \/\/ If a topic is chosen, sub-topic is required -\u003e error under the visible sub-topic field\n      if (topic \u0026\u0026 !subTopic) {\n        e.preventDefault(); e.stopPropagation();\n        if (subEl) subEl.setAttribute('required', 'true');\n        showFieldError(subEl, 'course-subtopic-error', 'Please select a sub-topic.');\n        return;\n      }\n      if (subEl) clearFieldError(subEl, 'course-subtopic-error');\n\n      \/\/ Navigate\n      console.log('[Hulk URL Builder]', via, '→', url);\n      e.preventDefault(); e.stopPropagation();\n      try { window.top.location.href = url; } catch { window.location.href = url; }\n    }\n\n    form.addEventListener('submit', e =\u003e intercept(e, 'submit(capture)'), true);\n    form.addEventListener('click', e =\u003e {\n      const t = e.target;\n      if (t \u0026\u0026 t.closest('button[type=\"submit\"], input[type=\"submit\"], .btn')) {\n        intercept(e, 'button-click(capture)');\n      }\n    }, true);\n\n    \/\/ Initialize sub-topic required state in case Topic is preselected\n    syncSubTopicRequired();\n  });\n})();","input_font_family":"Poppins","input_placeholder_clr":"#333333","label_font_family":"Poppins","formElements":[{"Conditions":{},"type":"select","position":0,"label":"Jurisdiction State","values":"Alabama\nAlaska\nArizona\nArkansas\nCalifornia\nColorado\nConnecticut\nDelaware\nFlorida\nGeorgia\nHawaii\nIdaho\nIllinois\nIndiana\nIowa\nKansas\nKentucky\nLouisiana\nMaine\nMinnesota\nMississippi\nMissouri\nMontana\nNebraska\nNevada\nNew Hampshire\nNew Jersey\nNew Mexico\nNew York\nNorth Carolina\nNorth Dakota\nNorthern Mariana Islands\nOhio\nOklahoma\nOregon\nPennsylvania\nRhode Island\nSouth Carolina\nTennessee\nTexas\nUtah\nVermont\nVeterans Affairs\nVirginia\nWashington\nWest Virginia\nWisconsin\nWyoming","elementCost":{},"page_number":1,"halfwidth":"yes","required":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Northern Mariana Islands","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","Tennessee","Texas","Utah","Vermont","Veterans Affairs","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],"SelectedValue":"Alabama"},"type":"text","position":1,"label":"Keyword","halfwidth":"yes","centerfield":"no","infoMessage":"Enter a search term to refine your results.","page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Northern Mariana Islands","Veterans Affairs"],"SelectedValue":"Northern Mariana Islands"},"type":"select","position":2,"label":"Credit Type","values":"General","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"ONE","SelectedValues":["Oregon"],"SelectedValue":"Oregon"},"type":"select","position":3,"label":"Credit Type","values":"General\nAbuse Reporting\nAccess to Justice\nAccess to Justice Introductory\nEthics\nMental Health \u0026 Substance Use Education\nNew Attorney Oregon Ethics\nNew Attorney Oregon Practice \u0026 Procedure\nNew Attorney Practical Skills","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New York"],"SelectedValue":"New York"},"type":"select","position":4,"label":"Credit Type","values":"General\nAreas of Professional Practice\nCybersecurity, Privacy and Data Protection-General\nDiversity, Inclusion and Elimination of Bias\nEthics\/Professionalism\nLaw Practice Management\nSkills","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Vermont"],"SelectedValue":"Vermont"},"type":"select","position":5,"label":"Credit Type","values":"General\nAttorney Wellness\nDiversity and Inclusion\nEthics","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Iowa"],"SelectedValue":"Iowa"},"type":"select","position":6,"label":"Credit Type","values":"General\nAttorney Wellness\nDiversity and Inclusion\nLegal Ethics","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Indiana"],"SelectedValue":"Indiana"},"type":"select","position":7,"label":"Credit Type","values":"General\nCivil Mediators\nDomestic Relations Mediators\nEthics\nNewly Admitted Applied Professionalism","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["California"],"SelectedValue":"California"},"type":"select","position":8,"label":"Credit Type","values":"General\nCivility\nCompetence Issues\nElimination of Bias\nImplicit Bias\nLegal Ethics\nPrevention and Detection Competence\nTechnology","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Illinois"],"SelectedValue":"Illinois"},"type":"select","position":9,"label":"Credit Type","values":"General\nDiversity and Inclusion\nMental Health and Substance Abuse\nNew Attorney Basic Skills Course\nProfessional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Rhode Island"],"SelectedValue":"Rhode Island"},"type":"select","position":10,"label":"Credit Type","values":"General\nDiversity, Equity, and Inclusion\nLegal Ethics","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New Jersey"],"SelectedValue":"New Jersey"},"type":"select","position":11,"label":"Credit Type","values":"General\nDiversity, Inclusion and Elimination of Bias\nEthics\/Professionalism\nNew Admit - NJ Basic Administrative Law\nNew Admit - NJ Basic Estate Administration\nNew Admit - NJ Basic Estate Planning\nNew Admit - NJ Civil or Criminal Trial Preparation\nNew Admit - NJ Family Law Practice\nNew Admit - NJ Labor and Employment Law\nNew Admit - NJ Landlord\/Tenant Practice\nNew Admit - NJ Law Office Management\nNew Admit - NJ Municipal Court Practice\nNew Admit - NJ Real Estate Closing Procedures\nNew Admit - NJ Trust \u0026 Business Accounting\nNew Admit - NJ Worker′s Compensation Law","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Minnesota"],"SelectedValue":"Minnesota"},"type":"select","position":12,"label":"Credit Type","values":"General\nElimination of Bias\nEthics\nMental Health and Substance Use","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Washington"],"SelectedValue":"Washington"},"type":"select","position":13,"label":"Credit Type","values":"General\nEquity Credit\nEthics\/Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["New Mexico"],"SelectedValue":"New Mexico"},"type":"select","position":14,"label":"Credit Type","values":"General\nEquity in Justice\nEthics","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Colorado"],"SelectedValue":"Colorado"},"type":"select","position":15,"label":"Credit Type","values":"General\nEquity, Diversity and Inclusivity\nProfessional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Nevada"],"SelectedValue":"Nevada"},"type":"select","position":16,"label":"Credit Type","values":"General\nEthical Considerations\nSubstance Abuse","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Georgia"],"SelectedValue":"Georgia"},"type":"select","position":17,"label":"Credit Type","values":"General\nEthical Considerations\nTrial Hours","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Arkansas","Delaware","Kentucky","North Dakota","Pennsylvania","West Virginia","Wyoming"],"SelectedValue":"Arkansas"},"type":"select","position":18,"label":"Credit Type","values":"General\nEthics","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Maine"],"SelectedValue":"Maine"},"type":"select","position":19,"label":"Credit Type","values":"General\nEthics\nHarassment and Discriminatory Communication\nPRACPRO","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Louisiana"],"SelectedValue":"Louisiana"},"type":"select","position":20,"label":"Credit Type","values":"General\nEthics\nLaw Office Practice\nProfessionalism","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Utah"],"SelectedValue":"Utah"},"type":"select","position":21,"label":"Credit Type","values":"General\nEthics\nProfessionalism \u0026 Civility","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Missouri"],"SelectedValue":"Missouri"},"type":"select","position":22,"label":"Credit Type","values":"General\nEthics, Professionalism or Malpractice Prevention\nExplicit or Implicit Bias, Diversity, Inclusion, or Cultural Competency","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Hawaii","Wisconsin"],"SelectedValue":"Hawaii","Operator":"OR"},"type":"select","position":23,"label":"Credit Type","values":"General\nEthics\/Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Alabama","Connecticut","Kansas","Mississippi","New Hampshire","Tennessee","Virginia"],"SelectedValue":"Alabama"},"type":"select","position":24,"label":"Credit Type","values":"General\nEthics\/Professionalism","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Oklahoma"],"SelectedValue":"Oklahoma"},"type":"select","position":25,"label":"Credit Type","values":"General\nLegal Ethics","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Texas"],"SelectedValue":"Texas"},"type":"select","position":26,"label":"Credit Type","values":"General\nLegal Ethics\/Professional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Idaho"],"SelectedValue":"Idaho"},"type":"select","position":27,"label":"Credit Type","values":"General\nLegal Ethics\/Professional Responsibility\nNew Admittee Credit","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["South Carolina"],"SelectedValue":"South Carolina"},"type":"select","position":28,"label":"Credit Type","values":"General\nLegal Ethics\/Professional Responsibility\nSubstance Abuse\/Mental Health","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Alaska"],"SelectedValue":"Alaska"},"type":"select","position":29,"label":"Credit Type","values":"General\nMECLE Ethics","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Ohio"],"SelectedValue":"Ohio"},"type":"select","position":30,"label":"Credit Type","values":"General\nNew Lawyer Training\nProfessional Conduct","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Montana"],"SelectedValue":"Montana"},"type":"select","position":31,"label":"Credit Type","values":"General\nProfessional Fitness and Integrity","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Arizona","Nebraska"],"SelectedValue":"Arizona"},"type":"select","position":32,"label":"Credit Type","values":"General\nProfessional Responsibility","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["North Carolina"],"SelectedValue":"North Carolina"},"type":"select","position":33,"label":"Credit Type","values":"General\nProfessional Responsibility\nProfessional Well-being\nProfessionalism for New Attorneys\nTechnology","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Florida"],"SelectedValue":"Florida"},"type":"select","position":34,"label":"Credit Type","values":"General\nProfessional Responsibility\nTechnology","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Delaware","Indiana","Iowa","Louisiana","Mississippi","Nebraska","New Jersey","New York","North Carolina","Pennsylvania","South Carolina"],"SelectedValue":"Delaware"},"type":"select","position":35,"label":"Course Format","values":"Live In-Person\nLive Online\nOnDemand","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Florida","Georgia","Hawaii","Idaho","Illinois","Kansas","Kentucky","Maine","Minnesota","Missouri","Montana","Nevada","New Hampshire","New Mexico","North Dakota","Northern Mariana Islands","Ohio","Oklahoma","Oregon","Rhode Island","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],"SelectedValue":"Alabama"},"type":"select","position":36,"label":"Course Format","halfwidth":"yes","values":"Live Online\nOnDemand","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"SelectedValues":["Veterans Affairs"],"SelectedValue":"Veterans Affairs"},"type":"select","position":37,"label":"Course Format","values":"OnDemand","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Jurisdiction State","SelectedElemenetCount":0,"Operator":"OR","SelectedValues":["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Northern Mariana Islands","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","Tennessee","Texas","Utah","Vermont","Veterans Affairs","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],"SelectedValue":"Alabama"},"type":"select","position":38,"label":"Course Topic","values":"Accounting\nBanking \u0026 Finance\nBankruptcy, Foreclosure \u0026 Collection Law\nBusiness \u0026 Securities Law\nCannabis Law\nConstitutional Law\nConstruction Law\nConsumer Law\nContract Law\nCriminal Law\nDisability \u0026 Social Security\nEducation Law\nElder Law\nEntertainment, Art \u0026 Sports Law\nEnvironmental Law\nEthics \u0026 Specialty Credits\nFamily Law\nFirearms Law\nFood \u0026 Beverage Law\nGenerative AI\nGovernment Claims \u0026 Military Law\nHealth Law\nImmigration\nInsurance Law\nIntellectual Property\nJudicial Forum\nLabor \u0026 Employment\nLaw Practice Management\nLegal Research \u0026 Writing\nLitigation \u0026 Appeals\nLocal Government Law\nMedicolegal\nNonprofit Law\nPersonal Injury \u0026 Negligence\nProfessional \u0026 Business Skills\nReal Estate\nTax\nTechnology, Privacy \u0026 Cybersecurity\nTrue Crime\nTrusts, Estates \u0026 Probate\nWorkers′ Compensation","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Accounting"],"SelectedValue":"Accounting"},"type":"select","position":39,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Accounting","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Banking \u0026 Finance"],"SelectedValue":"Banking \u0026 Finance"},"type":"select","position":40,"label":"Course Sub-Topic","values":"Consumer Protection (Financial)\nCorporate Finance\nFinancial Crimes\nForeclosure \u0026 Mortgage Lending\nGeneral Banking \u0026 Finance","elementCost":{},"halfwidth":"yes","page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Bankruptcy, Foreclosure \u0026 Collection Law"],"SelectedValue":"Bankruptcy, Foreclosure \u0026 Collection Law"},"type":"select","position":41,"label":"Course Sub-Topic","values":"Collection Law \u0026 Creditors′ Rights\nConsumer Bankruptcy\nCorporate Bankruptcy\nForeclosure Law\nGeneral Bankruptcy, Foreclosure \u0026 Collection Law\nStudent Loan Law","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Business \u0026 Securities Law"],"SelectedValue":"Business \u0026 Securities Law"},"type":"select","position":42,"label":"Course Sub-Topic","values":"Collection Law \u0026 Creditors′ Rights\nConsumer Bankruptcy\nCorporate Bankruptcy\nForeclosure Law\nGeneral Bankruptcy, Foreclosure \u0026 Collection Law\nStudent Loan Law","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Cannabis Law"],"SelectedValue":"Cannabis Law"},"type":"select","position":43,"label":"Course Sub-Topic","values":"General Cannabis Law","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Constitutional Law"],"SelectedValue":"Constitutional Law"},"type":"select","position":44,"label":"Course Sub-Topic","values":"General Constitutional Law","elementCost":{},"page_number":1,"halfwidth":"yes"},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Construction Law"],"SelectedValue":"Construction Law"},"type":"select","position":45,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Construction Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Consumer Law"],"SelectedValue":"Consumer Law"},"type":"select","position":46,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Consumer Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Contract Law"],"SelectedValue":"Contract Law"},"type":"select","position":47,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Contract Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Criminal Law"],"SelectedValue":"Criminal Law"},"type":"select","position":48,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Criminal Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Disability \u0026 Social Security"],"SelectedValue":"Disability \u0026 Social Security"},"type":"select","position":49,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Disability \u0026 Social Security","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Education Law"],"SelectedValue":"Education Law"},"type":"select","position":50,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Education Law\nSpecial Education\nStudent Discipline","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Elder Law"],"SelectedValue":"Elder Law"},"type":"select","position":51,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Elder Law\nGuardianships\nMedicaid \u0026 Long-Term Care Planning\nMilitary \u0026 Veterans\nPOAs \u0026 Advance Directives","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Entertainment, Art \u0026 Sports Law"],"SelectedValue":"Entertainment, Art \u0026 Sports Law"},"type":"select","position":52,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Entertainment, Art \u0026 Sports Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Environmental Law"],"SelectedValue":"Environmental Law"},"type":"select","position":53,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Environmental Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Ethics \u0026 Specialty Credits"],"SelectedValue":"Ethics \u0026 Specialty Credits"},"type":"select","position":54,"label":"Course Sub-Topic","halfwidth":"yes","values":"Civility \u0026 Professionalism\nConfidentiality \u0026 Privilege\nConflicts of Interest\nElimination of Bias\/Diversity\nEthics \u0026 Technology\nGeneral Ethics \u0026 Specialty Credits\nWellness \u0026 Substance Abuse","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Family Law"],"SelectedValue":"Family Law"},"type":"select","position":55,"label":"Course Sub-Topic","halfwidth":"yes","values":"Adoption, ART \u0026 Surrogacy\nChild Advocacy\nChild Custody\nGeneral Family Law\nMarital Agreements\nMarital Dissolution","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Firearms Law"],"SelectedValue":"Firearms Law"},"type":"select","position":56,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Firearms Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Food \u0026 Beverage Law"],"SelectedValue":"Food \u0026 Beverage Law"},"type":"select","position":57,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Food \u0026 Beverage Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Generative AI"],"SelectedValue":"Generative AI"},"type":"select","position":58,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Generative AI","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Government Claims \u0026 Military Law"],"SelectedValue":"Government Claims \u0026 Military Law"},"type":"select","position":59,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Government Claims \u0026 Military Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Health Law"],"SelectedValue":"Health Law"},"type":"select","position":60,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Health Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Immigration"],"SelectedValue":"Immigration"},"type":"select","position":61,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Immigration","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Insurance Law"],"SelectedValue":"Insurance Law"},"type":"select","position":62,"label":"Course Sub-Topic","halfwidth":"yes","values":"Bad Faith\nBusiness Insurance\nGeneral Insurance Law\nInsurance Claims\nInsurance Coverage Litigation\nLife\/Health Insurance\nProperty\/Title Insurance\nSubrogation\nVehicle Insurance","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Intellectual Property"],"SelectedValue":"Intellectual Property"},"type":"select","position":63,"label":"Course Sub-Topic","halfwidth":"yes","values":"Copyright\nGeneral Intellectual Property\nPatent\nTrademark","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Judicial Forum"],"SelectedValue":"Judicial Forum"},"type":"select","position":64,"label":"Course Sub-Topic","halfwidth":"yes","values":"Civil Court","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Labor \u0026 Employment"],"SelectedValue":"Labor \u0026 Employment"},"type":"select","position":65,"label":"Course Sub-Topic","halfwidth":"yes","values":"Discrimination \u0026 Harassment\nEmployee Privacy\nEmployment Contracts\nEmployment Litigation\nGeneral Labor \u0026 Employment\nHealth \u0026 Safety\nHiring \u0026 Termination\nHuman Resources\nLeave Management\nWage \u0026 Hour\nWorkplace Investigations\nLaw Practice Management","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Law Practice Management"],"SelectedValue":"Law Practice Management"},"type":"select","position":66,"label":"Course Sub-Topic","halfwidth":"yes","values":"Legal Research \u0026 Writing\nGeneral Legal Research \u0026 Writing","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Litigation \u0026 Appeals"],"SelectedValue":"Litigation \u0026 Appeals"},"type":"select","position":67,"label":"Course Sub-Topic","halfwidth":"yes","values":"Appellate Practice\nDiscovery\nE-Discovery\nEvidence\nFederal Litigation\nGeneral Litigation \u0026 Appeals\nMediation\/Arbitration\/ADR\nMotions\nTrial Practice","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Local Government Law"],"SelectedValue":"Local Government Law"},"type":"select","position":68,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Local Government Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Medicolegal"],"SelectedValue":"Medicolegal"},"type":"select","position":69,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Medicolegal","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Nonprofit Law"],"SelectedValue":"Nonprofit Law"},"type":"select","position":70,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Nonprofit Law","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Personal Injury \u0026 Negligence"],"SelectedValue":"Personal Injury \u0026 Negligence"},"type":"select","position":71,"label":"Course Sub-Topic","halfwidth":"yes","values":"Damages\nGeneral Personal Injury \u0026 Negligence\nLiens \u0026 Subrogation\nMedical Malpractice\nNegotiations \u0026 Advocacy\nNursing Home\nPremises Liability\nProduct Liability\nVehicle Injury\nWrongful Death","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Professional \u0026 Business Skills"],"SelectedValue":"Professional \u0026 Business Skills"},"type":"select","position":72,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Professional \u0026 Business Skills","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Real Estate"],"SelectedValue":"Real Estate"},"type":"select","position":73,"label":"Course Sub-Topic","halfwidth":"yes","values":"Condominium\/HOA\nEasements \u0026 Boundaries\nForeclosure Law\nGeneral Real Estate\nHousing Law\nLand Use \u0026 Zoning\nLandlord-Tenant Law\nOil, Gas \u0026 Energy\nReal Estate Contracts\nReal Estate Development\nReal Estate Investment\nReal Estate Leasing\nReal Estate Tax\nReal Estate Transactions\nTitle Law \u0026 Title Insurance","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Tax"],"SelectedValue":"Tax"},"type":"select","position":74,"label":"Course Sub-Topic","halfwidth":"yes","values":"Business Tax\nGeneral Tax\nIncome \u0026 Capital Gains Tax\nReal Estate Tax\nSales \u0026 Use Tax\nTax Disputes \u0026 Litigation\nTaxation of Trusts \u0026 Estates","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Technology, Privacy \u0026 Cybersecurity"],"SelectedValue":"Technology, Privacy \u0026 Cybersecurity"},"type":"select","position":75,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Technology, Privacy \u0026 Cybersecurity","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["True Crime"],"SelectedValue":"True Crime"},"type":"select","position":76,"label":"Course Sub-Topic","halfwidth":"yes","values":"General True Crime","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Trusts, Estates \u0026 Probate"],"SelectedValue":"Trusts, Estates \u0026 Probate"},"type":"select","position":77,"label":"Course Sub-Topic","halfwidth":"yes","values":"Asset Protection\nCharitable Planning\nDisputes \u0026 Probate Litigation\nEstate Planning\nGeneral Trusts, Estates \u0026 Probate\nProbate \u0026 Estate Administration\nTaxation of Trusts \u0026 Estates\nTrusts","elementCost":{},"page_number":1},{"Conditions":{"SelectedElemenet":"Course Topic","SelectedElemenetCount":38,"SelectedValues":["Workers′ Compensation"],"SelectedValue":"Workers′ Compensation"},"type":"select","position":78,"label":"Course Sub-Topic","halfwidth":"yes","values":"General Workers' Compensation","elementCost":{},"page_number":1}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"shopify_plus","shop_shopify_domain":"nbi-sems.myshopify.com","shop_remove_watermark":false,"shop_created_at":"2024-04-26T08:12:48.103-05:00"},"form_yv3mumeuTAiPUv6jInDy1A":{"uuid":"yv3mumeuTAiPUv6jInDy1A","form_name":"Get the Unlimited Team Pass Today","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"\u003cp\u003e\u003cspan style=\"color:#000000;\"\u003e\u003cbig\u003e\u003cstrong\u003eTeam Advantage Pass\u003c\/strong\u003e\u003c\/big\u003e\u003c\/span\u003e\u003c\/p\u003e\n","form_submit":"Proceed to Checkout","after_submit":"hideAndmessage","after_submit_msg":"","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"2","back_type":"color","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"fullBtn","button_clr":"#fff","button_back_clr":"#0069a5","button_border_radius":"15","form_width":"600px","form_border_size":0,"form_border_clr":"#ffffff","form_border_radius":0,"label_font_size":"14","input_font_size":"12","button_font_size":"18","form_padding":"10","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#99e2f2","btn_border_size":"2","form_name":"Get the Unlimited Team Pass Today","":"","form_access_message":"\u003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","advance_js":"(function () {\n\n  const VARIANT_BY_SEATS = {\n    2:  \"62878715838833\",\n    3:  \"62878725472625\",\n    4:  \"62878742249841\",\n    5:  \"62878745330033\",\n    6:  \"62878747132273\",\n    7:  \"62879928680817\",\n    8:  \"62879929368945\",\n    9:  \"62879931531633\",\n    10: \"62879933038961\"\n  };\n\n  const STORE_DOMAIN = \"https:\/\/nbi-sems.com\";\n  const LOGIN_BASE  = \"https:\/\/account.nbi-sems.com\/Account\/Login?returnUrl=\";\n\n  const SEATS_ID = \"form_input_0\";\n  const FORM_ID  = \"formGeneratorForm\";\n\n  const DEFAULT_LABEL = \"2 Users\";\n\n  let redirectStarted = false;\n\n  function log(...args) {\n    console.log(\"[NBI Seats]\", ...args);\n  }\n\n  function parseSeats(val) {\n    if (!val) return null;\n    const m = String(val).match(\/(\\d+)\/);\n    return m ? parseInt(m[1], 10) : null;\n  }\n\n  function isLoggedIn() {\n    try { return !!window.ShopifyAnalytics?.meta?.page?.customerId; }\n    catch (e) { return false; }\n  }\n\n  function goTop(url) {\n    try {\n      if (window.top \u0026\u0026 window.top !== window.self) window.top.location.href = url;\n      else window.location.href = url;\n    } catch (e) {\n      window.location.href = url;\n    }\n  }\n\n  function redirectToCheckout(seats) {\n    if (redirectStarted) return;\n\n    const variantId = VARIANT_BY_SEATS[seats];\n    if (!variantId) {\n      log(\"Invalid seat count:\", seats);\n      return;\n    }\n\n    redirectStarted = true;\n\n    const addUrl =\n      `${STORE_DOMAIN}\/cart\/add` +\n      `?id=${encodeURIComponent(variantId)}` +\n      `\u0026quantity=1` +\n      `\u0026return_to=\/checkout`;\n\n    const finalUrl = isLoggedIn()\n      ? addUrl\n      : LOGIN_BASE + encodeURIComponent(addUrl);\n\n    log(\"Redirecting:\", finalUrl);\n    goTop(finalUrl);\n  }\n\n  \/\/ 🔥 This is the “make Hulk actually evaluate conditions” part\n  function kickConditionalEngine(el) {\n    if (!el) return;\n\n    const fireNative = () =\u003e {\n      el.dispatchEvent(new Event(\"input\",  { bubbles: true }));\n      el.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    };\n\n    const fireJQ = () =\u003e {\n      if (window.jQuery) window.jQuery(el).trigger(\"input\").trigger(\"change\");\n    };\n\n    \/\/ Fire now…\n    fireNative(); fireJQ();\n\n    \/\/ …and again after Hulk finishes binding\/rendering\n    [150, 500, 1200].forEach(ms =\u003e {\n      setTimeout(() =\u003e { fireNative(); fireJQ(); }, ms);\n    });\n  }\n\n  function setTo2UsersAndTrigger() {\n    const sel = document.getElementById(SEATS_ID);\n    if (!sel || !sel.options || !sel.options.length) return false;\n\n    \/\/ Find the \"2 Users\" option by TEXT (most reliable for Hulk conditions set by label)\n    const opts = Array.from(sel.options);\n    const target = opts.find(o =\u003e String(o.textContent).trim() === DEFAULT_LABEL)\n               || opts.find(o =\u003e String(o.value).trim() === DEFAULT_LABEL);\n\n    if (!target) {\n      log(\"Could not find option:\", DEFAULT_LABEL);\n      return false;\n    }\n\n    \/\/ If it's already set, still kick the engine (Hulk may have reset conditions)\n    sel.value = String(target.value);\n    sel.selectedIndex = opts.indexOf(target);\n\n    log(\"Selected:\", { text: String(target.textContent).trim(), value: String(target.value).trim() });\n\n    \/\/ Let the browser paint, then kick Hulk conditions\n    requestAnimationFrame(() =\u003e kickConditionalEngine(sel));\n\n    return true;\n  }\n\n  function bindRedirectHandlers() {\n    const form = document.getElementById(FORM_ID) || document.querySelector(\"#\" + FORM_ID);\n    if (!form) return false;\n\n    if (form.dataset.nbiBound === \"1\") return true;\n    form.dataset.nbiBound = \"1\";\n\n    const getSeatsNow = () =\u003e parseSeats(document.getElementById(SEATS_ID)?.value);\n\n    form.addEventListener(\"submit\", function () {\n      redirectToCheckout(getSeatsNow());\n    }, true);\n\n    form.addEventListener(\"click\", function (e) {\n      const btn = e.target \u0026\u0026 e.target.closest('button[type=\"submit\"], input[type=\"submit\"]');\n      if (!btn) return;\n      redirectToCheckout(getSeatsNow());\n    }, true);\n\n    return true;\n  }\n\n  function retryUntil(fn, { interval = 250, maxTries = 80 } = {}) {\n    let tries = 0;\n    const t = setInterval(() =\u003e {\n      tries++;\n      const ok = fn();\n      if (ok || tries \u003e= maxTries) clearInterval(t);\n    }, interval);\n  }\n\n  function init() {\n    \/\/ Hulk sometimes renders late; keep trying briefly\n    retryUntil(setTo2UsersAndTrigger, { interval: 250, maxTries: 60 });\n    retryUntil(bindRedirectHandlers,   { interval: 250, maxTries: 60 });\n\n    \/\/ One more pass after full load (covers late conditional-binding)\n    window.addEventListener(\"load\", () =\u003e {\n      setTimeout(setTo2UsersAndTrigger, 300);\n      setTimeout(setTo2UsersAndTrigger, 900);\n    });\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", init);\n  } else {\n    init();\n  }\n\n})();\n","advance_css":"","input_font_family":"Poppins","label_font_family":"Poppins","formElements":[{"Conditions":{},"type":"select","position":0,"label":"Select Users","values":"2 Users\n3 Users\n4 Users\n5 Users\n6 Users\n7 Users\n8 Users\n9 Users\n10 Users","elementCost":{},"page_number":1,"halfwidth":"no","required":"yes"},{"type":"paragraph","position":1,"label":"Label (4)","paragraph":"\u003cdiv style=\"float:left; margin:0px 30px 5px 0px; padding: 10px 10px 10px 10px; background-color: #d3f0f8; border-style: solid; border-width: 2px; border-color: #092254; border-radius: 15px;\"\u003e\n\u003cp style=\"color: #092254; text-align:center;\"\u003eTotal Price:\u003c\/p\u003e\n\n\u003cp style=\"color: #092254; text-align:center;\"\u003e\u003cstrong\u003e$2,299\/yr\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv style=\"margin-left:30px\"\u003e\n\u003cul\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited access to 2,500+ live and ondemand CLE courses from NBI\u003c\/li\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited paralegal training through Institute for Paralegal Education (IPE)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp style=\"color:black;\"\u003e\u003cstrong\u003e\u003cem\u003eSave over 50% on training for your entire legal team!\u003c\/em\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n","page_number":1,"Conditions":{"SelectedElemenet":"Select Users","SelectedElemenetCount":0,"SelectedValues":["2 Users"],"SelectedValue":"2 Users"}},{"type":"paragraph","position":2,"label":"Label (2)","paragraph":"\u003cdiv style=\"float:left; margin:0px 30px 5px 0px; padding: 10px 10px 10px 10px; background-color: #d3f0f8; border-style: solid; border-width: 2px; border-color: #092254; border-radius: 15px;\"\u003e\n\u003cp style=\"color: #092254; text-align:center;\"\u003eTotal Price:\u003c\/p\u003e\n\n\u003cp style=\"color: #092254; text-align:center;\"\u003e\u003cstrong\u003e$2,999\/yr\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv style=\"margin-left:30px\"\u003e\n\u003cul\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited access to 2,500+ live and ondemand CLE courses from NBI\u003c\/li\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited paralegal training through Institute for Paralegal Education (IPE)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp style=\"color:black;\"\u003e\u003cstrong\u003e\u003cem\u003eSave over 50% on training for your entire legal team!\u003c\/em\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n","page_number":1,"Conditions":{"SelectedElemenet":"Select Users","SelectedElemenetCount":0,"SelectedValues":["3 Users"],"SelectedValue":"3 Users"}},{"type":"paragraph","position":3,"label":"Label (3)","paragraph":"\u003cdiv style=\"float:left; margin:0px 30px 5px 0px; padding: 10px 10px 10px 10px; background-color: #d3f0f8; border-style: solid; border-width: 2px; border-color: #092254; border-radius: 15px;\"\u003e\n\u003cp style=\"color: #092254; text-align:center;\"\u003eTotal Price:\u003c\/p\u003e\n\n\u003cp style=\"color: #092254; text-align:center;\"\u003e\u003cstrong\u003e$3,599\/yr\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv style=\"margin-left:30px\"\u003e\n\u003cul\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited access to 2,500+ live and ondemand CLE courses from NBI\u003c\/li\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited paralegal training through Institute for Paralegal Education (IPE)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp style=\"color:black;\"\u003e\u003cstrong\u003e\u003cem\u003eSave over 50% on training for your entire legal team!\u003c\/em\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n","page_number":1,"Conditions":{"SelectedElemenet":"Select Users","SelectedElemenetCount":0,"SelectedValues":["4 Users"],"SelectedValue":"4 Users"}},{"type":"paragraph","position":4,"label":"Label (4)","paragraph":"\u003cdiv style=\"float:left; margin:0px 30px 5px 0px; padding: 10px 10px 10px 10px; background-color: #d3f0f8; border-style: solid; border-width: 2px; border-color: #092254; border-radius: 15px;\"\u003e\n\u003cp style=\"color: #092254; text-align:center;\"\u003eTotal Price:\u003c\/p\u003e\n\n\u003cp style=\"color: #092254; text-align:center;\"\u003e\u003cstrong\u003e$4,099\/yr\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv style=\"margin-left:30px\"\u003e\n\u003cul\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited access to 2,500+ live and ondemand CLE courses from NBI\u003c\/li\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited paralegal training through Institute for Paralegal Education (IPE)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp style=\"color:black;\"\u003e\u003cstrong\u003e\u003cem\u003eSave over 50% on training for your entire legal team!\u003c\/em\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n","page_number":1,"Conditions":{"SelectedElemenet":"Select Users","SelectedElemenetCount":0,"SelectedValues":["5 Users"],"SelectedValue":"5 Users"}},{"type":"paragraph","position":5,"label":"Label (5)","paragraph":"\u003cdiv style=\"float:left; margin:0px 30px 5px 0px; padding: 10px 10px 10px 10px; background-color: #d3f0f8; border-style: solid; border-width: 2px; border-color: #092254; border-radius: 15px;\"\u003e\n\u003cp style=\"color: #092254; text-align:center;\"\u003eTotal Price:\u003c\/p\u003e\n\n\u003cp style=\"color: #092254; text-align:center;\"\u003e\u003cstrong\u003e$4,599\/yr\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv style=\"margin-left:30px\"\u003e\n\u003cul\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited access to 2,500+ live and ondemand CLE courses from NBI\u003c\/li\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited paralegal training through Institute for Paralegal Education (IPE)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp style=\"color:black;\"\u003e\u003cstrong\u003e\u003cem\u003eSave over 50% on training for your entire legal team!\u003c\/em\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n","page_number":1,"Conditions":{"SelectedElemenet":"Select Users","SelectedElemenetCount":0,"SelectedValues":["6 Users"],"SelectedValue":"6 Users"}},{"type":"paragraph","position":6,"label":"Label (6)","paragraph":"\u003cdiv style=\"float:left; margin:0px 30px 5px 0px; padding: 10px 10px 10px 10px; background-color: #d3f0f8; border-style: solid; border-width: 2px; border-color: #092254; border-radius: 15px;\"\u003e\n\u003cp style=\"color: #092254; text-align:center;\"\u003eTotal Price:\u003c\/p\u003e\n\n\u003cp style=\"color: #092254; text-align:center;\"\u003e\u003cstrong\u003e$4,999\/yr\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv style=\"margin-left:30px\"\u003e\n\u003cul\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited access to 2,500+ live and ondemand CLE courses from NBI\u003c\/li\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited paralegal training through Institute for Paralegal Education (IPE)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp style=\"color:black;\"\u003e\u003cstrong\u003e\u003cem\u003eSave over 50% on training for your entire legal team!\u003c\/em\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n","page_number":1,"Conditions":{"SelectedElemenet":"Select Users","SelectedElemenetCount":0,"SelectedValues":["7 Users"],"SelectedValue":"7 Users"}},{"type":"paragraph","position":7,"label":"Label (7)","paragraph":"\u003cdiv style=\"float:left; margin:0px 30px 5px 0px; padding: 10px 10px 10px 10px; background-color: #d3f0f8; border-style: solid; border-width: 2px; border-color: #092254; border-radius: 15px;\"\u003e\n\u003cp style=\"color: #092254; text-align:center;\"\u003eTotal Price:\u003c\/p\u003e\n\n\u003cp style=\"color: #092254; text-align:center;\"\u003e\u003cstrong\u003e$5,399\/yr\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv style=\"margin-left:30px\"\u003e\n\u003cul\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited access to 2,500+ live and ondemand CLE courses from NBI\u003c\/li\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited paralegal training through Institute for Paralegal Education (IPE)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp style=\"color:black;\"\u003e\u003cstrong\u003e\u003cem\u003eSave over 50% on training for your entire legal team!\u003c\/em\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n","page_number":1,"Conditions":{"SelectedElemenet":"Select Users","SelectedElemenetCount":0,"SelectedValues":["8 Users"],"SelectedValue":"8 Users"}},{"type":"paragraph","position":8,"label":"Label (8)","paragraph":"\u003cdiv style=\"float:left; margin:0px 30px 5px 0px; padding: 10px 10px 10px 10px; background-color: #d3f0f8; border-style: solid; border-width: 2px; border-color: #092254; border-radius: 15px;\"\u003e\n\u003cp style=\"color: #092254; text-align:center;\"\u003eTotal Price:\u003c\/p\u003e\n\n\u003cp style=\"color: #092254; text-align:center;\"\u003e\u003cstrong\u003e$5,699\/yr\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv style=\"margin-left:30px\"\u003e\n\u003cul\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited access to 2,500+ live and ondemand CLE courses from NBI\u003c\/li\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited paralegal training through Institute for Paralegal Education (IPE)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp style=\"color:black;\"\u003e\u003cstrong\u003e\u003cem\u003eSave over 50% on training for your entire legal team!\u003c\/em\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n","page_number":1,"Conditions":{"SelectedElemenet":"Select Users","SelectedElemenetCount":0,"SelectedValues":["9 Users"],"SelectedValue":"9 Users"}},{"type":"paragraph","position":9,"label":"Label (9)","paragraph":"\u003cdiv style=\"float:left; margin:0px 30px 5px 0px; padding: 10px 10px 10px 10px; background-color: #d3f0f8; border-style: solid; border-width: 2px; border-color: #092254; border-radius: 15px;\"\u003e\n\u003cp style=\"color: #092254; text-align:center;\"\u003eTotal Price:\u003c\/p\u003e\n\n\u003cp style=\"color: #092254; text-align:center;\"\u003e\u003cstrong\u003e$5,999\/yr\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv style=\"margin-left:30px\"\u003e\n\u003cul\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited access to 2,500+ live and ondemand CLE courses from NBI\u003c\/li\u003e\n\t\u003cli style=\"margin: 0px 0px 3px 0px;\"\u003eUnlimited paralegal training through Institute for Paralegal Education (IPE)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cp style=\"color:black;\"\u003e\u003cstrong\u003e\u003cem\u003eSave over 50% on training for your entire legal team!\u003c\/em\u003e\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n","page_number":1,"Conditions":{"SelectedElemenet":"Select Users","SelectedElemenetCount":0,"SelectedValues":["10 Users"],"SelectedValue":"10 Users"}}]},"is_spam_form":false,"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Shopify Plus","shop_shopify_domain":"nbi-sems.myshopify.com"}},
    shop_data: {"shop_Bs-TVejd-qu_bysBgIbrqA":{"shop_uuid":"Bs-TVejd-qu_bysBgIbrqA","shop_timezone":"America\/Chicago","shop_id":105824,"shop_is_after_submit_enabled":true,"shop_shopify_plan":"Plus","shop_shopify_domain":"nbi-sems.myshopify.com","shop_created_at":"2024-04-26T08:12:48.103-05:00","is_skip_metafield":false,"shop_deleted":false,"shop_disabled":false}},
    settings_data: {"shop_settings":{"shop_customise_msgs":[],"default_customise_msgs":{"is_required":"is required","thank_you":"Thank you! The form was submitted successfully.","processing":"Processing...","valid_data":"Please provide valid data","valid_email":"Provide valid email format","valid_tags":"HTML Tags are not allowed","valid_phone":"Provide valid phone number","valid_captcha":"Please provide a valid CAPTCHA response.","valid_url":"Provide valid URL","only_number_alloud":"Provide valid number in","number_less":"must be less than","number_more":"must be more than","image_must_less":"Image must be less than 20MB","image_number":"Images allowed","image_extension":"Invalid extension! Please provide image file","error_image_upload":"Error in image upload. Please try again.","error_file_upload":"Error in file upload. Please try again.","your_response":"Your response","error_form_submit":"Error occur.Please try again after sometime.","email_submitted":"Form with this email is already submitted","invalid_email_by_zerobounce":"The email address you entered appears to be invalid. Please check it and try again.","download_file":"Download file","card_details_invalid":"Your card details are invalid","card_details":"Card details","please_enter_card_details":"Please enter card details","card_number":"Card number","exp_mm":"Exp MM","exp_yy":"Exp YY","crd_cvc":"CVV","payment_value":"Payment amount","please_enter_payment_amount":"Please enter a payment amount.","address1":"Address line 1","address2":"Address line 2","city":"City","province":"Province","zipcode":"Zip code","country":"Country","blocked_domain":"This form does not accept addresses from","file_must_less":"File must be less than 20MB","file_extension":"Invalid extension! Please provide file","only_file_number_alloud":"files allowed","previous":"Previous","next":"Next","must_have_a_input":"Please enter at least one field.","please_enter_required_data":"Please enter required data","atleast_one_special_char":"Include at least one special character","atleast_one_lowercase_char":"Include at least one lowercase character","atleast_one_uppercase_char":"Include at least one uppercase character","atleast_one_number":"Include at least one number","must_have_8_chars":"Must have 8 characters long","be_between_8_and_12_chars":"Be between 8 and 12 characters long","please_select":"Please Select","phone_submitted":"Form with this phone number is already submitted","user_res_parse_error":"Error while submitting the form","valid_same_values":"values must be the same","product_choice_clear_selection":"Clear Selection","picture_choice_clear_selection":"Clear Selection","remove_all_for_file_image_upload":"Remove All","invalid_file_type_for_image_upload":"You can't upload files of this type.","invalid_file_type_for_signature_upload":"You can't upload files of this type.","max_files_exceeded_for_file_upload":"You can not upload any more files.","max_files_exceeded_for_image_upload":"You can not upload any more files.","file_already_exist":"File already uploaded","max_limit_exceed":"You have added the maximum number of text fields.","cancel_upload_for_file_upload":"Cancel upload","cancel_upload_for_image_upload":"Cancel upload","cancel_upload_for_signature_upload":"Cancel upload"},"shop_blocked_domains":[]}},
    features_data: {"shop_plan_features":{"shop_plan_features":["unlimited-forms","full-design-customization","export-form-submissions","multiple-recipients-for-form-submissions","multiple-admin-notifications","enable-captcha","unlimited-file-uploads","save-submitted-form-data","set-auto-response-message","conditional-logic","form-banner","save-as-draft-facility","include-user-response-in-admin-email","disable-form-submission","mail-platform-integration","stripe-payment-integration","pre-built-templates","create-customer-account-on-shopify","google-analytics-3-by-tracking-id","facebook-pixel-id","bing-uet-pixel-id","advanced-js","advanced-css","api-available","customize-form-message","hidden-field","restrict-from-submissions-per-one-user","utm-tracking","ratings","privacy-notices","heading","paragraph","shopify-flow-trigger","domain-setup","block-domain","address","html-code","form-schedule","after-submit-script","customize-form-scrolling","on-form-submission-record-the-referrer-url","password","duplicate-the-forms","include-user-response-in-auto-responder-email","elements-add-ons","admin-and-auto-responder-email-with-tokens","email-export","premium-support","google-analytics-4-by-measurement-id","google-ads-for-tracking-conversion","validation-field","approve-or-decline-submission","product-choice","ticket-system","emoji-feedback","multi-line-text","iamge-choice","image-display","file-upload","slack-integration","google-sheets-integration","multi-page-form","access-only-for-logged-in-users","zapier-integration","add-tags-for-existing-customers","restrict-from-submissions-per-phone-number","multi-column-text","booking","zerobounce-integration","load_form_as_popup","advanced_conditional_logic"]}},
    shop: null,
    shop_id: null,
    plan_features: null,
    validateDoubleQuotes: false,
    assets: {
      extraFunctions: "https://cdn.shopify.com/extensions/019cb229-1d9a-7ddf-9952-ce2348f7efa4/form-builder-by-hulkapps-56/assets/extra-functions.js",
      extraStyles: "https://cdn.shopify.com/extensions/019cb229-1d9a-7ddf-9952-ce2348f7efa4/form-builder-by-hulkapps-56/assets/extra-styles.css",
      bootstrapStyles: "https://cdn.shopify.com/extensions/019cb229-1d9a-7ddf-9952-ce2348f7efa4/form-builder-by-hulkapps-56/assets/theme-app-extension-bootstrap.css"
    },
    translations: {
      htmlTagNotAllowed: "HTML Tags are not allowed",
      sqlQueryNotAllowed: "SQL Queries are not allowed",
      doubleQuoteNotAllowed: "Double quotes are not allowed",
      vorwerkHttpWwwNotAllowed: "The words \u0026#39;http\u0026#39; and \u0026#39;www\u0026#39; are not allowed. Please remove them and try again.",
      maxTextFieldsReached: "You have added the maximum number of text fields.",
      avoidNegativeWords: "Avoid negative words: Don\u0026#39;t use negative words in your contact message.",
      customDesignOnly: "This form is for custom designs requests. For general inquiries please contact our team at info@stagheaddesigns.com",
      zerobounceApiErrorMsg: "We couldn\u0026#39;t verify your email due to a technical issue. Please try again later.",
    }

  }

  

  window.FbThemeAppExtSettingsHash = {}
  
</script><!-- END app snippet --><!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/clarity_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->
<script type="text/javascript">
  (function (c, l, a, r, i, t, y) {
    c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); };
    t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i + "?ref=shopify";
    y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);

    c.Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }], error => {
      if (error) {
        console.error("Error loading Shopify features:", error);
        return;
      }

      c[a]('consentv2', {
        ad_Storage: c.Shopify.customerPrivacy.marketingAllowed() ? "granted" : "denied",
        analytics_Storage: c.Shopify.customerPrivacy.analyticsProcessingAllowed() ? "granted" : "denied",
        source: 101,
      });
    });

    l.addEventListener("visitorConsentCollected", function (e) {
      c[a]('consentv2', {
        ad_Storage: e.detail.marketingAllowed ? "granted" : "denied",
        analytics_Storage: e.detail.analyticsAllowed ? "granted" : "denied",
        source: 101,
      });
    });
  })(window, document, "clarity", "script", "v2i8np0jqm");
</script>



<!-- END app block --><!-- BEGIN app block: shopify://apps/elevar-conversion-tracking/blocks/dataLayerEmbed/bc30ab68-b15c-4311-811f-8ef485877ad6 -->



<script type="module" dynamic>
  const configUrl = "/a/elevar/static/configs/12854e91115ada4ed70ec130012d997ece9f45e7/config.js";
  const config = (await import(configUrl)).default;
  const scriptUrl = config.script_src_app_theme_embed;

  if (scriptUrl) {
    const { handler } = await import(scriptUrl);

    await handler(
      config,
      {
        cartData: {
  marketId: "42015555902",
  attributes:{},
  cartTotal: "0.0",
  currencyCode:"USD",
  items: []
}
,
        user: {cartTotal: "0.0",
    currencyCode:"USD",customer: {},
}
,
        isOnCartPage:false,
        collectionView:null,
        searchResultsView:null,
        productView:null,
        checkoutComplete: null
      }
    );
  }
</script>


<!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/brandAgents_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->





<!-- END app block --><!-- BEGIN app block: shopify://apps/gift-box/blocks/head/f53ea332-e066-453a-9116-800349284dfb --><script>
const isProductPage = window.location.pathname.includes("/products/");

// Allow redirect only on product pages.
if (isProductPage) {
  const GHOST_PRODUCT_TYPE = "giftbox_ghost_product";
  // Use product handle to check the type of the product.
  const product_type = "";
  if (product_type == GHOST_PRODUCT_TYPE) {
    // Redirect to the GP parent URL stored in the GP's metafields.
    const parent_product_url = '';
    if (parent_product_url === null || parent_product_url === '') {
      window.location.replace("/");
    } else {
      window.location.replace(parent_product_url);
    }
  }
}
</script>

<script
  src="https://giftbox.ds-cdn.com/static/main.js?shop=nbi-sems.myshopify.com"

  async

></script>


<!-- END app block --><script src="https://cdn.shopify.com/extensions/4d5a2c47-c9fc-4724-a26e-14d501c856c6/attrac-6/assets/attrac-embed-bars.js" type="text/javascript" defer="defer"></script>
<script src="https://cdn.shopify.com/extensions/019cb229-1d9a-7ddf-9952-ce2348f7efa4/form-builder-by-hulkapps-56/assets/form-builder-script.js" type="text/javascript" defer="defer"></script>
<script src="https://cdn.shopify.com/extensions/019d06e8-9292-72c9-852c-01d0178f1d5d/aftersell-629/assets/aftersell-utm-triggers.js" type="text/javascript" defer="defer"></script>
<script src="https://cdn.shopify.com/extensions/019cd995-f4c5-796f-9f8f-98de066aa2ee/595c03fbda96effdd31151c055c8d75f8c3477ca-26521/assets/algolia_autocomplete.js" type="text/javascript" defer="defer"></script>
<script src="https://cdn.shopify.com/extensions/019cfb3d-1777-7b83-9139-21f21eea8a0b/recommenda-quiz-builder-126/assets/quiz.js" type="text/javascript" defer="defer"></script>
<link href="https://cdn.shopify.com/extensions/019cfb3d-1777-7b83-9139-21f21eea8a0b/recommenda-quiz-builder-126/assets/quiz.css" rel="stylesheet" type="text/css" media="all">
<script src="https://cdn.shopify.com/extensions/019cfb3d-1777-7b83-9139-21f21eea8a0b/recommenda-quiz-builder-126/assets/quiz-link.js" type="text/javascript" defer="defer"></script>
<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 69259985214,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "index"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
<script id="web-pixels-manager-setup">(function e(e,d,r,n,o){if(void 0===o&&(o={}),!Boolean(null===(a=null===(i=window.Shopify)||void 0===i?void 0:i.analytics)||void 0===a?void 0:a.replayQueue)){var i,a;window.Shopify=window.Shopify||{};var t=window.Shopify;t.analytics=t.analytics||{};var s=t.analytics;s.replayQueue=[],s.publish=function(e,d,r){return s.replayQueue.push([e,d,r]),!0};try{self.performance.mark("wpm:start")}catch(e){}var l=function(){var e={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/},d=e.modern,r=e.legacy,n=navigator.userAgent;return n.match(d)?"modern":n.match(r)?"legacy":"unknown"}(),u="modern"===l?"modern":"legacy",c=(null!=n?n:{modern:"",legacy:""})[u],f=function(e){return[e.baseUrl,"/wpm","/b",e.hashVersion,"modern"===e.buildTarget?"m":"l",".js"].join("")}({baseUrl:d,hashVersion:r,buildTarget:u}),m=function(e){var d=e.version,r=e.bundleTarget,n=e.surface,o=e.pageUrl,i=e.monorailEndpoint;return{emit:function(e){var a=e.status,t=e.errorMsg,s=(new Date).getTime(),l=JSON.stringify({metadata:{event_sent_at_ms:s},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:d,bundle_target:r,page_url:o,status:a,surface:n,error_msg:t},metadata:{event_created_at_ms:s}}]});if(!i)return console&&console.warn&&console.warn("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{return self.navigator.sendBeacon.bind(self.navigator)(i,l)}catch(e){}var u=new XMLHttpRequest;try{return u.open("POST",i,!0),u.setRequestHeader("Content-Type","text/plain"),u.send(l),!0}catch(e){return console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}}}({version:r,bundleTarget:l,surface:e.surface,pageUrl:self.location.href,monorailEndpoint:e.monorailEndpoint});try{o.browserTarget=l,function(e){var d=e.src,r=e.async,n=void 0===r||r,o=e.onload,i=e.onerror,a=e.sri,t=e.scriptDataAttributes,s=void 0===t?{}:t,l=document.createElement("script"),u=document.querySelector("head"),c=document.querySelector("body");if(l.async=n,l.src=d,a&&(l.integrity=a,l.crossOrigin="anonymous"),s)for(var f in s)if(Object.prototype.hasOwnProperty.call(s,f))try{l.dataset[f]=s[f]}catch(e){}if(o&&l.addEventListener("load",o),i&&l.addEventListener("error",i),u)u.appendChild(l);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(l)}}({src:f,async:!0,onload:function(){if(!function(){var e,d;return Boolean(null===(d=null===(e=window.Shopify)||void 0===e?void 0:e.analytics)||void 0===d?void 0:d.initialized)}()){var d=window.webPixelsManager.init(e)||void 0;if(d){var r=window.Shopify.analytics;r.replayQueue.forEach((function(e){var r=e[0],n=e[1],o=e[2];d.publishCustomEvent(r,n,o)})),r.replayQueue=[],r.publish=d.publishCustomEvent,r.visitor=d.visitor,r.initialized=!0}}},onerror:function(){return m.emit({status:"failed",errorMsg:"".concat(f," has failed to load")})},sri:function(e){var d=/^sha384-[A-Za-z0-9+/=]+$/;return"string"==typeof e&&d.test(e)}(c)?c:"",scriptDataAttributes:o}),m.emit({status:"loading"})}catch(e){m.emit({status:"failed",errorMsg:(null==e?void 0:e.message)||"Unknown error"})}}})({shopId: 69259985214,storefrontBaseUrl: "https://nbi-sems.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://monorail-edge.shopifysvc.com/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["2dca8a86","5476ea20","ed8389fc"],webPixelsConfigList: [{"id":"3465052529","configuration":"{\"shop\":\"nbi-sems.myshopify.com\", \"shopliftUrl\":\"https:\/\/events.shoplift.ai\/api\/events\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"27baf6c866b53a6892b5de26ecda141b","type":"APP","apiClientId":7521861633,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["3b5414a6"]},{"id":"3260612977","configuration":"{\"projectId\":\"v2i8np0jqm\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"3f95c569dcd8d256ed20e00a12567bee","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["3b5414a6"]},{"id":"3013968241","configuration":"{\"storeUuid\":\"b997ae2e-447c-4f7b-acfb-882fcab423d3\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"2aec70e60dfec3094e3f478b61731238","type":"APP","apiClientId":1806141,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["3b5414a6"]},{"id":"467370302","configuration":"{\"site_id\":\"a41645ec-6dc5-4859-90bd-a1fca4dadd20\",\"analytics_endpoint\":\"https:\\\/\\\/na.shgcdn3.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"695709fc3f146fa50a25299517a954f2","type":"APP","apiClientId":1158168,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["3b5414a6"]},{"id":"102891838","configuration":"{\"config_url\": \"\/a\/elevar\/static\/configs\/12854e91115ada4ed70ec130012d997ece9f45e7\/config.js\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"ab86028887ec2044af7d02b854e52653","type":"APP","apiClientId":2509311,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["3b5414a6"]},{"id":"101908798","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Elevar - Checkout Tracking"},{"id":"111477054","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Algolia Shopify Web Pixel"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0450","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"NBI","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"nbi-sems.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/nbi-sems.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"purchasingCompany":null},},"https://nbi-sems.com/cdn","2f2288a8w2fafd01bp23157a73mcb0adebf",{"modern":"","legacy":""},{"shopId":"69259985214","storefrontBaseUrl":"https:\/\/nbi-sems.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"2dca8a86\", \"5476ea20\", \"ed8389fc\"]","isMerchantRequest":"false","hashVersion":"2f2288a8w2fafd01bp23157a73mcb0adebf","publish":"custom","events":"[[\"page_viewed\",{}]]"});</script><script>
  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
  window.ShopifyAnalytics.meta.currency = 'USD';
  var meta = {"page":{"pageType":"home","requestId":"a2deb987-c25d-47e6-9700-e6c86546ce70-1773945845"}};
  for (var attr in meta) {
    window.ShopifyAnalytics.meta[attr] = meta[attr];
  }
</script>
<script class="analytics">
  (function () {
    var customDocumentWrite = function(content) {
      var jquery = null;

      if (window.jQuery) {
        jquery = window.jQuery;
      } else if (window.Checkout && window.Checkout.$) {
        jquery = window.Checkout.$;
      }

      if (jquery) {
        jquery('body').append(content);
      }
    };

    var hasLoggedConversion = function(token) {
      if (token) {
        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
      }
      return false;
    }

    var setCookieIfConversion = function(token) {
      if (token) {
        var twoMonthsFromNow = new Date(Date.now());
        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);

        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
      }
    }

    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
    if (trekkie.integrations) {
      return;
    }
    trekkie.methods = [
      'identify',
      'page',
      'ready',
      'track',
      'trackForm',
      'trackLink'
    ];
    trekkie.factory = function(method) {
      return function() {
        var args = Array.prototype.slice.call(arguments);
        args.unshift(method);
        trekkie.push(args);
        return trekkie;
      };
    };
    for (var i = 0; i < trekkie.methods.length; i++) {
      var key = trekkie.methods[i];
      trekkie[key] = trekkie.factory(key);
    }
    trekkie.load = function(config) {
      trekkie.config = config || {};
      trekkie.config.initialDocumentCookie = document.cookie;
      var first = document.getElementsByTagName('script')[0];
      var script = document.createElement('script');
      script.type = 'text/javascript';
      script.onerror = function(e) {
        var scriptFallback = document.createElement('script');
        scriptFallback.type = 'text/javascript';
        scriptFallback.onerror = function(error) {
                var Monorail = {
      produce: function produce(monorailDomain, schemaId, payload) {
        var currentMs = new Date().getTime();
        var event = {
          schema_id: schemaId,
          payload: payload,
          metadata: {
            event_created_at_ms: currentMs,
            event_sent_at_ms: currentMs
          }
        };
        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
      },
      sendRequest: function sendRequest(endpointUrl, payload) {
        // Try the sendBeacon API
        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
          var blobData = new window.Blob([payload], {
            type: 'text/plain'
          });

          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
            return true;
          } // sendBeacon was not successful

        } // XHR beacon

        var xhr = new XMLHttpRequest();

        try {
          xhr.open('POST', endpointUrl);
          xhr.setRequestHeader('Content-Type', 'text/plain');
          xhr.send(payload);
        } catch (e) {
          console.log(e);
        }

        return false;
      },
      isIos12: function isIos12() {
        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
      }
    };
    Monorail.produce('monorail-edge.shopifysvc.com',
      'trekkie_storefront_load_errors/1.1',
      {shop_id: 69259985214,
      theme_id: 190790271345,
      app_name: "storefront",
      context_url: window.location.href,
      source_url: "//nbi-sems.com/cdn/s/trekkie.storefront.dd9b4dd0f40aa86ba6051ff19e2e97f108a849d1.min.js"});

        };
        scriptFallback.async = true;
        scriptFallback.src = '//nbi-sems.com/cdn/s/trekkie.storefront.dd9b4dd0f40aa86ba6051ff19e2e97f108a849d1.min.js';
        first.parentNode.insertBefore(scriptFallback, first);
      };
      script.async = true;
      script.src = '//nbi-sems.com/cdn/s/trekkie.storefront.dd9b4dd0f40aa86ba6051ff19e2e97f108a849d1.min.js';
      first.parentNode.insertBefore(script, first);
    };
    trekkie.load(
      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":69259985214,"isMerchantRequest":null,"themeId":190790271345,"themeCityHash":"6712207753077953168","contentLanguage":"en","currency":"USD"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["65f19447","b5387b81"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
    );

    var loaded = false;
    trekkie.ready(function() {
      if (loaded) return;
      loaded = true;

      window.ShopifyAnalytics.lib = window.trekkie;

      var originalDocumentWrite = document.write;
      document.write = customDocumentWrite;
      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
      document.write = originalDocumentWrite;

      window.ShopifyAnalytics.lib.page(null,{"pageType":"home","requestId":"a2deb987-c25d-47e6-9700-e6c86546ce70-1773945845","shopifyEmitted":true});

      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
      var token = match? match[1]: undefined;
      if (!hasLoggedConversion(token)) {
        setCookieIfConversion(token);
        
      }
    });


        var eventsListenerScript = document.createElement('script');
        eventsListenerScript.async = true;
        eventsListenerScript.src = "//nbi-sems.com/cdn/shopifycloud/storefront/assets/shop_events_listener-3da45d37.js";
        document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);

})();</script>
<script
  defer
  src="https://nbi-sems.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.3.0.min.js"
  data-application="storefront-renderer"
  data-shop-id="69259985214"
  data-render-region="gcp-us-central1"
  data-page-type="index"
  data-theme-instance-id="190790271345"
  data-theme-name="Domaine"
  data-theme-version="2.7.0"
  data-monorail-region="shop_domain"
  data-resource-timing-sampling-rate="10"
  data-shs="true"
  data-shs-beacon="true"
  data-shs-export-with-fetch="true"
  data-shs-logs-sample-rate="1"
  data-shs-beacon-endpoint="https://nbi-sems.com/api/collect"
></script>
</head>

  <body class='template-index'><app-provider>


  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-aria-live-region.D81yfbaK.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/aria-live-region-context.BZEtRCSs.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/consume.CHsRYPSi.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/create-context.89xeped_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/context-request-event.CcEA9XIP.min.js" crossorigin="anonymous">

<aria-live-region></aria-live-region>
        <a class='skip-to-content-link sr-only' href='#main'>
          Skip to content
        </a>

        <main-header id='main-header' class='sticky top-0 z-50  grid w-full grid-cols-1'><!-- BEGIN sections: header-group -->
<div id="shopify-section-sections--27690274816369__announcement-bar" class="shopify-section shopify-section-group-header-group relative announcement-bar-wrapper">
<style>
  :root #shopify-section-sections--27690274816369__announcement-bar {
    --announcement-bar-text-color: ;
  }
</style>


  <script src="//nbi-sems.com/cdn/shop/t/347/assets/component-announcement-bar.Da3hhZl8.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">


<component-announcement-bar
  class='relative z-10 hidden transition-all duration-300 ease-in-out'
  
>
  
</component-announcement-bar>


<style> #shopify-section-sections--27690274816369__announcement-bar p {text-align: center;} </style></div><div id="shopify-section-sections--27690274816369__main" class="shopify-section shopify-section-group-header-group"><header class='bg-t-brand-primary'>
  <div class='hidden border-b border-t-secondary-blue lg:flex'>
    <div class='flex w-full items-center justify-between px-sm py-xs 2xl:container md:px-pagemargin'>
      <span class='text-t-white'><p>We’re here to help! (800) 930-6182</p></span><a
            href='https://account.nbi-sems.com/Account/Login?returnUrl=https://account.nbi-sems.com/Account'
            class='flex items-center gap-x-2xs !border-none !text-t-white'
            variant='tertiary'
          >
            Log in
          </a>
        
      
    </div>
  </div>
  <div class='flex items-center gap-x-sm gap-y-2xs px-sm py-md 2xl:container md:px-pagemargin md:py-[15px] lg:justify-between'>
    
    <div class='flex grow items-center justify-start lg:grow-[unset]'><h1 class='inline-flex items-center'><a href='/' class='h6 inline-flex uppercase'><div
                class='inline-flex w-[70px] max-md:h-[25px] md:w-[--header-logo-width]'
                style='--header-logo-width: 160px'
            >
              

<img src="//nbi-sems.com/cdn/shop/files/NBI_with_name_White_Logo.svg?v=1756322888&amp;width=600" alt="" srcset="//nbi-sems.com/cdn/shop/files/NBI_with_name_White_Logo.svg?v=1756322888&amp;width=160 160w, //nbi-sems.com/cdn/shop/files/NBI_with_name_White_Logo.svg?v=1756322888&amp;width=240 240w, //nbi-sems.com/cdn/shop/files/NBI_with_name_White_Logo.svg?v=1756322888&amp;width=320 320w" width="600" height="300" decoding="auto" sizes="(max-width: 320px) 50vw, 160px" class="w-full block  object-contain" fetchpriority="auto"></div></a></h1></div><div class='col-span-3 hidden lg:grid'>
        <mega-menu>
          <ul class='flex items-center justify-center gap-x-[30px]' role='list'>
            <li id="shopify-block-ANEVTL0U5N1Fjd1Rzb__header_mega_menu_TcQLF9" class="shopify-block"><div id='Details-HeaderMenu-ANEVTL0U5N1Fjd1Rzb__header_mega_menu_TcQLF9'>
  <a
    id='HeaderMenu-ANEVTL0U5N1Fjd1Rzb__header_mega_menu_TcQLF9'
    class='p peer tracking-[1.4px] uppercase text-t-white hover:decoration hover:text-t-white font-medium hover:underline-offset-[33px]'
    href='/collections/all-courses'
    aria-haspopup='menu'
    aria-expanded='false'
    aria-controls='MegaMenu-Content-ANEVTL0U5N1Fjd1Rzb__header_mega_menu_TcQLF9'
    menu-trigger
    data-test-id='sections--27690274816369__main-cle-courses-collections-all-courses'
  >
    <span>CLE COURSES</span>
    
<svg-icon
  src='icon-caret'
  class='hidden'

  
    style='--icon-size: 10px;'
  

  
  
></svg-icon>

  </a>

  
    <div
      id='MegaMenu-Content-ANEVTL0U5N1Fjd1Rzb__header_mega_menu_TcQLF9'
      class='absolute border-t border-t-secondary-blue bg-t-brand-primary top-full left-0 right-0 drop-shadow invisible opacity-0 transition-[opacity,visibility] duration-200 peer-[[aria-expanded="true"]]:visible peer-[[aria-expanded="true"]]:opacity-100 group-focus-within:visible group-focus-within:opacity-100'
      aria-hidden='true'
      role='region'
      menu
      aria-labelledby='HeaderMenu-ANEVTL0U5N1Fjd1Rzb__header_mega_menu_TcQLF9'
    >
      <div  class='mx-auto max-w-[1536px]' >
        <ul
          class='grid grid-cols-3 '
          role='list'
        ><li
  
  class='px-md lg:border-r lg:border-t-secondary-blue last-of-type:border-none last-of-type:flex-grow lg:pt-xl lg:px-pagemargin lg:pb-[85px] flex flex-col gap-y-lg lg:gap-y-md'
><h4
      id='HeaderMenu-AZEJscHJBck4vdDRqQ__header_link_list_K8TAfy'
      class='uppercase text-t-grey-200 text-[14px] font-medium tracking-[1.4px] leading-none'
    >
      FORMAT
    </h4><ul class='list-none text-t-white  flex flex-col  gap-y-sm' role='list'><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AZEJscHJBck4vdDRqQ__header_link_list_K8TAfy-all-cle-courses'
            href='/collections/all-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-all-cle-courses-collections-all-courses'
          >
            All CLE Courses
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AZEJscHJBck4vdDRqQ__header_link_list_K8TAfy-upcoming-live-webinars'
            href='https://nbi-sems.com/collections/upcoming-courses?sortBy=nbi_shopify_products_event_date_asc'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-upcoming-live-webinars-https-nbi-sems-com-collections-upcoming-courses-sortby-nbi_shopify_products_event_date_asc'
          >
            Upcoming Live Webinars
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AZEJscHJBck4vdDRqQ__header_link_list_K8TAfy-ondemand'
            href='/collections/ondemand-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-ondemand-collections-ondemand-courses'
          >
            OnDemand
          </a></li></ul></li>


<li
  
  class='px-md lg:border-r lg:border-t-secondary-blue last-of-type:border-none last-of-type:flex-grow lg:pt-xl lg:px-pagemargin lg:pb-[85px] flex flex-col gap-y-lg lg:gap-y-md'
><h4
      id='HeaderMenu-AbmpUa29EUnF0Tm9LQ__header_link_list_xgmmQP'
      class='uppercase text-t-grey-200 text-[14px] font-medium tracking-[1.4px] leading-none'
    >
      STATE
    </h4><ul class='list-none text-t-white  flex flex-col  gap-y-sm' role='list'><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AbmpUa29EUnF0Tm9LQ__header_link_list_xgmmQP-all-states-51'
            href='/pages/cle-courses-by-jurisdiction'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-all-states-51-pages-cle-courses-by-jurisdiction'
          >
            All States (51)
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AbmpUa29EUnF0Tm9LQ__header_link_list_xgmmQP-california'
            href='https://nbi-sems.com/collections/california-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=California%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-california-https-nbi-sems-com-collections-california-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-california-20cle'
          >
            California
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AbmpUa29EUnF0Tm9LQ__header_link_list_xgmmQP-florida'
            href='https://nbi-sems.com/collections/florida-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Florida%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-florida-https-nbi-sems-com-collections-florida-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-florida-20cle'
          >
            Florida
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AbmpUa29EUnF0Tm9LQ__header_link_list_xgmmQP-georgia'
            href='https://nbi-sems.com/collections/georgia-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Georgia%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-georgia-https-nbi-sems-com-collections-georgia-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-georgia-20cle'
          >
            Georgia
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AbmpUa29EUnF0Tm9LQ__header_link_list_xgmmQP-montana'
            href='https://nbi-sems.com/collections/montana-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Montana%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-montana-https-nbi-sems-com-collections-montana-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-montana-20cle'
          >
            Montana
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AbmpUa29EUnF0Tm9LQ__header_link_list_xgmmQP-new-york'
            href='https://nbi-sems.com/collections/new-york-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=New%20York%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-new-york-https-nbi-sems-com-collections-new-york-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-new-20york-20cle'
          >
            New York
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AbmpUa29EUnF0Tm9LQ__header_link_list_xgmmQP-oregon'
            href='https://nbi-sems.com/collections/oregon-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Oregon%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-oregon-https-nbi-sems-com-collections-oregon-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-oregon-20cle'
          >
            Oregon
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AbmpUa29EUnF0Tm9LQ__header_link_list_xgmmQP-pennsylvania'
            href='https://nbi-sems.com/collections/pennsylvania-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Pennsylvania%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-pennsylvania-https-nbi-sems-com-collections-pennsylvania-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-pennsylvania-20cle'
          >
            Pennsylvania
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AbmpUa29EUnF0Tm9LQ__header_link_list_xgmmQP-texas'
            href='https://nbi-sems.com/collections/texas-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Texas%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-texas-https-nbi-sems-com-collections-texas-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-texas-20cle'
          >
            Texas
          </a></li></ul></li>


<li
  
  class='px-md lg:border-r lg:border-t-secondary-blue last-of-type:border-none last-of-type:flex-grow lg:pt-xl lg:px-pagemargin lg:pb-[85px] flex flex-col gap-y-lg lg:gap-y-md'
><h4
      id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm'
      class='uppercase text-t-grey-200 text-[14px] font-medium tracking-[1.4px] leading-none'
    >
      TOPIC
    </h4><ul class='list-none text-t-white  flex flex-col  gap-y-sm' role='list'><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-all-topics-41'
            href='/pages/cle-courses-by-topic'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-all-topics-41-pages-cle-courses-by-topic'
          >
            All Topics (41)
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-ai-for-lawyers'
            href='/collections/generative-ai-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-ai-for-lawyers-collections-generative-ai-cle-courses'
          >
            AI for Lawyers
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-bankruptcy-foreclosure-collection'
            href='/collections/bankruptcy-foreclosure-collection-law-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-bankruptcy-foreclosure-collection-collections-bankruptcy-foreclosure-collection-law-cle-courses'
          >
            Bankruptcy, Foreclosure &amp; Collection
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-business-securities-law'
            href='/collections/business-securities-law-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-business-securities-law-collections-business-securities-law-cle-courses'
          >
            Business &amp; Securities Law
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-ethics-specialty'
            href='/pages/ethics-specialty-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-ethics-specialty-pages-ethics-specialty-cle-courses'
          >
            Ethics &amp; Specialty
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-estate-planning-trusts-probate'
            href='/collections/trusts-estates-probate-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-estate-planning-trusts-probate-collections-trusts-estates-probate-cle-courses'
          >
            Estate Planning, Trusts &amp; Probate
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-family-law'
            href='/collections/family-law-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-family-law-collections-family-law-cle-courses'
          >
            Family Law
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-labor-employment'
            href='/collections/labor-employment-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-labor-employment-collections-labor-employment-cle-courses'
          >
            Labor &amp; Employment
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-litigation-appeals'
            href='/collections/litigation-appeals-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-litigation-appeals-collections-litigation-appeals-cle-courses'
          >
            Litigation &amp; Appeals
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-personal-injury-negligence'
            href='/collections/personal-injury-negligence-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-personal-injury-negligence-collections-personal-injury-negligence-cle-courses'
          >
            Personal Injury &amp; Negligence
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ANE1oUFYvY2ZqbDZYc__header_link_list_k67rBm-real-estate'
            href='/collections/real-estate-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-real-estate-collections-real-estate-cle-courses'
          >
            Real Estate
          </a></li></ul></li>


</ul>
      </div>
    </div>
  
</div>


</li>
<li id="shopify-block-AdElkZmtUME5zSlAzO__header_mega_menu_GNB4Gj" class="shopify-block"><div id='Details-HeaderMenu-AdElkZmtUME5zSlAzO__header_mega_menu_GNB4Gj'>
  <a
    id='HeaderMenu-AdElkZmtUME5zSlAzO__header_mega_menu_GNB4Gj'
    class='p peer tracking-[1.4px] uppercase text-t-white hover:decoration hover:text-t-white font-medium hover:underline-offset-[33px]'
    href='/pages/cle-requirements-by-jurisdiction'
    aria-haspopup='menu'
    aria-expanded='false'
    aria-controls='MegaMenu-Content-AdElkZmtUME5zSlAzO__header_mega_menu_GNB4Gj'
    menu-trigger
    data-test-id='sections--27690274816369__main-cle-requirements-pages-cle-requirements-by-jurisdiction'
  >
    <span>CLE REQUIREMENTS</span>
    
<svg-icon
  src='icon-caret'
  class='hidden'

  
    style='--icon-size: 10px;'
  

  
  
></svg-icon>

  </a>

  
    <div
      id='MegaMenu-Content-AdElkZmtUME5zSlAzO__header_mega_menu_GNB4Gj'
      class='absolute border-t border-t-secondary-blue bg-t-brand-primary top-full left-0 right-0 drop-shadow invisible opacity-0 transition-[opacity,visibility] duration-200 peer-[[aria-expanded="true"]]:visible peer-[[aria-expanded="true"]]:opacity-100 group-focus-within:visible group-focus-within:opacity-100'
      aria-hidden='true'
      role='region'
      menu
      aria-labelledby='HeaderMenu-AdElkZmtUME5zSlAzO__header_mega_menu_GNB4Gj'
    >
      <div  class='mx-auto max-w-[1536px]' >
        <ul
          class='grid grid-cols-2 '
          role='list'
        ><li
  
  class='px-md lg:border-r lg:border-t-secondary-blue last-of-type:border-none last-of-type:flex-grow lg:pt-xl lg:px-pagemargin lg:pb-[85px] flex flex-col gap-y-lg lg:gap-y-md'
><h4
      id='HeaderMenu-AMzNwV1YyOS9kWFlFT__header_link_list_RitmDY'
      class='uppercase text-t-grey-200 text-[14px] font-medium tracking-[1.4px] leading-none'
    >
      State
    </h4><ul class='list-none text-t-white  flex flex-col  gap-y-sm' role='list'><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AMzNwV1YyOS9kWFlFT__header_link_list_RitmDY-all-states-51'
            href='/pages/cle-requirements-by-jurisdiction'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-all-states-51-pages-cle-requirements-by-jurisdiction'
          >
            All States (51)
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AMzNwV1YyOS9kWFlFT__header_link_list_RitmDY-california'
            href='/pages/californiamclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-california-pages-californiamclerequirements'
          >
            California
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AMzNwV1YyOS9kWFlFT__header_link_list_RitmDY-florida'
            href='/pages/floridaclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-florida-pages-floridaclerequirements'
          >
            Florida
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AMzNwV1YyOS9kWFlFT__header_link_list_RitmDY-montana'
            href='/pages/montanaclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-montana-pages-montanaclerequirements'
          >
            Montana
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AMzNwV1YyOS9kWFlFT__header_link_list_RitmDY-new-york'
            href='/pages/new-yorkclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-new-york-pages-new-yorkclerequirements'
          >
            New York
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AMzNwV1YyOS9kWFlFT__header_link_list_RitmDY-oregon'
            href='/pages/oregonclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-oregon-pages-oregonclerequirements'
          >
            Oregon
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AMzNwV1YyOS9kWFlFT__header_link_list_RitmDY-pennsylvania'
            href='/pages/pennsylvaniaclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-pennsylvania-pages-pennsylvaniaclerequirements'
          >
            Pennsylvania
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AMzNwV1YyOS9kWFlFT__header_link_list_RitmDY-texas'
            href='/pages/texasclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__main-texas-pages-texasclerequirements'
          >
            Texas
          </a></li></ul></li>


<div id="shopify-block-AaVdwaHlnWmxjQTc4T__header_image_content_pTEGDq" class="shopify-block">
<a
  href='/pages/ethics-specialty-cle-courses'
  class='grid grid-cols-1 gap-xs h-full header-image__content'
  data-test-id='sections--27690274816369__main-get-your-courses-pages-ethics-specialty-cle-courses'
>

  <div class='relative min-h-[290px]'>
    <div class='absolute inset-0'>
      




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=300 300w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=450 450w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=600 600w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=750 750w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=900 900w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=1050 1050w,
    '
    width='1619'
    height='846'
  >
<img src="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1619" alt="" srcset="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=320 320w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=640 640w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=960 960w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1280 1280w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1600 1600w" width="1619" height="846" loading="eager" decoding="auto" sizes="100vw, (min-width: 1024px) 20vw" class="w-full block w-full h-full object-cover object-cover" fetchpriority="high"></picture>

    </div>
    <div class='relative pt-xl pb-sm px-pagemargin '>
      <div class='max-w-[400px]'>
        <div
          class='flex flex-col gap-y-xs'
          
            style='color: #ffffff;'
          
        ><h4 class='font-medium leading-[130%] tracking-normal'>
                Looking for Ethics and Specialty CLE Courses?
              </h4><p class='text-[12px] lg:text-[16px]'>
              No matter your state’s requirements, you’ll find exactly what you’re looking for, all in one place.
            </p></div><button
            class='btn mt-md !px-sm text-[12px] !h-[45px] !min-w-[100px] font-medium tracking-[0.42px]  lg:!h-[50px] lg:text-[14px] lg:mt-sm hover:!bg-[unset]'
            variant='secondary'
            style='color: #99e2f2; border-color: #99e2f2;'
          >
            <span>Get Your Courses</span>
            <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
          </button></div>
    </div>
  </div>

</a>



</div>
</ul>
      </div>
    </div>
  
</div>


</li>
<li id="shopify-block-AYll4UERSOHZBWnE5N__header_mega_menu_VbEbmz" class="shopify-block"><div id='Details-HeaderMenu-AYll4UERSOHZBWnE5N__header_mega_menu_VbEbmz'>
  <a
    id='HeaderMenu-AYll4UERSOHZBWnE5N__header_mega_menu_VbEbmz'
    class='p peer tracking-[1.4px] uppercase text-t-white hover:decoration hover:text-t-white font-medium hover:underline-offset-[33px]'
    href='/pages/subscribe-save'
    aria-haspopup='menu'
    aria-expanded='false'
    aria-controls='MegaMenu-Content-AYll4UERSOHZBWnE5N__header_mega_menu_VbEbmz'
    menu-trigger
    data-test-id='sections--27690274816369__main-subscriptions-pages-subscribe-save'
  >
    <span>Subscriptions</span>
    
<svg-icon
  src='icon-caret'
  class='hidden'

  
    style='--icon-size: 10px;'
  

  
  
></svg-icon>

  </a>

  
    <div
      id='MegaMenu-Content-AYll4UERSOHZBWnE5N__header_mega_menu_VbEbmz'
      class='absolute border-t border-t-secondary-blue bg-t-brand-primary top-full left-0 right-0 drop-shadow invisible opacity-0 transition-[opacity,visibility] duration-200 peer-[[aria-expanded="true"]]:visible peer-[[aria-expanded="true"]]:opacity-100 group-focus-within:visible group-focus-within:opacity-100'
      aria-hidden='true'
      role='region'
      menu
      aria-labelledby='HeaderMenu-AYll4UERSOHZBWnE5N__header_mega_menu_VbEbmz'
    >
      <div >
        <ul
          class='grid grid-cols-3 '
          role='list'
        ><div id="shopify-block-AT05tNW5qZHJuVlVEN__header_image_content_XP9Tic" class="shopify-block">
<div class='grid grid-cols-1 gap-xs h-full header-image__content'>

  <div class='relative min-h-[290px]'>
    <div class='absolute inset-0'>
      




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      Liquid error (snippets/picture line 38): invalid url input 300w,
      Liquid error (snippets/picture line 39): invalid url input 450w,
      Liquid error (snippets/picture line 40): invalid url input 600w,
      Liquid error (snippets/picture line 41): invalid url input 750w,
      Liquid error (snippets/picture line 42): invalid url input 900w,
      Liquid error (snippets/picture line 43): invalid url input 1050w,
    '
    width=''
    height=''
  >
</picture>

    </div>
    <div class='relative pt-xl pb-sm px-pagemargin '>
      <div class='max-w-[400px]'>
        <div
          class='flex flex-col gap-y-xs'
          
            style='color: #ffffff;'
          
        ><h4 class='font-medium leading-[130%] tracking-normal'>
                Training That Works as Hard as You Do
              </h4><p class='text-[12px] lg:text-[16px]'>
              Built for real-world practice and trusted by thousands, our subscriptions offer high-quality training you can actually use. 
            </p></div></div>
    </div>
  </div>

</div>



</div>
<div id="shopify-block-AbkwrZi9FWXE1WitFa__header_image_content_tiaapn" class="shopify-block">
<a
  href='/pages/subscribe-save'
  class='grid grid-cols-1 gap-xs h-full header-image__content'
  data-test-id='sections--27690274816369__main-learn-more-pages-subscribe-save'
>

  <div class='relative min-h-[290px]'>
    <div class='absolute inset-0'>
      




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=300 300w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=450 450w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=600 600w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=750 750w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=900 900w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=1050 1050w,
    '
    width='1619'
    height='846'
  >
<img src="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1619" alt="" srcset="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=320 320w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=640 640w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=960 960w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1280 1280w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1600 1600w" width="1619" height="846" loading="eager" decoding="auto" sizes="100vw, (min-width: 1024px) 20vw" class="w-full block w-full h-full object-cover object-cover" fetchpriority="high"></picture>

    </div>
    <div class='relative pt-xl pb-sm px-pagemargin '>
      <div class='max-w-[400px]'>
        <div
          class='flex flex-col gap-y-xs'
          
            style='color: #ffffff;'
          
        ><h4 class='font-medium leading-[130%] tracking-normal'>
                Individual CLE Pass
              </h4><p class='text-[12px] lg:text-[16px]'>
              Get 12 months of unlimited CLE. Subscribers save more than $3,000 per year!
            </p></div><button
            class='btn mt-md !px-sm text-[12px] !h-[45px] !min-w-[100px] font-medium tracking-[0.42px]  lg:!h-[50px] lg:text-[14px] lg:mt-sm hover:!bg-[unset]'
            variant='secondary'
            style='color: #99e2f2; border-color: #99e2f2;'
          >
            <span>Learn More</span>
            <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
          </button></div>
    </div>
  </div>

</a>



</div>
<div id="shopify-block-AUnZYVVZXZE5lZDkra__header_image_content_9XCiXg" class="shopify-block">
<a
  href='/pages/unlimited-group-pass'
  class='grid grid-cols-1 gap-xs h-full header-image__content'
  data-test-id='sections--27690274816369__main-learn-more-pages-unlimited-group-pass'
>

  <div class='relative min-h-[290px]'>
    <div class='absolute inset-0'>
      




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=300 300w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=450 450w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=600 600w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=750 750w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=900 900w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=1050 1050w,
    '
    width='1619'
    height='846'
  >
<img src="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1619" alt="" srcset="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=320 320w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=640 640w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=960 960w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1280 1280w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1600 1600w" width="1619" height="846" loading="eager" decoding="auto" sizes="100vw, (min-width: 1024px) 20vw" class="w-full block w-full h-full object-cover object-cover" fetchpriority="high"></picture>

    </div>
    <div class='relative pt-xl pb-sm px-pagemargin '>
      <div class='max-w-[400px]'>
        <div
          class='flex flex-col gap-y-xs'
          
            style='color: #ffffff;'
          
        ><h4 class='font-medium leading-[130%] tracking-normal'>
                Team Training Solutions
              </h4><p class='text-[12px] lg:text-[16px]'>
              Save big and empower your entire legal team with unlimited access CLE training.
            </p></div><button
            class='btn mt-md !px-sm text-[12px] !h-[45px] !min-w-[100px] font-medium tracking-[0.42px]  lg:!h-[50px] lg:text-[14px] lg:mt-sm hover:!bg-[unset]'
            variant='secondary'
            style='color: #99e2f2; border-color: #99e2f2;'
          >
            <span>Learn More</span>
            <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
          </button></div>
    </div>
  </div>

</a>



</div>
</ul>
      </div>
    </div>
  
</div>


</li>

          </ul>
        </mega-menu>
      </div><div class='flex items-center justify-end gap-xs'>



  <script src="//nbi-sems.com/cdn/shop/t/347/assets/algolia-header-search.BUA80TZ5.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaRedirect.tIASkRAz.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaInputDelay.uBAOchZN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaUrlParams.D041RnRL.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaHitStorage.DZFmt5at.min.js" crossorigin="anonymous">

<script>
  (function () {
    // Wait for algoliaShopify to be available or for the algolia.hooks.initialize
    // event to fire. Returns the algoliaShopify object when available or null after timeout.
    const waitForAlgoliaShopify = (timeout = 800) => {
      return new Promise((resolve) => {
        if (window.algoliaShopify && (window.algoliaShopify.client || window.algoliaShopify.externals)) {
          return resolve(window.algoliaShopify);
        }

        let resolved = false;

        const onInit = () => {
          if (resolved) return;
          resolved = true;
          document.removeEventListener('algolia.hooks.initialize', onInit);
          resolve(window.algoliaShopify || null);
        };

        document.addEventListener('algolia.hooks.initialize', onInit);

        const timeoutId = setTimeout(() => {
          if (resolved) return;
          resolved = true;
          document.removeEventListener('algolia.hooks.initialize', onInit);
          resolve(window.algoliaShopify || null);
        }, timeout);

        const poll = () => {
          if (resolved) return;
          if (window.algoliaShopify && (window.algoliaShopify.client || window.algoliaShopify.externals)) {
            resolved = true;
            clearTimeout(timeoutId);
            document.removeEventListener('algolia.hooks.initialize', onInit);
            return resolve(window.algoliaShopify);
          }
          setTimeout(poll, 80);
        };
        poll();
      });
    };

    const handleSubmit = function (e) {
      const form = e.target && e.target.closest ? e.target.closest('form') : e.target;
      if (!form) return;

      const action = (form.getAttribute && form.getAttribute('action')) || '';
      if (!action || action.indexOf('/search') === -1) return;

      const q = ((new FormData(form).get('q')) || '').toString().trim();
      if (!q) return;

      // Block native submit while we attempt preflight
      e.preventDefault();
      e.stopImmediatePropagation();

      // Prefer global helper if available
      if (typeof window.algoliaPreflightSearch === 'function') {
        const handled = window.algoliaPreflightSearch(q);
        if (handled) return;
      }

      // Attempt Algolia preflight; otherwise navigate to /search
      waitForAlgoliaShopify(350).then((as) => {
        if (!as) {
          window.location.href = `/search?q=${encodeURIComponent(q)}`;
          return;
        }

        const client =
          as.client ||
          (as.externals &&
            as.externals.algoliasearch &&
            as.externals.algoliasearch(as.applicationID || as.config?.applicationID, as.searchApiKey || as.config?.searchApiKey));

        const indexPrefix = as.config?.index_prefix || 'shopify_';
        const defaultIndex = `${indexPrefix}products`;
        const indexName = (as.instantsearch && as.instantsearch.indexName) || as.config?.indexName || defaultIndex;

        if (!client || !indexName) {
          window.location.href = `/search?q=${encodeURIComponent(q)}`;
          return;
        }

        const searchPromise = client.initIndex
          ? client.initIndex(indexName).search(q, { hitsPerPage: 0 })
          : client.search
          ? client.search([{ indexName, params: { query: q, hitsPerPage: 0 } }])
          : null;

        if (!searchPromise) {
          window.location.href = `/search?q=${encodeURIComponent(q)}`;
          return;
        }

        let navigated = false;
        const fallback = setTimeout(() => {
          if (navigated) return;
          navigated = true;
          window.location.href = `/search?q=${encodeURIComponent(q)}`;
        }, 500);

        searchPromise.then((res) => {
          if (navigated) return;
          const first = res && res.results ? res.results[0] : res;
          let redirectUrl = first && first.renderingContent && first.renderingContent.redirect && first.renderingContent.redirect.url;

          if (!redirectUrl && Array.isArray(first && first.userData)) {
            const found = first.userData.find((u) => u && (u.redirect || (u.redirect && u.redirect.url)));
            if (found) {
              redirectUrl = typeof found.redirect === 'string' ? found.redirect : found.redirect && found.redirect.url;
            }
          }

          if (redirectUrl) {
            navigated = true;
            clearTimeout(fallback);
            window.location.replace(redirectUrl);
          } else {
            navigated = true;
            clearTimeout(fallback);
            window.location.href = `/search?q=${encodeURIComponent(q)}`;
          }
        });
      });
    };

    document.addEventListener('submit', handleSubmit, true);
  })();
</script>


<script>
  (function () {
    const isSearchPage = window.location.pathname.includes('/search');
    if (!isSearchPage) return;

    const q = new URLSearchParams(window.location.search).get('q') || '';
    if (!q) return;

    if (window.__algoliaRedirectPreflightRan) return;
    window.__algoliaRedirectPreflightRan = true;

    const runPreflight = () => {
      const as = window.algoliaShopify;
      if (!as || !as.externals || !as.externals.algoliasearch) return false;

      const appId = as.applicationID || as.config?.applicationID;
      const apiKey = as.searchApiKey || as.config?.searchApiKey;
      if (!appId || !apiKey) return false;

      const indexPrefix = as.config?.index_prefix || 'shopify_';
      const defaultIndex = `${indexPrefix}products`;
      const indexName =
        (as.instantsearch && as.instantsearch.indexName) ||
        as.config?.indexName ||
        defaultIndex;

      const client = as.externals.algoliasearch(appId, apiKey);
      if (!client || !indexName) return true;

      client.search([
        {
          indexName,
          params: { query: q, hitsPerPage: 0 }
        }
      ]).then((res) => {
        const redirect =
          res &&
          res.results &&
          res.results[0] &&
          res.results[0].renderingContent &&
          res.results[0].renderingContent.redirect;
        if (redirect && redirect.url) {
          window.location.replace(redirect.url);
        }
      });

      return true;
    };

    if (!runPreflight()) {
      const once = () => {
        document.removeEventListener('algolia.hooks.initialize', once);
        runPreflight();
      };
      document.addEventListener('algolia.hooks.initialize', once);
    }
  })();
</script>

<algolia-header-search-component>
  <!-- Search Button (Replaces static button in header) -->
  <button
    data-header-search-trigger
    class='btn !h-[40px] !min-h-0 !min-w-0 !p-[10px] md:h-[50px] md:!min-h-[50px] md:!p-[12.5px] lg:inline-flex'
    variant='primary'
  >
    <span data-header-search-icon class='flex'>
<svg-icon
  src='icon-search'
  class='text-[20px] md:text-[25px]'

  

  
  
></svg-icon>
</span>
    <span data-header-search-close-icon class='hidden'>
<svg-icon
  src='icon-close'
  class='text-[20px] md:text-[25px] mt-[4px]'

  

  
  
></svg-icon>
</span>
    <span class='sr-only'>Search</span>
  </button>

  <!-- Search Overlay -->
  <div
    data-header-search-overlay
    class='absolute left-0 right-0 top-full hidden border-t border-t-secondary-blue bg-t-brand-primary drop-shadow transition-[opacity,visibility] duration-200'
  >
    <div class='px-pagemargin 2xl:container'>
      <div class='flex h-full w-full items-start justify-center pt-8'>
        <div class='w-full'>
          <div class='relative w-full'>
            <!-- Search Input Container -->
            <div class='relative w-full'>
              <div class='mb-8 flex h-[65px] w-full items-center rounded-[40px] bg-t-background px-[30px]'>
                <div class='flex flex-1 flex-col gap-[2px]'>
                  <div class='text-[12px] font-medium leading-[1.1] text-t-brand-primary'>
                    Search
                  </div>
                  <form
                    action='/search'
                    method='get'
                    class='flex-1'
                    data-header-desktop-search-input
                  >
                    <label class='sr-only' for='header-search-input'>
                      Search
                    </label>
                    <input
                      id='header-search-input'
                      type='search'
                      name='q'
                      class='w-full border-0 bg-transparent text-[16px] font-medium leading-[1.2] text-t-foreground-secondary placeholder-t-foreground-secondary outline-none focus:outline-none'
                      placeholder='Enter Keyword or Product ID'
                      autocomplete='off'
                    />
                  </form>
                </div>
              </div>
            </div>

            <!-- Algolia results will be injected here -->
          </div>
        </div>
      </div>
    </div>
  </div>
</algolia-header-search-component>
<a
            aria-haspopup='dialog'
            aria-controls='cart-drawer-dialog'
            href='/cart'
            class='btn relative inline-flex !h-[40px] !min-h-0 !min-w-0 place-items-center !p-[10px] md:h-[50px] md:!min-h-[50px] md:w-[152px] md:!px-[20px]'
            id='cart-icon-bubble'
            variant='primary'
        >
<svg-icon
  src='icon-cart'
  class='text-[20px] md:text-[25px]'

  

  
  
></svg-icon>


          <span class='sr-only'>Cart</span>


  <script src="//nbi-sems.com/cdn/shop/t/347/assets/component-cart-total.WaR17h6s.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithShopifyCart.CVuw6po4.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithApiClient.IaGgbJQC.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/index.CKJCYK2x.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/cart-sections.WoVMkNAv.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/create-context.89xeped_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/consume.CHsRYPSi.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/context-request-event.CcEA9XIP.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/state.Cmay8SOG.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">

<cart-total
              class='hidden md:inline'
              translation='{ "cart_count": {
                    "one": "{{ count }} item",
                    "other": "{{ count }} items"
                  }}'
          >
            <span class='sr-only'>0 items</span>
          </cart-total>
        </a>
      <div class='flex items-center justify-start lg:hidden'>
<dialog-toggle modal-id='mobile-menu-drawer' class='inline-flex place-items-center'><button
              aria-haspopup='dialog'
              aria-controls='mobile-menu-drawer'
              class="group/menutoggle btn inline-flex !h-[40px] !min-h-0 !min-w-0 !p-[10px] md:h-[50px] md:!min-h-[50px] md:!p-[12.5px] lg:hidden"
              variant="primary"
          >
<svg-icon
  src='icon-hamburger'
  class='group-[[open]]/menutoggle:hidden text-[20px] md:text-[25px]'

  

  
  
></svg-icon>

<svg-icon
  src='icon-close'
  class='group-[[open]]/menutoggle:inline-flex hidden text-[20px] md:text-[25px]'

  

  
  
></svg-icon>
<span class="sr-only">Menu</span>
          </button>
</dialog-toggle></div>
    </div>
  </div>
</header>


</div><div id="shopify-section-sections--27690274816369__header_drawer_Gad7Dg" class="shopify-section shopify-section-group-header-group">



<modal-dialog
    cloak
    type='drawer'
    id='mobile-menu-drawer'

    
      url=''
    

    

    
      anchor='left'
    

    
      close-on-backdrop-click='true'
    

    

    
      dialog-classes='!mt-[var(--announcement-bar-height)] backdrop:!bg-[transparent]'
    

    
      header-classes='bg-t-brand-primary'
    

    
      drawer-classes='max-h-[calc(100dvh-var(--announcement-bar-height))]'
    

    
      close-icon-size='20'
    

    
      close-icon-classes='text-t-white'
    

    

    
  ><h5 slot='header' class='h5 flex'><div
              class='inline-flex max-md:h-[25px] w-[70px] md:w-[--header-logo-width]'
              style='--header-logo-width: 160px'
            >
              

<img src="//nbi-sems.com/cdn/shop/files/NBI_with_name_White_Logo.svg?v=1756322888&amp;width=600" alt="" srcset="//nbi-sems.com/cdn/shop/files/NBI_with_name_White_Logo.svg?v=1756322888&amp;width=160 160w, //nbi-sems.com/cdn/shop/files/NBI_with_name_White_Logo.svg?v=1756322888&amp;width=240 240w, //nbi-sems.com/cdn/shop/files/NBI_with_name_White_Logo.svg?v=1756322888&amp;width=320 320w" width="600" height="300" decoding="auto" sizes="(max-width: 320px) 50vw, 160px" class="w-full block  object-contain" fetchpriority="auto"></div></h5>
  <div id='menu-drawer' class='grid bg-t-brand-primary grid-cols-1 min-h-full grid-rows-[1fr,auto] '>
    <nav aria-label='Main Menu Drawer' class='px-md'>
      <ul class='list-none border-t border-t-secondary-blue'><div id="shopify-block-ANVBWMXJWamtIblcxT__header_drawer_panel_linklist_dX8nRC" class="shopify-block">
<dialog-toggle modal-id='Details-menu-drawer-menu-item-ANVBWMXJWamtIblcxT__header_drawer_panel_linklist_dX8nRC' class='w-full text-t-white'><button 
    class="tracking-[1.4px] border-b border-t-secondary-blue utility text-[14px] py-lg font-medium inline-flex items-center justify-between w-full"
    data-test-id='sections--27690274816369__header_drawer_Gad7Dg-cle-courses'
  >
      <span>CLE Courses</span>
      
<svg-icon
  src='icon-caret'
  class='-rotate-90'

  
    style='--icon-size: 15px;'
  

  
  
></svg-icon>

  </button>
</dialog-toggle>
<modal-dialog
    cloak
    type='drawer'
    id='Details-menu-drawer-menu-item-ANVBWMXJWamtIblcxT__header_drawer_panel_linklist_dX8nRC'

    
      url=''
    

    

    
      anchor='left'
    

    
      close-on-backdrop-click='true'
    

    
      without-title='true'
    

    
      dialog-classes='!mt-[var(--announcement-bar-height)] backdrop:!bg-[transparent]'
    

    
      header-classes='bg-t-brand-primary'
    

    
      drawer-classes='max-h-[calc(100dvh-var(--announcement-bar-height))]'
    

    
      close-icon-size='20'
    

    
      close-icon-classes='text-t-white flex items-center p gap-x-xs font-semibold'
    

    
      back-button='true'
    

    
  ><h5 slot='header' class='h5 '>CLE Courses
</h5><div class='bg-t-brand-primary flex flex-col h-auto min-h-full gap-y-xl'>
    <div class='px-md'>
      <p class='pt-lg text-t-white border-t border-t-secondary-blue font-medium tracking-[1.4px]'>
        CLE Courses
      </p>
    </div>
    <ul class='list-none grid flex-grow'><li
  
  class='px-md lg:border-r lg:border-t-secondary-blue last-of-type:border-none last-of-type:flex-grow lg:pt-xl lg:px-pagemargin lg:pb-[85px] flex flex-col gap-y-lg lg:gap-y-md'
><h4
      id='HeaderMenu-AVC85MHY2VkhsOTd4S__header_link_list_UpdqHb'
      class='uppercase text-t-grey-200 text-[14px] font-medium tracking-[1.4px] leading-none'
    >
      BROWSE
    </h4><ul class='list-none text-t-white  flex flex-col  gap-y-sm' role='list'><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AVC85MHY2VkhsOTd4S__header_link_list_UpdqHb-all-courses'
            href='/collections/all-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-all-courses-collections-all-courses'
          >
            All Courses
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AVC85MHY2VkhsOTd4S__header_link_list_UpdqHb-upcoming-live-cle-webinars'
            href='/collections/upcoming-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-upcoming-live-cle-webinars-collections-upcoming-courses'
          >
            Upcoming Live CLE Webinars
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AVC85MHY2VkhsOTd4S__header_link_list_UpdqHb-best-sellers'
            href='/collections/best-selling-products'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-best-sellers-collections-best-selling-products'
          >
            Best Sellers
          </a></li></ul></li>


<li
  
  class='px-md lg:border-r lg:border-t-secondary-blue last-of-type:border-none last-of-type:flex-grow lg:pt-xl lg:px-pagemargin lg:pb-[85px] flex flex-col gap-y-lg lg:gap-y-md'
><h4
      id='HeaderMenu-AWU1HdVIxMWFSMXo0W__header_link_list_Ci7wMB'
      class='uppercase text-t-grey-200 text-[14px] font-medium tracking-[1.4px] leading-none'
    >
      STATE
    </h4><ul class='list-none text-t-white  flex flex-col  gap-y-sm' role='list'><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AWU1HdVIxMWFSMXo0W__header_link_list_Ci7wMB-all-states-51'
            href='/pages/cle-courses-by-jurisdiction'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-all-states-51-pages-cle-courses-by-jurisdiction'
          >
            All States (51)
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AWU1HdVIxMWFSMXo0W__header_link_list_Ci7wMB-california'
            href='https://nbi-sems.com/collections/california-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=California%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-california-https-nbi-sems-com-collections-california-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-california-20cle'
          >
            California
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AWU1HdVIxMWFSMXo0W__header_link_list_Ci7wMB-florida'
            href='https://nbi-sems.com/collections/florida-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Florida%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-florida-https-nbi-sems-com-collections-florida-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-florida-20cle'
          >
            Florida
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AWU1HdVIxMWFSMXo0W__header_link_list_Ci7wMB-georgia'
            href='https://nbi-sems.com/collections/georgia-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Georgia%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-georgia-https-nbi-sems-com-collections-georgia-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-georgia-20cle'
          >
            Georgia
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AWU1HdVIxMWFSMXo0W__header_link_list_Ci7wMB-montana'
            href='https://nbi-sems.com/collections/montana-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Montana%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-montana-https-nbi-sems-com-collections-montana-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-montana-20cle'
          >
            Montana
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AWU1HdVIxMWFSMXo0W__header_link_list_Ci7wMB-new-york'
            href='https://nbi-sems.com/collections/new-york-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=New%20York%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-new-york-https-nbi-sems-com-collections-new-york-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-new-20york-20cle'
          >
            New York
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AWU1HdVIxMWFSMXo0W__header_link_list_Ci7wMB-oregon'
            href='https://nbi-sems.com/collections/oregon-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Oregon%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-oregon-https-nbi-sems-com-collections-oregon-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-oregon-20cle'
          >
            Oregon
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AWU1HdVIxMWFSMXo0W__header_link_list_Ci7wMB-pennsylvania'
            href='https://nbi-sems.com/collections/pennsylvania-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Pennsylvania%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-pennsylvania-https-nbi-sems-com-collections-pennsylvania-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-pennsylvania-20cle'
          >
            Pennsylvania
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AWU1HdVIxMWFSMXo0W__header_link_list_Ci7wMB-texas'
            href='https://nbi-sems.com/collections/texas-cle-courses?refinementList%5Bmeta.custom.cle_state%5D%5B0%5D=Texas%20CLE'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-texas-https-nbi-sems-com-collections-texas-cle-courses-refinementlist-5bmeta-custom-cle_state-5d-5b0-5d-texas-20cle'
          >
            Texas
          </a></li></ul></li>


<li
  
  class='px-md lg:border-r lg:border-t-secondary-blue last-of-type:border-none last-of-type:flex-grow lg:pt-xl lg:px-pagemargin lg:pb-[85px] flex flex-col gap-y-lg lg:gap-y-md'
><h4
      id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3'
      class='uppercase text-t-grey-200 text-[14px] font-medium tracking-[1.4px] leading-none'
    >
      TOPIC
    </h4><ul class='list-none text-t-white  flex flex-col  gap-y-sm' role='list'><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-all-topics-41'
            href='/pages/cle-courses-by-topic'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-all-topics-41-pages-cle-courses-by-topic'
          >
            All Topics (41)
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-ai-for-lawyers'
            href='/collections/generative-ai-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-ai-for-lawyers-collections-generative-ai-cle-courses'
          >
            AI for Lawyers
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-bankruptcy-foreclosure-collection'
            href='/collections/bankruptcy-foreclosure-collection-law-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-bankruptcy-foreclosure-collection-collections-bankruptcy-foreclosure-collection-law-cle-courses'
          >
            Bankruptcy, Foreclosure &amp; Collection
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-business-securities-law'
            href='/collections/business-securities-law-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-business-securities-law-collections-business-securities-law-cle-courses'
          >
            Business &amp; Securities Law
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-ethics-specialty'
            href='/pages/ethics-specialty-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-ethics-specialty-pages-ethics-specialty-cle-courses'
          >
            Ethics &amp; Specialty
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-estate-planning-trusts-probate'
            href='/collections/trusts-estates-probate-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-estate-planning-trusts-probate-collections-trusts-estates-probate-cle-courses'
          >
            Estate Planning, Trusts &amp; Probate
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-family-law'
            href='/collections/family-law-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-family-law-collections-family-law-cle-courses'
          >
            Family Law
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-labor-employment'
            href='/collections/labor-employment-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-labor-employment-collections-labor-employment-cle-courses'
          >
            Labor &amp; Employment
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-litigation-appeals'
            href='/collections/litigation-appeals-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-litigation-appeals-collections-litigation-appeals-cle-courses'
          >
            Litigation &amp; Appeals
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-personal-injury-negligence'
            href='/collections/personal-injury-negligence-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-personal-injury-negligence-collections-personal-injury-negligence-cle-courses'
          >
            Personal Injury &amp; Negligence
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ASmM3ZEIvb3I2TllMZ__header_link_list_hg4Ea3-real-estate'
            href='/collections/real-estate-cle-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-real-estate-collections-real-estate-cle-courses'
          >
            Real Estate
          </a></li></ul></li>


<li
  
  class='px-md lg:border-r lg:border-t-secondary-blue last-of-type:border-none last-of-type:flex-grow lg:pt-xl lg:px-pagemargin lg:pb-[85px] flex flex-col gap-y-lg lg:gap-y-md'
><h4
      id='HeaderMenu-ATmVYY1Z2cW5jSTBRS__header_link_list_C7zwVa'
      class='uppercase text-t-grey-200 text-[14px] font-medium tracking-[1.4px] leading-none'
    >
      FORMAT
    </h4><ul class='list-none text-t-white  flex flex-col  gap-y-sm' role='list'><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ATmVYY1Z2cW5jSTBRS__header_link_list_C7zwVa-all-cle-courses'
            href='/collections/all-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-all-cle-courses-collections-all-courses'
          >
            All CLE Courses
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ATmVYY1Z2cW5jSTBRS__header_link_list_C7zwVa-upcoming-live-webinars'
            href='https://nbi-sems.com/collections/upcoming-courses?sortBy=nbi_shopify_products_event_date_asc'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-upcoming-live-webinars-https-nbi-sems-com-collections-upcoming-courses-sortby-nbi_shopify_products_event_date_asc'
          >
            Upcoming Live Webinars
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-ATmVYY1Z2cW5jSTBRS__header_link_list_C7zwVa-ondemand'
            href='/collections/ondemand-courses'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-ondemand-collections-ondemand-courses'
          >
            OnDemand
          </a></li></ul></li>


</ul>
  </div>
  </modal-dialog>
</div>
<div id="shopify-block-Ab04rZWczZXBKb1RTb__header_drawer_panel_linklist_3VmVJD" class="shopify-block">
<dialog-toggle modal-id='Details-menu-drawer-menu-item-Ab04rZWczZXBKb1RTb__header_drawer_panel_linklist_3VmVJD' class='w-full text-t-white'><button 
    class="tracking-[1.4px] border-b border-t-secondary-blue utility text-[14px] py-lg font-medium inline-flex items-center justify-between w-full"
    data-test-id='sections--27690274816369__header_drawer_Gad7Dg-cle-requirements'
  >
      <span>CLE REQUIREMENTS</span>
      
<svg-icon
  src='icon-caret'
  class='-rotate-90'

  
    style='--icon-size: 15px;'
  

  
  
></svg-icon>

  </button>
</dialog-toggle>
<modal-dialog
    cloak
    type='drawer'
    id='Details-menu-drawer-menu-item-Ab04rZWczZXBKb1RTb__header_drawer_panel_linklist_3VmVJD'

    
      url=''
    

    

    
      anchor='left'
    

    
      close-on-backdrop-click='true'
    

    
      without-title='true'
    

    
      dialog-classes='!mt-[var(--announcement-bar-height)] backdrop:!bg-[transparent]'
    

    
      header-classes='bg-t-brand-primary'
    

    
      drawer-classes='max-h-[calc(100dvh-var(--announcement-bar-height))]'
    

    
      close-icon-size='20'
    

    
      close-icon-classes='text-t-white flex items-center p gap-x-xs font-semibold'
    

    
      back-button='true'
    

    
  ><h5 slot='header' class='h5 '>CLE REQUIREMENTS
</h5><div class='bg-t-brand-primary flex flex-col h-auto min-h-full gap-y-xl'>
    <div class='px-md'>
      <p class='pt-lg text-t-white border-t border-t-secondary-blue font-medium tracking-[1.4px]'>
        CLE REQUIREMENTS
      </p>
    </div>
    <ul class='list-none grid flex-grow'><li
  
  class='px-md lg:border-r lg:border-t-secondary-blue last-of-type:border-none last-of-type:flex-grow lg:pt-xl lg:px-pagemargin lg:pb-[85px] flex flex-col gap-y-lg lg:gap-y-md'
><h4
      id='HeaderMenu-AdmtvMmZ6MHlaQ0hqZ__header_link_list_wVQTxn'
      class='uppercase text-t-grey-200 text-[14px] font-medium tracking-[1.4px] leading-none'
    >
      STATES
    </h4><ul class='list-none text-t-white  flex flex-col  gap-y-sm' role='list'><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AdmtvMmZ6MHlaQ0hqZ__header_link_list_wVQTxn-all-states-51'
            href='/pages/cle-requirements-by-jurisdiction'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-all-states-51-pages-cle-requirements-by-jurisdiction'
          >
            All States (51)
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AdmtvMmZ6MHlaQ0hqZ__header_link_list_wVQTxn-california'
            href='/pages/californiamclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-california-pages-californiamclerequirements'
          >
            California
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AdmtvMmZ6MHlaQ0hqZ__header_link_list_wVQTxn-florida'
            href='/pages/floridaclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-florida-pages-floridaclerequirements'
          >
            Florida
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AdmtvMmZ6MHlaQ0hqZ__header_link_list_wVQTxn-montana'
            href='/pages/montanaclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-montana-pages-montanaclerequirements'
          >
            Montana
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AdmtvMmZ6MHlaQ0hqZ__header_link_list_wVQTxn-new-york'
            href='/pages/new-yorkclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-new-york-pages-new-yorkclerequirements'
          >
            New York
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AdmtvMmZ6MHlaQ0hqZ__header_link_list_wVQTxn-oregon'
            href='/pages/oregonclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-oregon-pages-oregonclerequirements'
          >
            Oregon
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AdmtvMmZ6MHlaQ0hqZ__header_link_list_wVQTxn-pennsylvania'
            href='/pages/pennsylvaniaclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-pennsylvania-pages-pennsylvaniaclerequirements'
          >
            Pennsylvania
          </a></li><li class='last-of-type:pb-xl lg:last-of-type:pb-0'>
          <a
            id='HeaderMenu-AdmtvMmZ6MHlaQ0hqZ__header_link_list_wVQTxn-texas'
            href='/pages/texasclerequirements'
            class='block p text-t-white hover:text-t-accent-blue hover:no-underline'
            
            data-test-id='sections--27690274816369__header_drawer_Gad7Dg-texas-pages-texasclerequirements'
          >
            Texas
          </a></li></ul></li>


<div id="shopify-block-Aa0VZTEdqTnJWV3gwZ__header_image_content_7J6bLc" class="shopify-block">
<a
  href='/pages/ethics-specialty-cle-courses'
  class='grid grid-cols-1 gap-xs h-full header-image__content'
  data-test-id='sections--27690274816369__header_drawer_Gad7Dg-get-your-courses-pages-ethics-specialty-cle-courses'
>

  <div class='relative min-h-[290px]'>
    <div class='absolute inset-0'>
      




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=300 300w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=450 450w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=600 600w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=750 750w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=900 900w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=1050 1050w,
    '
    width='1619'
    height='846'
  >
<img src="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1619" alt="" srcset="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=320 320w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=640 640w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=960 960w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1280 1280w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1600 1600w" width="1619" height="846" loading="eager" decoding="auto" sizes="100vw, (min-width: 1024px) 20vw" class="w-full block w-full h-full object-cover object-cover" fetchpriority="high"></picture>

    </div>
    <div class='relative pt-xl pb-sm px-pagemargin '>
      <div class='max-w-[400px]'>
        <div
          class='flex flex-col gap-y-xs'
          
            style='color: #ffffff;'
          
        ><h4 class='font-medium leading-[130%] tracking-normal'>
                Looking for Ethics and Specialty CLE Courses?
              </h4><p class='text-[12px] lg:text-[16px]'>
              No matter your state’s requirements, you’ll find exactly what you’re looking for, all in one place.
            </p></div><button
            class='btn mt-md !px-sm text-[12px] !h-[45px] !min-w-[100px] font-medium tracking-[0.42px]  lg:!h-[50px] lg:text-[14px] lg:mt-sm hover:!bg-[unset]'
            variant='secondary'
            style='color: #99e2f2; border-color: #99e2f2;'
          >
            <span>Get Your Courses</span>
            <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
          </button></div>
    </div>
  </div>

</a>



</div>
</ul>
  </div>
  </modal-dialog>
</div>
<div id="shopify-block-ATlFaQWlvTjNKanB2c__header_drawer_panel_linklist_VL7WYc" class="shopify-block">
<dialog-toggle modal-id='Details-menu-drawer-menu-item-ATlFaQWlvTjNKanB2c__header_drawer_panel_linklist_VL7WYc' class='w-full text-t-white'><button 
    class="tracking-[1.4px] border-b border-t-secondary-blue utility text-[14px] py-lg font-medium inline-flex items-center justify-between w-full"
    data-test-id='sections--27690274816369__header_drawer_Gad7Dg-subscriptions'
  >
      <span>SUBSCRIPTIONS</span>
      
<svg-icon
  src='icon-caret'
  class='-rotate-90'

  
    style='--icon-size: 15px;'
  

  
  
></svg-icon>

  </button>
</dialog-toggle>
<modal-dialog
    cloak
    type='drawer'
    id='Details-menu-drawer-menu-item-ATlFaQWlvTjNKanB2c__header_drawer_panel_linklist_VL7WYc'

    
      url=''
    

    

    
      anchor='left'
    

    
      close-on-backdrop-click='true'
    

    
      without-title='true'
    

    
      dialog-classes='!mt-[var(--announcement-bar-height)] backdrop:!bg-[transparent]'
    

    
      header-classes='bg-t-brand-primary'
    

    
      drawer-classes='max-h-[calc(100dvh-var(--announcement-bar-height))]'
    

    
      close-icon-size='20'
    

    
      close-icon-classes='text-t-white flex items-center p gap-x-xs font-semibold'
    

    
      back-button='true'
    

    
  ><h5 slot='header' class='h5 '>SUBSCRIPTIONS
</h5><div class='bg-t-brand-primary flex flex-col h-auto min-h-full gap-y-xl'>
    <div class='px-md'>
      <p class='pt-lg text-t-white border-t border-t-secondary-blue font-medium tracking-[1.4px]'>
        SUBSCRIPTIONS
      </p>
    </div>
    <ul class='list-none grid flex-grow'><div id="shopify-block-ASVk0Nk05YkNKQ1FTZ__header_image_content_yhVDz8" class="shopify-block">
<a
  href='/pages/subscribe-save'
  class='grid grid-cols-1 gap-xs h-full header-image__content'
  data-test-id='sections--27690274816369__header_drawer_Gad7Dg-learn-more-pages-subscribe-save'
>

  <div class='relative min-h-[290px]'>
    <div class='absolute inset-0'>
      




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=300 300w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=450 450w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=600 600w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=750 750w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=900 900w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=1050 1050w,
    '
    width='1619'
    height='846'
  >
<img src="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1619" alt="" srcset="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=320 320w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=640 640w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=960 960w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1280 1280w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1600 1600w" width="1619" height="846" loading="eager" decoding="auto" sizes="100vw, (min-width: 1024px) 20vw" class="w-full block w-full h-full object-cover object-cover" fetchpriority="high"></picture>

    </div>
    <div class='relative pt-xl pb-sm px-pagemargin '>
      <div class='max-w-[400px]'>
        <div
          class='flex flex-col gap-y-xs'
          
            style='color: #ffffff;'
          
        ><h4 class='font-medium leading-[130%] tracking-normal'>
                Individual CLE Pass
              </h4><p class='text-[12px] lg:text-[16px]'>
              Get 12 months of unlimited CLE. Subscribers save more than $3,000 per year!
            </p></div><button
            class='btn mt-md !px-sm text-[12px] !h-[45px] !min-w-[100px] font-medium tracking-[0.42px]  lg:!h-[50px] lg:text-[14px] lg:mt-sm hover:!bg-[unset]'
            variant='secondary'
            style='color: #99e2f2; border-color: #99e2f2;'
          >
            <span>Learn More</span>
            <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
          </button></div>
    </div>
  </div>

</a>



</div>
<div id="shopify-block-AeUlaZFFRMzhabU5mb__header_image_content_KV83fy" class="shopify-block">
<a
  href='/pages/unlimited-group-pass'
  class='grid grid-cols-1 gap-xs h-full header-image__content'
  data-test-id='sections--27690274816369__header_drawer_Gad7Dg-learn-more-pages-unlimited-group-pass'
>

  <div class='relative min-h-[290px]'>
    <div class='absolute inset-0'>
      




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=300 300w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=450 450w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=600 600w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=750 750w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=900 900w,
      //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&width=1050 1050w,
    '
    width='1619'
    height='846'
  >
<img src="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1619" alt="" srcset="//nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=320 320w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=640 640w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=960 960w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1280 1280w, //nbi-sems.com/cdn/shop/files/Background_Gradient_Unlimited_CLE_b06da23c-6f25-4f5d-b759-73569f9cccd5.jpg?v=1695760373&amp;width=1600 1600w" width="1619" height="846" loading="eager" decoding="auto" sizes="100vw, (min-width: 1024px) 20vw" class="w-full block w-full h-full object-cover object-cover" fetchpriority="high"></picture>

    </div>
    <div class='relative pt-xl pb-sm px-pagemargin '>
      <div class='max-w-[400px]'>
        <div
          class='flex flex-col gap-y-xs'
          
            style='color: #ffffff;'
          
        ><h4 class='font-medium leading-[130%] tracking-normal'>
                Team Training Solutions
              </h4><p class='text-[12px] lg:text-[16px]'>
              Save big and empower your entire legal team with unlimited access CLE training.
            </p></div><button
            class='btn mt-md !px-sm text-[12px] !h-[45px] !min-w-[100px] font-medium tracking-[0.42px]  lg:!h-[50px] lg:text-[14px] lg:mt-sm hover:!bg-[unset]'
            variant='secondary'
            style='color: #99e2f2; border-color: #99e2f2;'
          >
            <span>Learn More</span>
            <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
          </button></div>
    </div>
  </div>

</a>



</div>
</ul>
  </div>
  </modal-dialog>
</div>
</ul>
    </nav>
    <div class='flex flex-col'><div class='p-md'>
          <a
            href='https://account.nbi-sems.com/Account/Login?returnUrl=https://account.nbi-sems.com/Account'
            class='!border-none !text-t-white flex items-center gap-x-xs w-fit'
            variant='tertiary'
          >
            <span class='w-[40px] h-[40px] flex items-center justify-center rounded-full bg-t-accent-blue'>
              
<svg-icon
  src='icon-account'
  class='text-t-brand-primary'

  
    style='--icon-size: 25px;'
  

  
  
></svg-icon>

            </span>
            <span class='text-[14px] font-bold tracking-[0.42px]'>Log in</span>
          </a>
        </div><div class='menu-drawer-additional-text text-t-white px-md py-lg border-t border-t-secondary-blue'>
        <p>We’re here to help! (800) 930-6182</p>
      </div>
    </div>
  </div>

  </modal-dialog>




</div>
<!-- END sections: header-group --></main-header>

        <main
          id='main'
          class='content-for-layout focus-none grid grid-cols-1'
          role='main'
          tabindex='-1'
        >
          
            <section id="shopify-section-template--27690280681841__homepage_hero_gyxrbJ" class="shopify-section section">




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/component-random-faculty.CkzH-DP0.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaScripts.bP5CGLyc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/_commonjsHelpers.CqkleIqs.min.js" crossorigin="anonymous">


<section class=' bg-t-brand-primary bg-cover bg-center relative'>
  




<picture>
  <source
    media='(max-width: 1024px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&width=300 300w,
      //nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&width=450 450w,
      //nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&width=600 600w,
      //nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&width=750 750w,
      //nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&width=900 900w,
      //nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&width=1050 1050w,
    '
    width='2880'
    height='1024'
  >
<img src="//nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&amp;width=2880" alt="" srcset="//nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&amp;width=352 352w, //nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&amp;width=832 832w, //nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&amp;width=1200 1200w, //nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&amp;width=1920 1920w, //nbi-sems.com/cdn/shop/files/BG_2x_fc37abdc-271f-403c-aa55-1d21e136c6d8.jpg?v=1695764014&amp;width=2880 2880w" width="2880" height="1024" loading="eager" decoding="auto" sizes="100vw" class="w-full block absolute inset-0 w-full h-full object-cover" fetchpriority="high"></picture>

  <div class='relative z-10 mx-auto max-w-[828px] px-md py-2xl flex flex-col gap-y-xl lg:px-0 lg:gap-y-md'><div class='text-center flex flex-col gap-y-xs text-t-white'><h2>The leading Continuing Legal Education (CLE) resource for attorneys since 1983.</h2><p class='body'>Practical training and resources to evolve your legal practice</p></div><div>
        



  <script src="//nbi-sems.com/cdn/shop/t/347/assets/algolia-search.BziGswSZ.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaRedirect.tIASkRAz.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaInputDelay.uBAOchZN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaUrlParams.D041RnRL.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaHitStorage.DZFmt5at.min.js" crossorigin="anonymous">

<script>
  // Add theme settings to window for Algolia
  window.themeSettings = window.themeSettings || {};
  window.themeSettings.defaultProductCardImage = "\/\/nbi-sems.com\/cdn\/shop\/files\/nbi-default-course-image5.png?v=1718046845";
</script>

<algolia-search-component>
  <div class='relative mx-auto max-w-[765px]'>
    <div class='flex max-w-full'>
      <!-- Mobile: Dialog toggle -->
      <dialog-toggle modal-id='algolia-search-modal' class='flex-1 md:hidden'>
        <div class='flex h-[65px] flex-1 cursor-pointer items-center gap-2 rounded-l-[50px] border border-r-0 border-t-grey-200 bg-t-background px-[30px] '>
          <div class='flex flex-col gap-[2px]'>
            <div class='w-[200px] text-[12px] font-medium leading-[1.1] text-t-brand-primary'>
              Search
            </div>
            <div class='text-[16px] font-medium leading-[1.2] text-t-foreground-secondary'>Content or Topic</div>
          </div>
        </div>
      </dialog-toggle>

      <!-- Desktop: Regular input -->
      <div class='hidden h-[65px] flex-1 items-center gap-2 rounded-l-[50px] border border-r-0 border-t-grey-200 bg-t-background px-[30px] md:flex'>
        <div class='flex flex-1 flex-col gap-[4px]'>
          <div class='text-caption font-medium text-t-brand-primary'>
            Search
          </div>
          <form action='/search' data-desktop-search-input></form>
        </div>
      </div>

      <button
        data-search-button
        class='flex h-[65px] w-[65px] shrink-0 items-center justify-center rounded-r-[50px] border border-l-0 border-t-grey-200 bg-t-accent-blue'
      >
        
<svg-icon
  src='icon-search'
  class='text-t-button-primary-text'

  
    style='--icon-size: 20px;'
  

  
  
></svg-icon>

      </button>
    </div>

    <!-- Algolia dropdown will be injected here by the Algolia library -->

    <!-- Mobile Modal -->
    <modal-dialog
      id='algolia-search-modal'
      type='modal'
      size='modal-max'
      close-on-backdrop-click='true'
      drawer-classes='bg-t-background flex'
      class='md:hidden'
      without-title='true'
      style='--search-results-h: calc(100dvh - 340px);'
    >
      <div class='flex h-full flex-col'>
        <div class='flex flex-1 flex-col border-t border-t-grey-200 bg-t-grey-100 pb-[20px] pt-[30px]'>
          <!-- Title -->
          <h2 class='px-[20px] text-center text-[25px] font-medium leading-[1.3] text-t-brand-primary'>
            Search Course
          </h2>

          <!-- Mobile Search Input -->
          <div
            class='mx-[20px] mt-[25px] flex rounded-[40px] border border-t-grey-200 bg-t-background p-[20px]'
            data-mobile-search-container
          >
            <div class='flex flex-1 items-center gap-[10px]'>
              
<svg-icon
  src='icon-search'
  class='text-t-brand-primary'

  
    style='--icon-size: 15px;'
  

  
  
></svg-icon>

              <form class='flex-1' action='/search' data-mobile-search-input></form>
            </div>
          </div>

          <!-- Results Section - handled by Algolia mobile modal if needed -->
          <div
            data-mobile-results-section
            class='mt-[30px] flex flex-col px-[20px] max-md:h-[var(--search-results-h)] max-md:overflow-y-auto'
          >
            <!-- Mobile search results will be handled separately if needed -->
          </div>
        </div>

        <!-- Bottom Actions -->
        <div class='flex items-center gap-[15px] border-t border-t-grey-200 bg-t-background px-[10px] py-[20px]'>
          <button
            data-search-action
            class='btn !min-w-none !text-[12px]'
            variant='primary'
          >
            Search
          </button>
          <button
            data-clear-action
            class='text-[12px] font-medium text-t-secondary-blue underline'
          >
            Clear All
          </button>
        </div>
      </div>
    </modal-dialog>
  </div>
</algolia-search-component>

      </div><div class='min-h-[50px] flex text-t-white justify-center items-center -mt-md gap-x-xs lg:mt-0'>
        <random-faculty
          class='w-fit'
          index-name='nbi_faculty_accounts'
        ></random-faculty>
        <p>
          Over 1 Million Professionals trained
        </p>
      </div><div class='flex text-t-white justify-center'><div class='flex flex-col items-center border-r border-t-secondary-blue last-of-type:border-none w-[calc(100%/3)] px-sm lg:w-[210px] lg:px-md gap-y-2xs'>
              <p class='text-[14px] lg:h4 font-medium'>
                40+
              </p>
              <p class='text-[12px] lg:text-[14px] text-center'>
                Years' Experience
              </p>
            </div><div class='flex flex-col items-center border-r border-t-secondary-blue last-of-type:border-none w-[calc(100%/3)] px-sm lg:w-[210px] lg:px-md gap-y-2xs'>
              <p class='text-[14px] lg:h4 font-medium'>
                100,000+
              </p>
              <p class='text-[12px] lg:text-[14px] text-center'>
                5-Star Reviews
              </p>
            </div><div class='flex flex-col items-center border-r border-t-secondary-blue last-of-type:border-none w-[calc(100%/3)] px-sm lg:w-[210px] lg:px-md gap-y-2xs'>
              <p class='text-[14px] lg:h4 font-medium'>
                1,000+
              </p>
              <p class='text-[12px] lg:text-[14px] text-center'>
                New Courses Yearly
              </p>
            </div></div></div>
</section>


</section><section id="shopify-section-template--27690280681841__featured_collection_D3tXgd" class="shopify-section section">


  <script src="//nbi-sems.com/cdn/shop/t/347/assets/carousel-swiper.DuT_kWi5.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/SwiperElement.BPeEYqJ_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/query.CpiO8Lcb.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/base.CShCMygk.min.js" crossorigin="anonymous">




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/component-algolia-collection.bgd_rheH.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/task.BIuG9C6l.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">

<div class='container py-md'><algolia-collection-products
      collection-handle='upcoming-courses'
      max-products='10'
    ><carousel-swiper data-carousel-id='template--27690280681841__featured_collection_D3tXgd'>
    <div class='md:flex md:items-center md:justify-between'><h2 class='text-gray-900 font-medium h2'>
          Most Popular Live Online CLE Courses
        </h2><div class='hidden md:flex md:items-center md:gap-4'>
        <div class='flex items-center gap-2'>
          <button
            class='swiper-button-prev swiper-button-prev--template--27690280681841__featured_collection_D3tXgd flex h-[45px] w-[45px] items-center justify-center rounded-full bg-t-grey-100 hover:bg-gray-300 transition-colors disabled:opacity-50 disabled:cursor-not-allowed'
            aria-label='Previous'
          >
            <svg class='h-6 w-6 text-gray-900' fill='none' stroke='currentColor' viewBox='0 0 24 24'>
              <path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 19l-7-7 7-7' />
            </svg>
          </button>
          <button
            class='swiper-button-next swiper-button-next--template--27690280681841__featured_collection_D3tXgd flex h-[45px] w-[45px] items-center justify-center rounded-full bg-t-grey-100 hover:bg-gray-300 transition-colors disabled:opacity-50 disabled:cursor-not-allowed'
            aria-label='Next'
          >
            <svg class='h-6 w-6 text-gray-900' fill='none' stroke='currentColor' viewBox='0 0 24 24'>
              <path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5l7 7-7 7' />
            </svg>
          </button>
        </div><a
            href='/collections/upcoming-courses'
            class='btn !h-[50px]'
            aria-label='View all products in the Upcoming Live CLE Webinars collection'
            variant="primary"
          >
            View all
          </a></div>
    </div><div class='rte text-t-grey-300 text-body mt-3'><p>Join live sessions your peers are attending now.</p>
      </div><div class='py-md -mx-2'><div class='algolia-carousel-wrap'>
          <swiper-container
            init='false'
            slides-per-view='1.4'
            slides-per-group='1'
            breakpoints='{"768": {"slidesPerView": 3, "slidesPerGroup": 3}, "1024": {"slidesPerView": 4, "slidesPerGroup": 4}}'
            navigation='true'
            navigation-prev-el='.swiper-button-prev--template--27690280681841__featured_collection_D3tXgd'
            navigation-next-el='.swiper-button-next--template--27690280681841__featured_collection_D3tXgd'
            class='flex w-full overflow-hidden'
          >
            <swiper-slide class='h-auto w-full flex-none justify-center px-2 md:w-4/12 lg:w-3/12'>
            <div class='bg-white flex w-full flex-col h-full overflow-hidden rounded-[10px] border border-t-grey-200 p-sm'>
              <div class='aspect-[4/3] bg-t-grey-100 rounded-[10px]'></div>
              <div class='mt-sm flex flex-1 flex-col gap-sm'>
                <div class='flex flex-wrap gap-2xs'>
                  <div class='h-5 w-20 bg-t-grey-100 rounded-full'></div>
                  <div class='h-5 w-24 bg-t-grey-100 rounded-full'></div>
                </div>
                <div class='flex flex-col gap-xs'>
                  <div class='h-5 bg-t-grey-100 rounded w-full'></div>
                  <div class='h-5 bg-t-grey-100 rounded w-3/4'></div>
                </div>
                <div class='flex flex-row gap-2xs flex-wrap mt-auto'>
                  <div class='h-4 w-28 bg-t-grey-100 rounded'></div>
                  <div class='h-4 w-32 bg-t-grey-100 rounded'></div>
                </div>
              </div>
            </div>
          </swiper-slide>
            <swiper-slide class='h-auto w-full flex-none justify-center px-2 md:w-4/12 lg:w-3/12'>
            <div class='bg-white flex w-full flex-col h-full overflow-hidden rounded-[10px] border border-t-grey-200 p-sm'>
              <div class='aspect-[4/3] bg-t-grey-100 rounded-[10px]'></div>
              <div class='mt-sm flex flex-1 flex-col gap-sm'>
                <div class='flex flex-wrap gap-2xs'>
                  <div class='h-5 w-20 bg-t-grey-100 rounded-full'></div>
                  <div class='h-5 w-24 bg-t-grey-100 rounded-full'></div>
                </div>
                <div class='flex flex-col gap-xs'>
                  <div class='h-5 bg-t-grey-100 rounded w-full'></div>
                  <div class='h-5 bg-t-grey-100 rounded w-3/4'></div>
                </div>
                <div class='flex flex-row gap-2xs flex-wrap mt-auto'>
                  <div class='h-4 w-28 bg-t-grey-100 rounded'></div>
                  <div class='h-4 w-32 bg-t-grey-100 rounded'></div>
                </div>
              </div>
            </div>
          </swiper-slide>
            <swiper-slide class='h-auto w-full flex-none justify-center px-2 md:w-4/12 lg:w-3/12'>
            <div class='bg-white flex w-full flex-col h-full overflow-hidden rounded-[10px] border border-t-grey-200 p-sm'>
              <div class='aspect-[4/3] bg-t-grey-100 rounded-[10px]'></div>
              <div class='mt-sm flex flex-1 flex-col gap-sm'>
                <div class='flex flex-wrap gap-2xs'>
                  <div class='h-5 w-20 bg-t-grey-100 rounded-full'></div>
                  <div class='h-5 w-24 bg-t-grey-100 rounded-full'></div>
                </div>
                <div class='flex flex-col gap-xs'>
                  <div class='h-5 bg-t-grey-100 rounded w-full'></div>
                  <div class='h-5 bg-t-grey-100 rounded w-3/4'></div>
                </div>
                <div class='flex flex-row gap-2xs flex-wrap mt-auto'>
                  <div class='h-4 w-28 bg-t-grey-100 rounded'></div>
                  <div class='h-4 w-32 bg-t-grey-100 rounded'></div>
                </div>
              </div>
            </div>
          </swiper-slide>
            <swiper-slide class='h-auto w-full flex-none justify-center px-2 md:w-4/12 lg:w-3/12'>
            <div class='bg-white flex w-full flex-col h-full overflow-hidden rounded-[10px] border border-t-grey-200 p-sm'>
              <div class='aspect-[4/3] bg-t-grey-100 rounded-[10px]'></div>
              <div class='mt-sm flex flex-1 flex-col gap-sm'>
                <div class='flex flex-wrap gap-2xs'>
                  <div class='h-5 w-20 bg-t-grey-100 rounded-full'></div>
                  <div class='h-5 w-24 bg-t-grey-100 rounded-full'></div>
                </div>
                <div class='flex flex-col gap-xs'>
                  <div class='h-5 bg-t-grey-100 rounded w-full'></div>
                  <div class='h-5 bg-t-grey-100 rounded w-3/4'></div>
                </div>
                <div class='flex flex-row gap-2xs flex-wrap mt-auto'>
                  <div class='h-4 w-28 bg-t-grey-100 rounded'></div>
                  <div class='h-4 w-32 bg-t-grey-100 rounded'></div>
                </div>
              </div>
            </div>
          </swiper-slide>
          </swiper-container>
        </div></div>
  </carousel-swiper><div class='md:hidden'>
      <a
        href='/collections/upcoming-courses'
        class='btn !h-[50px]'
        aria-label='View all products in the Upcoming Live CLE Webinars collection'
        variant="primary"
      >
        View all
      </a>
    </div></algolia-collection-products></div>


</section><section id="shopify-section-template--27690280681841__featured_collection_gKMbCm" class="shopify-section section">


  <script src="//nbi-sems.com/cdn/shop/t/347/assets/carousel-swiper.DuT_kWi5.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/SwiperElement.BPeEYqJ_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/query.CpiO8Lcb.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/base.CShCMygk.min.js" crossorigin="anonymous">




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/component-algolia-collection.bgd_rheH.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/task.BIuG9C6l.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">

<div class='container py-md'><algolia-collection-products
      collection-handle='most-popular-ondemand-courses'
      max-products='10'
    ><carousel-swiper data-carousel-id='template--27690280681841__featured_collection_gKMbCm'>
    <div class='md:flex md:items-center md:justify-between'><h2 class='text-gray-900 font-medium h2'>
          Popular OnDemand Courses
        </h2><div class='hidden md:flex md:items-center md:gap-4'>
        <div class='flex items-center gap-2'>
          <button
            class='swiper-button-prev swiper-button-prev--template--27690280681841__featured_collection_gKMbCm flex h-[45px] w-[45px] items-center justify-center rounded-full bg-t-grey-100 hover:bg-gray-300 transition-colors disabled:opacity-50 disabled:cursor-not-allowed'
            aria-label='Previous'
          >
            <svg class='h-6 w-6 text-gray-900' fill='none' stroke='currentColor' viewBox='0 0 24 24'>
              <path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 19l-7-7 7-7' />
            </svg>
          </button>
          <button
            class='swiper-button-next swiper-button-next--template--27690280681841__featured_collection_gKMbCm flex h-[45px] w-[45px] items-center justify-center rounded-full bg-t-grey-100 hover:bg-gray-300 transition-colors disabled:opacity-50 disabled:cursor-not-allowed'
            aria-label='Next'
          >
            <svg class='h-6 w-6 text-gray-900' fill='none' stroke='currentColor' viewBox='0 0 24 24'>
              <path stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5l7 7-7 7' />
            </svg>
          </button>
        </div><a
            href='/collections/ondemand-courses'
            class='btn !h-[50px]'
            aria-label='View all products in the Most Popular OnDemand Courses collection'
            variant="primary"
          >
            View all
          </a></div>
    </div><div class='rte text-t-grey-300 text-body mt-3'><p>Browse our top-rated, best-selling CLE courses.</p>
      </div><div class='py-md -mx-2'><div class='algolia-carousel-wrap'>
          <swiper-container
            init='false'
            slides-per-view='1.4'
            slides-per-group='1'
            breakpoints='{"768": {"slidesPerView": 3, "slidesPerGroup": 3}, "1024": {"slidesPerView": 4, "slidesPerGroup": 4}}'
            navigation='true'
            navigation-prev-el='.swiper-button-prev--template--27690280681841__featured_collection_gKMbCm'
            navigation-next-el='.swiper-button-next--template--27690280681841__featured_collection_gKMbCm'
            class='flex w-full overflow-hidden'
          >
            <swiper-slide class='h-auto w-full flex-none justify-center px-2 md:w-4/12 lg:w-3/12'>
            <div class='bg-white flex w-full flex-col h-full overflow-hidden rounded-[10px] border border-t-grey-200 p-sm'>
              <div class='aspect-[4/3] bg-t-grey-100 rounded-[10px]'></div>
              <div class='mt-sm flex flex-1 flex-col gap-sm'>
                <div class='flex flex-wrap gap-2xs'>
                  <div class='h-5 w-20 bg-t-grey-100 rounded-full'></div>
                  <div class='h-5 w-24 bg-t-grey-100 rounded-full'></div>
                </div>
                <div class='flex flex-col gap-xs'>
                  <div class='h-5 bg-t-grey-100 rounded w-full'></div>
                  <div class='h-5 bg-t-grey-100 rounded w-3/4'></div>
                </div>
                <div class='flex flex-row gap-2xs flex-wrap mt-auto'>
                  <div class='h-4 w-28 bg-t-grey-100 rounded'></div>
                  <div class='h-4 w-32 bg-t-grey-100 rounded'></div>
                </div>
              </div>
            </div>
          </swiper-slide>
            <swiper-slide class='h-auto w-full flex-none justify-center px-2 md:w-4/12 lg:w-3/12'>
            <div class='bg-white flex w-full flex-col h-full overflow-hidden rounded-[10px] border border-t-grey-200 p-sm'>
              <div class='aspect-[4/3] bg-t-grey-100 rounded-[10px]'></div>
              <div class='mt-sm flex flex-1 flex-col gap-sm'>
                <div class='flex flex-wrap gap-2xs'>
                  <div class='h-5 w-20 bg-t-grey-100 rounded-full'></div>
                  <div class='h-5 w-24 bg-t-grey-100 rounded-full'></div>
                </div>
                <div class='flex flex-col gap-xs'>
                  <div class='h-5 bg-t-grey-100 rounded w-full'></div>
                  <div class='h-5 bg-t-grey-100 rounded w-3/4'></div>
                </div>
                <div class='flex flex-row gap-2xs flex-wrap mt-auto'>
                  <div class='h-4 w-28 bg-t-grey-100 rounded'></div>
                  <div class='h-4 w-32 bg-t-grey-100 rounded'></div>
                </div>
              </div>
            </div>
          </swiper-slide>
            <swiper-slide class='h-auto w-full flex-none justify-center px-2 md:w-4/12 lg:w-3/12'>
            <div class='bg-white flex w-full flex-col h-full overflow-hidden rounded-[10px] border border-t-grey-200 p-sm'>
              <div class='aspect-[4/3] bg-t-grey-100 rounded-[10px]'></div>
              <div class='mt-sm flex flex-1 flex-col gap-sm'>
                <div class='flex flex-wrap gap-2xs'>
                  <div class='h-5 w-20 bg-t-grey-100 rounded-full'></div>
                  <div class='h-5 w-24 bg-t-grey-100 rounded-full'></div>
                </div>
                <div class='flex flex-col gap-xs'>
                  <div class='h-5 bg-t-grey-100 rounded w-full'></div>
                  <div class='h-5 bg-t-grey-100 rounded w-3/4'></div>
                </div>
                <div class='flex flex-row gap-2xs flex-wrap mt-auto'>
                  <div class='h-4 w-28 bg-t-grey-100 rounded'></div>
                  <div class='h-4 w-32 bg-t-grey-100 rounded'></div>
                </div>
              </div>
            </div>
          </swiper-slide>
            <swiper-slide class='h-auto w-full flex-none justify-center px-2 md:w-4/12 lg:w-3/12'>
            <div class='bg-white flex w-full flex-col h-full overflow-hidden rounded-[10px] border border-t-grey-200 p-sm'>
              <div class='aspect-[4/3] bg-t-grey-100 rounded-[10px]'></div>
              <div class='mt-sm flex flex-1 flex-col gap-sm'>
                <div class='flex flex-wrap gap-2xs'>
                  <div class='h-5 w-20 bg-t-grey-100 rounded-full'></div>
                  <div class='h-5 w-24 bg-t-grey-100 rounded-full'></div>
                </div>
                <div class='flex flex-col gap-xs'>
                  <div class='h-5 bg-t-grey-100 rounded w-full'></div>
                  <div class='h-5 bg-t-grey-100 rounded w-3/4'></div>
                </div>
                <div class='flex flex-row gap-2xs flex-wrap mt-auto'>
                  <div class='h-4 w-28 bg-t-grey-100 rounded'></div>
                  <div class='h-4 w-32 bg-t-grey-100 rounded'></div>
                </div>
              </div>
            </div>
          </swiper-slide>
          </swiper-container>
        </div></div>
  </carousel-swiper><div class='md:hidden'>
      <a
        href='/collections/ondemand-courses'
        class='btn !h-[50px]'
        aria-label='View all products in the Most Popular OnDemand Courses collection'
        variant="primary"
      >
        View all
      </a>
    </div></algolia-collection-products></div>


</section><div id="shopify-section-template--27690280681841__shogun_custom_html_mtkGaJ" class="shopify-section">

<!-- NBI – AI Trio Cards (Shogun HTML Element) -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800&amp;display=swap" rel="stylesheet">

<style>
  .nbi-ai-trio{font-family:'Poppins',system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
  .nbi-ai-trio *{box-sizing:border-box}

  :root{
    --nbi-900:#092254; --nbi-800:#1b3666; --nbi-700:#0069a5;
    --nbi-300:#99e2f2; --nbi-200:#d3f0f8;
    --card-radius:18px;
    --card-shadow:0 8px 22px rgba(9,34,84,.18);
    --card-shadow-hover:0 24px 48px rgba(9,34,84,.35);
  }

  .nbi-ai-trio .container{max-width:1400px;margin:0 auto;padding:32px 20px 48px}

  .nbi-ai-trio .section-title{
    margin:0 0 6px 0;
    font-weight:800; letter-spacing:.2px;
    font-size:clamp(28px,3.4vw,42px);
    background:linear-gradient(90deg, #1b3666 0%, #0069a5 60%, #99e2f2 100%);
    -webkit-background-clip:text; background-clip:text; color:transparent;
  }
  .nbi-ai-trio .section-sub{
    margin:0 0 28px 0; color:#6b7690;
    font-size:clamp(14px,1.6vw,18px); font-weight:500;
  }

  @media (max-width: 767.98px){
    .nbi-ai-trio .section-title,
    .nbi-ai-trio .section-sub{ text-align:center; }
  }

  .nbi-ai-trio .cards{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:22px;
  }

  @media (max-width: 767.98px){
    .nbi-ai-trio .cards{
      display:flex;
      gap:14px;
      overflow-x:auto;
      scroll-snap-type:x mandatory;
      -webkit-overflow-scrolling:touch;
      padding-bottom:8px;
    }
    .nbi-ai-trio .card{
      min-width:88%;
      scroll-snap-align:center;
    }
  }

  @media (min-width: 768px) and (max-width: 991.98px){
    .nbi-ai-trio .container{ padding:28px 16px 40px; }

    .nbi-ai-trio .cards{
      display:grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap:16px;
      overflow:visible;
    }

    .nbi-ai-trio .card{ padding:18px; }
    .nbi-ai-trio .title{ font-size:clamp(20px, 2.2vw, 28px); }
    .nbi-ai-trio .copy{ font-size:14px; }
    .nbi-ai-trio .cta{ padding:10px 16px; font-size:14px; }
  }

  .nbi-ai-trio .card{
    position:relative;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    gap:12px;
    padding:22px;
    border-radius:var(--card-radius);
    box-shadow:var(--card-shadow);
    border:1px solid rgba(255,255,255,.12);
    background:#fff;
    color:var(--nbi-900);
    transition:transform .25s ease, box-shadow .25s ease;
    transform-style:preserve-3d;
  }

  .nbi-ai-trio .card:hover{
    transform:perspective(900px) translateY(-6px) rotateX(1.2deg) rotateY(-.6deg) scale(1.01);
    box-shadow:var(--card-shadow-hover);
  }

  .nbi-ai-trio .eyebrow{
    font-size:14px;
    letter-spacing:.08em;
    text-transform:uppercase;
    font-weight:700;
    opacity:.95;
  }

  .nbi-ai-trio .title{
    font-weight:800;
    line-height:1.15;
    margin:2px 0 6px;
    font-size:clamp(24px,3vw,34px);
  }

  .nbi-ai-trio .copy{
    color:var(--nbi-800);
    font-size:15px;
    line-height:1.55;
    margin:0 0 10px 0;
  }

  .nbi-ai-trio .cta{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:12px 18px;
    border-radius:9999px;
    font-weight:800;
    text-decoration:none;
    white-space:nowrap;
    background:linear-gradient(90deg,var(--nbi-700),var(--nbi-800));
    color:#fff;
    border:1px solid rgba(153,226,242,.35);
    box-shadow:0 12px 24px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.15);
    transition:box-shadow .25s ease; /* transform removed */
  }

  /* ✅ EDGE FIX: no translateY on hover */
  .nbi-ai-trio .cta:hover{
    transform:none;
    box-shadow:0 18px 36px rgba(0,0,0,.3);
  }

  .nbi-ai-trio .card--quiz{
    color:#fff;
    background:
      radial-gradient(520px 220px at 18% -10%, rgba(153,226,242,.18), rgba(153,226,242,0) 60%),
      linear-gradient(135deg, #092254 0%, #1b3666 100%);
    border:1px solid rgba(255,255,255,.14);
  }

  .nbi-ai-trio .card--quiz .title{color:#ffffff}
  .nbi-ai-trio .card--quiz .copy{color:#e8f6fb}
  .nbi-ai-trio .card--quiz .cta{
    background:linear-gradient(180deg,#a7e8f5 0%,#99e2f2 55%,#8fd9ea 100%);
    color:#092254;
    border-color:#1b3666;
  }

  .nbi-ai-trio .card--webinar{
    color:#fff;
    background:
      linear-gradient(0deg, rgba(9,34,84,.40), rgba(9,34,84,.32)),
      repeating-linear-gradient(45deg, rgba(255,255,255,.06) 0 2px, rgba(255,255,255,0) 2px 9px),
      linear-gradient(135deg, #0069a5 0%, #1b3666 100%);
    border:1px solid rgba(255,255,255,.14);
  }

  .nbi-ai-trio .card--webinar .title{color:#ffffff}
  .nbi-ai-trio .card--webinar .copy{color:#eef6ff}
  .nbi-ai-trio .card--webinar .cta{
    background:#ffffff;
    color:#092254;
    border-color:#99e2f2;
  }

  .nbi-ai-trio .card--courses{
    background:
      radial-gradient(480px 220px at 85% -10%, #d3f0f8 0%, rgba(211,240,248,0) 60%),
      linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
    border:1px solid #e7ebf4;
  }

  .nbi-ai-trio .card--courses .cta{
    background:linear-gradient(180deg,#a7e8f5 0%,#99e2f2 55%,#8fd9ea 100%);
    color:var(--nbi-900);
    border-color:#1b3666;
  }

  /* Add color for the eyebrow in the third card */
  .nbi-ai-trio .card--courses .eyebrow {
    color: #0069a5; /* New color for the subheading in the third card */
  }

  @media (prefers-reduced-motion:reduce){
    .nbi-ai-trio .card,
    .nbi-ai-trio .cta{transition:none}
    .nbi-ai-trio .card:hover{transform:none}
  }
</style>

<section class="nbi-ai-trio" aria-label="NBI AI Trio Cards">
  <div class="container">
    <h2 class="section-title">NBI is the #1 AI Training Resource for Lawyers.</h2>
    <p class="section-sub">Choose a short quiz, free webinar, or browse our full AI course library to level up your practice.</p>

    <div class="cards">
      <!-- Card 1 -->
      <article class="card card--quiz">
        <div>
          <div class="eyebrow">Free • 5 Minutes</div>
          <h3 class="title">AI Readiness Quiz</h3>
          <p class="copy">Take a quick 5-minute quiz: benchmark your AI readiness and get a personalized action plan!</p>
          <p class="copy">Identify your strengths, uncover growth opportunities, and receive actionable next steps to integrate AI into your practice.</p>
        </div>
        <a class="cta" href="https://nbi-sems.com/pages/ai-readiness-quiz-for-lawyers">Take the Quiz</a>
      </article>

      <!-- Card 2 -->
      <article class="card card--webinar">
        <div>
          <div class="eyebrow">Free • Webinar</div>
          <h3 class="title">AI-Ready Legal Practice</h3>
          <p class="copy">Imagine a law firm where AI reads the fine print, drafts the first pass, and surfaces insights you’d never find alone.</p>
          <p class="copy">Join us for a free webinar showing what’s possible and steps you should be taking now.</p>
        </div>
        <a class="cta" href="https://nbi-sems.com/pages/ai-webinar">Watch Webinar</a>
      </article>

      <!-- Card 3 -->
      <article class="card card--courses">
        <div>
          <div class="eyebrow">CLE • OnDemand &amp; Live</div>
          <h3 class="title">AI CLE Courses</h3>
          <p class="copy">Find accredited AI training to advance your practice.</p>
          <p class="copy">We offer OnDemand and Live CLE covering prompting, ethics, research &amp; drafting workflows, practice-specific AI use cases, and much more.</p>
        </div>
        <a class="cta" href="https://nbi-sems.com/collections/generative-ai-cle-courses">Explore AI Courses</a>
      </article>
    </div>
  </div>
</section>
</div><div id="shopify-section-template--27690280681841__quicklink_categories_yM6NQG" class="shopify-section"><section class='grid grid-cols-1 gap-[30px] px-[15px] py-[40px] 2xl:container md:px-pagemargin md:py-xl'>
  <div class='flex items-center justify-between'>
    
      <h2 class='h3 text-t-brand-primary font-medium'>Top Categories</h2>
    
    
      <a href='/pages/cle-courses-by-topic' class='btn' variant='primary'>
        Browse All
        <span class='icon-arrow'><svg-icon src='icon-arrow'></svg-icon></span>
      </a>
    
  </div>
  <ul class='flex flex-wrap gap-xs'>
    
      <li>
        <a
          href='/collections/generative-ai-cle-courses'
          variant='quaternary'
          class='btn h-[50px] text-t-brand-primary'
        >
          <span class='utility capitalize font-medium'>Generative AI</span>
        </a>
      </li>
    
      <li>
        <a
          href='/collections/ethics-specialty-credits-cle-courses'
          variant='quaternary'
          class='btn h-[50px] text-t-brand-primary'
        >
          <span class='utility capitalize font-medium'>Ethics & Specialty</span>
        </a>
      </li>
    
      <li>
        <a
          href='/collections/trusts-estates-probate-cle-courses'
          variant='quaternary'
          class='btn h-[50px] text-t-brand-primary'
        >
          <span class='utility capitalize font-medium'>Estate Planning, Trusts & Probate</span>
        </a>
      </li>
    
      <li>
        <a
          href='/collections/real-estate-cle-courses'
          variant='quaternary'
          class='btn h-[50px] text-t-brand-primary'
        >
          <span class='utility capitalize font-medium'>Real Estate</span>
        </a>
      </li>
    
      <li>
        <a
          href='/collections/litigation-appeals-cle-courses'
          variant='quaternary'
          class='btn h-[50px] text-t-brand-primary'
        >
          <span class='utility capitalize font-medium'>Litigation & Appeals</span>
        </a>
      </li>
    
      <li>
        <a
          href='/collections/business-securities-law-cle-courses'
          variant='quaternary'
          class='btn h-[50px] text-t-brand-primary'
        >
          <span class='utility capitalize font-medium'>Business & Securities Law</span>
        </a>
      </li>
    
      <li>
        <a
          href='/collections/personal-injury-negligence-cle-courses'
          variant='quaternary'
          class='btn h-[50px] text-t-brand-primary'
        >
          <span class='utility capitalize font-medium'>Personal Injury & Negligence</span>
        </a>
      </li>
    
      <li>
        <a
          href='/collections/family-law-cle-courses'
          variant='quaternary'
          class='btn h-[50px] text-t-brand-primary'
        >
          <span class='utility capitalize font-medium'>Family Law</span>
        </a>
      </li>
    
      <li>
        <a
          href='/collections/bankruptcy-foreclosure-collection-law-cle-courses'
          variant='quaternary'
          class='btn h-[50px] text-t-brand-primary'
        >
          <span class='utility capitalize font-medium'>Bankruptcy, Foreclosure & Collection Law</span>
        </a>
      </li>
    
      <li>
        <a
          href='/collections/labor-employment-cle-courses'
          variant='quaternary'
          class='btn h-[50px] text-t-brand-primary'
        >
          <span class='utility capitalize font-medium'>Labor & Employment</span>
        </a>
      </li>
    
  </ul>
</section>


</div><div id="shopify-section-template--27690280681841__highlight_qPdx6R" class="shopify-section"><div class='flex flex-col gap-y-lg py-[50px] 2xl:container lg:gap-y-pagemargin lg:py-pagemargin text-t-brand-primary'>
  <div class='flex flex-col px-pagemargin lg:items-center lg:text-center'>
    
      <img
        src='//nbi-sems.com/cdn/shop/files/award_ribbon.svg?crop=center&height=100&v=1754666386&width=100'
        width='63'
        height='67'
        alt=''
        class='mb-[25px]'
      >
    
    
      <p class='h6 mb-sm lg:mb-[15px]'>National Business Institute (NBI) is committed to equipping legal professionals with practical, skill-based continuing legal education. Since 1983, we have provided high-quality, accessible CLE through live seminars, webinars and on-demand courses, covering a broad range of legal topics. With over a million professionals trained, we continue to evolve our curriculum to meet the ever-changing demands of the legal community.</p>
    
    <h3 class='h2 lg:mb-[25px]'>Discover the NBI Difference</h3>
    <p class='hidden lg:block'></p>
  </div>
  <div class='lg:flex lg:flex-col lg:gap-y-pagemargin'>
    <swiper-container
      slides-per-view='auto'
      class='lg:hidden'
      scrollbar='true'
      scrollbar-hide='false'
      scrollbar-draggable='true'
      scrollbar-el='.swiper-scrollbar--template--27690280681841__highlight_qPdx6R'
    >
      
      
        
          
          <swiper-slide class='border-t-grey-200 h-auto min-w-[275px] max-w-[calc(100%/3)] rounded-[10px] border  ml-pagemargin'>
            
            <div class='flex gap-x-sm p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Quality_Content_2x_a8e51d19-9fb6-40dc-89c9-cfdf125719ea.png?crop=center&height=136&v=1695755396&width=100'
                width='75'
                height='102'
                alt=''
                class='h-[102px] w-[75px] rounded-[7.5px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Quality Content</h4>
                <p>Deep research, collaborative course design, and four decades of product innovation is our not-so-secret sauce.</p>
              </div>
            </div>
            
          </swiper-slide>
        
      
        
          
          <swiper-slide class='border-t-grey-200 h-auto min-w-[275px] max-w-[calc(100%/3)] rounded-[10px] border  ml-pagemargin'>
            
            <div class='flex gap-x-sm p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Diverse_Topics_2x_0b8737f0-aa67-4a21-aafc-482665a03349.png?crop=center&height=136&v=1695755414&width=100'
                width='75'
                height='102'
                alt=''
                class='h-[102px] w-[75px] rounded-[7.5px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Diverse Topics</h4>
                <p>We offer more topics than any other CLE provider. Rest assured, we've got your practice covered.</p>
              </div>
            </div>
            
          </swiper-slide>
        
      
        
          
          <swiper-slide class='border-t-grey-200 h-auto min-w-[275px] max-w-[calc(100%/3)] rounded-[10px] border  ml-pagemargin'>
            
            <div class='flex gap-x-sm p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Practical_Courses.png?crop=center&height=136&v=1695755365&width=100'
                width='75'
                height='102'
                alt=''
                class='h-[102px] w-[75px] rounded-[7.5px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Practical Courses</h4>
                <p>NBI courses are practical by design, and come with valuable resources, forms and how-to instruction.</p>
              </div>
            </div>
            
          </swiper-slide>
        
      
        
          
          <swiper-slide class='border-t-grey-200 h-auto min-w-[275px] max-w-[calc(100%/3)] rounded-[10px] border  ml-pagemargin'>
            
            <div class='flex gap-x-sm p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Expert_Instructors_2x_536ae5b8-dc42-4233-a87f-7baa6d5a2c55.png?crop=center&height=136&v=1695755419&width=100'
                width='75'
                height='102'
                alt=''
                class='h-[102px] w-[75px] rounded-[7.5px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Expert Instructors</h4>
                <p>We vet our thought-leading faculty as hard as a law school admissions department.</p>
              </div>
            </div>
            
          </swiper-slide>
        
      
        
          
          <swiper-slide class='border-t-grey-200 h-auto min-w-[275px] max-w-[calc(100%/3)] rounded-[10px] border  ml-pagemargin'>
            
            <div class='flex gap-x-sm p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Credit.png?crop=center&height=136&v=1695756307&width=100'
                width='75'
                height='102'
                alt=''
                class='h-[102px] w-[75px] rounded-[7.5px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Credit Gurus</h4>
                <p>We're a longstanding accredited provider in each CLE state. We offer instant, hassle-free credit processing.</p>
              </div>
            </div>
            
          </swiper-slide>
        
      
        
          
          <swiper-slide class='border-t-grey-200 h-auto min-w-[275px] max-w-[calc(100%/3)] rounded-[10px] border  mr-pagemargin  ml-pagemargin'>
            
            <div class='flex gap-x-sm p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Collaboration_2x_6b4e7b97-5b83-4da6-b264-98140f441062.png?crop=center&height=136&v=1695755428&width=100'
                width='75'
                height='102'
                alt=''
                class='h-[102px] w-[75px] rounded-[7.5px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Collaboration</h4>
                <p>We adapt our curriculum based on learnings from listening to 1 million+ students.</p>
              </div>
            </div>
            
          </swiper-slide>
        
      
    </swiper-container>
    <div class='px-pagemargin lg:hidden'>
      <div class='swiper-scrollbar--template--27690280681841__highlight_qPdx6R my-lg h-px overflow-hidden bg-t-grey-200'>
        <div class='swiper-scrollbar-drag h-full bg-t-brand-primary'></div>
      </div>
    </div>
    <div class='hidden flex-wrap gap-[25px] px-pagemargin lg:flex'>
      
        
          <div class='border-t-grey-200 h-fitcontent w-[calc((100%-50px)/3)] rounded-[10px] border'>
            
            <div class='flex gap-[15px] p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Quality_Content_2x_a8e51d19-9fb6-40dc-89c9-cfdf125719ea.png?v=1695755396'
                width='200'
                height='272'
                alt=''
                class='h-[136px] w-[100px] rounded-[10px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Quality Content</h4>
                <p>Deep research, collaborative course design, and four decades of product innovation is our not-so-secret sauce.</p>
              </div>
            </div>
            
          </div>
        
      
        
          <div class='border-t-grey-200 h-fitcontent w-[calc((100%-50px)/3)] rounded-[10px] border'>
            
            <div class='flex gap-[15px] p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Diverse_Topics_2x_0b8737f0-aa67-4a21-aafc-482665a03349.png?v=1695755414'
                width='200'
                height='272'
                alt=''
                class='h-[136px] w-[100px] rounded-[10px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Diverse Topics</h4>
                <p>We offer more topics than any other CLE provider. Rest assured, we've got your practice covered.</p>
              </div>
            </div>
            
          </div>
        
      
        
          <div class='border-t-grey-200 h-fitcontent w-[calc((100%-50px)/3)] rounded-[10px] border'>
            
            <div class='flex gap-[15px] p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Practical_Courses.png?v=1695755365'
                width='200'
                height='272'
                alt=''
                class='h-[136px] w-[100px] rounded-[10px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Practical Courses</h4>
                <p>NBI courses are practical by design, and come with valuable resources, forms and how-to instruction.</p>
              </div>
            </div>
            
          </div>
        
      
        
          <div class='border-t-grey-200 h-fitcontent w-[calc((100%-50px)/3)] rounded-[10px] border'>
            
            <div class='flex gap-[15px] p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Expert_Instructors_2x_536ae5b8-dc42-4233-a87f-7baa6d5a2c55.png?v=1695755419'
                width='200'
                height='272'
                alt=''
                class='h-[136px] w-[100px] rounded-[10px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Expert Instructors</h4>
                <p>We vet our thought-leading faculty as hard as a law school admissions department.</p>
              </div>
            </div>
            
          </div>
        
      
        
          <div class='border-t-grey-200 h-fitcontent w-[calc((100%-50px)/3)] rounded-[10px] border'>
            
            <div class='flex gap-[15px] p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Credit.png?v=1695756307'
                width='200'
                height='272'
                alt=''
                class='h-[136px] w-[100px] rounded-[10px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Credit Gurus</h4>
                <p>We're a longstanding accredited provider in each CLE state. We offer instant, hassle-free credit processing.</p>
              </div>
            </div>
            
          </div>
        
      
        
          <div class='border-t-grey-200 h-fitcontent w-[calc((100%-50px)/3)] rounded-[10px] border'>
            
            <div class='flex gap-[15px] p-md'>
              <img
                src='//nbi-sems.com/cdn/shop/files/Collaboration_2x_6b4e7b97-5b83-4da6-b264-98140f441062.png?v=1695755428'
                width='200'
                height='272'
                alt=''
                class='h-[136px] w-[100px] rounded-[10px] object-cover'
              >
              <div class='flex flex-col gap-y-2xs'>
                <h4 class='p text-[16px] font-medium lg:h4 lg:font-medium'>Collaboration</h4>
                <p>We adapt our curriculum based on learnings from listening to 1 million+ students.</p>
              </div>
            </div>
            
          </div>
        
      
    </div>
    <div class='flex flex-wrap gap-md px-pagemargin md:flex-nowrap lg:justify-center lg:gap-xl'>
      
        
      
        
      
        
      
        
      
        
      
        
      
    </div>
  </div>
</div>


</div><div id="shopify-section-template--27690280681841__collection_blocks_NpLKrx" class="shopify-section">
  <section class='py-lg 2xl:container md:px-pagemargin'>
    <div class='grid grid-cols-1 md:grid-cols-2'>
      
        <div class='relative pt-[100%] md:pt-0'><div class='absolute inset-0 size-full'>
            
            




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&width=300 300w,
      //nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&width=450 450w,
      //nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&width=600 600w,
      //nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&width=750 750w,
      //nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&width=900 900w,
      //nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&width=1050 1050w,
    '
    width='1440'
    height='550'
  >
<img src="//nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&amp;width=1440" alt="" srcset="//nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&amp;width=352 352w, //nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&amp;width=832 832w, //nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&amp;width=1200 1200w, //nbi-sems.com/cdn/shop/files/CLECourses.jpg?v=1695747122&amp;width=1440 1440w" width="1440" height="550" loading="eager" decoding="async" sizes="100vw" class="w-full block h-full object-cover" fetchpriority="high"></picture>

          </div>
          <div
            class='absolute bottom-lg left-sm right-sm z-10 px-sm md:relative md:bottom-0 md:left-0 md:right-0 md:px-md md:py-lg'
            style='color: #ffffff'
          >
            
              <h2 class='h2'>NBI Applied Training</h2>
            
            
              <div class='rte mt-2xs max-w-[400px] md:mt-xs'>
                <p>NBI Applied Courses show how legal work<br/>is actually done — using real-world examples,<br/>forms, workflows, and demos lawyers can<br/>use in practice.<br/><br/></p>
              </div>
            
            
              <a
                href='/collections/nbi-applied'
                class='btn mt-sm text-[14px] font-medium tracking-[0.42px]'
                variant='primary'
                
                  style='color: #0a1c2b; border-color: #0a1c2b;'
                
              >
                <span>Browse</span>
                <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
              </a>
            
          </div>
        </div>
      
        <div class='relative pt-[100%] md:pt-0'><div class='absolute inset-0 size-full'>
            
            




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&width=300 300w,
      //nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&width=450 450w,
      //nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&width=600 600w,
      //nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&width=750 750w,
      //nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&width=900 900w,
      //nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&width=1050 1050w,
    '
    width='1440'
    height='550'
  >
<img src="//nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&amp;width=1440" alt="" srcset="//nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&amp;width=352 352w, //nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&amp;width=832 832w, //nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&amp;width=1200 1200w, //nbi-sems.com/cdn/shop/files/UnlimitedCLE.jpg?v=1695747221&amp;width=1440 1440w" width="1440" height="550" loading="eager" decoding="async" sizes="100vw" class="w-full block h-full object-cover" fetchpriority="high"></picture>

          </div>
          <div
            class='absolute bottom-lg left-sm right-sm z-10 px-sm md:relative md:bottom-0 md:left-0 md:right-0 md:px-md md:py-lg'
            style='color: #ffffff'
          >
            
              <h2 class='h2'>Live In-Person Seminars</h2>
            
            
              <div class='rte mt-2xs max-w-[400px] md:mt-xs'>
                <p>Attend our live, in-person Continuing Legal Education seminars at fantastic locations. Earn your CLE credits while enjoying an engaging and interactive experience.</p><p></p>
              </div>
            
            
              <a
                href='/collections/live-in-person'
                class='btn mt-sm text-[14px] font-medium tracking-[0.42px]'
                variant='primary'
                
                  style='color: #0a1c2b; border-color: #0a1c2b;'
                
              >
                <span>Browse</span>
                <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
              </a>
            
          </div>
        </div>
      
        <div class='relative pt-[100%] md:pt-0'><div class='absolute inset-0 size-full'>
            
            




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&width=300 300w,
      //nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&width=450 450w,
      //nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&width=600 600w,
      //nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&width=750 750w,
      //nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&width=900 900w,
      //nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&width=1050 1050w,
    '
    width='1440'
    height='550'
  >
<img src="//nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&amp;width=1440" alt="" srcset="//nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&amp;width=352 352w, //nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&amp;width=832 832w, //nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&amp;width=1200 1200w, //nbi-sems.com/cdn/shop/files/StateSpecific.jpg?v=1695747299&amp;width=1440 1440w" width="1440" height="550" loading="eager" decoding="async" sizes="100vw" class="w-full block h-full object-cover" fetchpriority="high"></picture>

          </div>
          <div
            class='absolute bottom-lg left-sm right-sm z-10 px-sm md:relative md:bottom-0 md:left-0 md:right-0 md:px-md md:py-lg'
            style='color: #ffffff'
          >
            
              <h2 class='h2'>Unlimited CLE</h2>
            
            
              <div class='rte mt-2xs max-w-[400px] md:mt-xs'>
                <p>As a subscriber, you’ll gain unlimited access to our endless library of industry-leading content, covering every topic you can imagine.<br/></p>
              </div>
            
            
              <a
                href='/pages/subscribe-save-old'
                class='btn mt-sm text-[14px] font-medium tracking-[0.42px]'
                variant='primary'
                
                  style='color: #0a1c2b; border-color: #0a1c2b;'
                
              >
                <span>Browse</span>
                <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
              </a>
            
          </div>
        </div>
      
        <div class='relative pt-[100%] md:pt-0'><div class='absolute inset-0 size-full'>
            
            




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&width=300 300w,
      //nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&width=450 450w,
      //nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&width=600 600w,
      //nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&width=750 750w,
      //nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&width=900 900w,
      //nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&width=1050 1050w,
    '
    width='1440'
    height='550'
  >
<img src="//nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&amp;width=1440" alt="" srcset="//nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&amp;width=352 352w, //nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&amp;width=832 832w, //nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&amp;width=1200 1200w, //nbi-sems.com/cdn/shop/files/eLearning.jpg?v=1695747897&amp;width=1440 1440w" width="1440" height="550" loading="eager" decoding="async" sizes="100vw" class="w-full block h-full object-cover" fetchpriority="high"></picture>

          </div>
          <div
            class='absolute bottom-lg left-sm right-sm z-10 px-sm md:relative md:bottom-0 md:left-0 md:right-0 md:px-md md:py-lg'
            style='color: #ffffff'
          >
            
              <h2 class='h2'>True Crime CLE</h2>
            
            
              <div class='rte mt-2xs max-w-[400px] md:mt-xs'>
                <p>If you’re a true crime enthusiast and looking to enhance your legal knowledge, you’ll love NBI's True Crime CLE. This engaging and informative series combines riveting true crime stories with insightful legal analysis<br/></p>
              </div>
            
            
              <a
                href='/collections/true-crime-cle-courses'
                class='btn mt-sm text-[14px] font-medium tracking-[0.42px]'
                variant='primary'
                
                  style='color: #0a1c2b; border-color: #0a1c2b;'
                
              >
                <span>Browse</span>
                <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
              </a>
            
          </div>
        </div>
      
        <div class='relative pt-[100%] md:pt-0'><div class='absolute inset-0 size-full'>
            
            




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&width=300 300w,
      //nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&width=450 450w,
      //nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&width=600 600w,
      //nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&width=750 750w,
      //nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&width=900 900w,
      //nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&width=1050 1050w,
    '
    width='1440'
    height='550'
  >
<img src="//nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&amp;width=1440" alt="" srcset="//nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&amp;width=352 352w, //nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&amp;width=832 832w, //nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&amp;width=1200 1200w, //nbi-sems.com/cdn/shop/files/FastTracks.jpg?v=1695748497&amp;width=1440 1440w" width="1440" height="550" loading="eager" decoding="async" sizes="100vw" class="w-full block h-full object-cover" fetchpriority="high"></picture>

          </div>
          <div
            class='absolute bottom-lg left-sm right-sm z-10 px-sm md:relative md:bottom-0 md:left-0 md:right-0 md:px-md md:py-lg'
            style='color: #ffffff'
          >
            
              <h2 class='h2'>State-Specific CLE</h2>
            
            
              <div class='rte mt-2xs max-w-[400px] md:mt-xs'>
                <p><br/>Unlike most national CLE providers, we offer jurisdiction-specific content on topics where it matters most.<br/><br/></p>
              </div>
            
            
              <a
                href='/pages/cle-courses-by-jurisdiction'
                class='btn mt-sm text-[14px] font-medium tracking-[0.42px]'
                variant='primary'
                
                  style='color: #0a1c2b; border-color: #0a1c2b;'
                
              >
                <span>Browse</span>
                <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
              </a>
            
          </div>
        </div>
      
        <div class='relative pt-[100%] md:pt-0'><div class='absolute inset-0 size-full'>
            
            




<picture>
  <source
    media='(max-width: 767px)'
    srcset='
      //nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&width=300 300w,
      //nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&width=450 450w,
      //nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&width=600 600w,
      //nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&width=750 750w,
      //nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&width=900 900w,
      //nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&width=1050 1050w,
    '
    width='1440'
    height='550'
  >
<img src="//nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&amp;width=1440" alt="" srcset="//nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&amp;width=352 352w, //nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&amp;width=832 832w, //nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&amp;width=1200 1200w, //nbi-sems.com/cdn/shop/files/JudicialForums.jpg?v=1695748478&amp;width=1440 1440w" width="1440" height="550" loading="eager" decoding="async" sizes="100vw" class="w-full block h-full object-cover" fetchpriority="high"></picture>

          </div>
          <div
            class='absolute bottom-lg left-sm right-sm z-10 px-sm md:relative md:bottom-0 md:left-0 md:right-0 md:px-md md:py-lg'
            style='color: #ffffff'
          >
            
              <h2 class='h2'>Judicial Forums</h2>
            
            
              <div class='rte mt-2xs max-w-[400px] md:mt-xs'>
                <p><br/>Hear litigation best practices directly from the judiciary. Get trial ready and brush up on courtroom do’s and don’ts.<br/><br/></p>
              </div>
            
            
              <a
                href='/collections/judicial-forum-cle-courses'
                class='btn mt-sm text-[14px] font-medium tracking-[0.42px]'
                variant='primary'
                
                  style='color: #0a1c2b; border-color: #0a1c2b;'
                
              >
                <span>Browse</span>
                <span class='icon-arrow size-[15px]'><svg-icon class='size-[15px]' src='icon-arrow'></svg-icon></span>
              </a>
            
          </div>
        </div>
      
    </div>
  </section>



</div><div id="shopify-section-template--27690280681841__highlight_mLqj7K" class="shopify-section"><div class='flex flex-col gap-y-lg py-[50px] 2xl:container lg:gap-y-pagemargin lg:py-pagemargin text-t-brand-primary'>
  <div class='flex flex-col px-pagemargin lg:items-center lg:text-center'>
    
    
    <h3 class='h2 lg:mb-[25px]'>Trusted by Over 30,000 Law Firms</h3>
    <p class='hidden lg:block'>Leading law firms and businesses trust NBI for their CLE needs</p>
  </div>
  <div class='lg:flex lg:flex-col lg:gap-y-pagemargin'>
    <swiper-container
      slides-per-view='auto'
      class='lg:hidden'
      scrollbar='true'
      scrollbar-hide='false'
      scrollbar-draggable='true'
      scrollbar-el='.swiper-scrollbar--template--27690280681841__highlight_mLqj7K'
    >
      
      
        
      
        
      
        
      
        
      
    </swiper-container>
    <div class='px-pagemargin lg:hidden'>
      <div class='swiper-scrollbar--template--27690280681841__highlight_mLqj7K my-lg h-px overflow-hidden bg-t-grey-200'>
        <div class='swiper-scrollbar-drag h-full bg-t-brand-primary'></div>
      </div>
    </div>
    <div class='hidden flex-wrap gap-[25px] px-pagemargin lg:flex'>
      
        
      
        
      
        
      
        
      
    </div>
    <div class='flex flex-wrap gap-md px-pagemargin md:flex-nowrap lg:justify-center lg:gap-xl'>
      
        
          <div class='w-[calc(50%-10px)] lg:w-[150px]'>
            <img
              src='//nbi-sems.com/cdn/shop/files/4.svg?v=1758833847&width=400'
              width='400'
              height='200'
              alt=''
            >
          </div>
        
      
        
          <div class='w-[calc(50%-10px)] lg:w-[150px]'>
            <img
              src='//nbi-sems.com/cdn/shop/files/3.svg?v=1758833863&width=400'
              width='400'
              height='200'
              alt=''
            >
          </div>
        
      
        
          <div class='w-[calc(50%-10px)] lg:w-[150px]'>
            <img
              src='//nbi-sems.com/cdn/shop/files/2.svg?v=1758833879&width=400'
              width='400'
              height='200'
              alt=''
            >
          </div>
        
      
        
          <div class='w-[calc(50%-10px)] lg:w-[150px]'>
            <img
              src='//nbi-sems.com/cdn/shop/files/1.svg?v=1758833897&width=400'
              width='400'
              height='200'
              alt=''
            >
          </div>
        
      
    </div>
  </div>
</div>


</div>
          
        </main>

        <footer id='main-footer'><!-- BEGIN sections: footer-group -->
<div id="shopify-section-sections--27690274586993__main" class="shopify-section shopify-section-group-footer-group">


  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-accordion.DnCO3Qjv.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/query.CpiO8Lcb.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/base.CShCMygk.min.js" crossorigin="anonymous">

<div class='grid grid-cols-1 gap-md px-pagemargin py-lg bg-t-brand-primary text-p-lightest'>
  <div class='grid grid-cols-12 2xl:container'>
    <div class='col-span-12 md:col-span-7 md:border-r md:border-t-secondary-blue md:pe-md md:pt-3 lg:col-span-9'><div class='grid grid-cols-1 justify-end gap-sm md:grid-cols-2 md:gap-y-xl lg:grid-cols-4'><div class='flex flex-col gap-xs'>
                    <ul class='grid grid-cols-1 gap-2xs'>
                      <li>
                        <h3 class='hidden text-xl text-t-grey-200 md:p md:block'>About</h3><ul class='mt-6 hidden grid-cols-1 gap-xs md:grid'><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/about-nbi'
                                >About Us</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/speak-for-nbi'
                                >Become A Presenter</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/faculty'
                                >Faculty Directory</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/customer-reviews'
                                >Customer Reviews</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/content-advisory-committee'
                                >Content Advisory Committee</a>
                              </li></ul><div class='block md:hidden'>
                          
                          
                          <custom-accordion
  class='group block'
  
    data-accordion-group='footer-links'
  
  
>
  <button
    type='button'
    aria-expanded='false'
    aria-controls='Details-footer-'
    data-accordion-toggle
    class='flex w-full items-center justify-between border-b border-t-secondary-blue py-sm ring-u-focus peer-focus-visible:ring-1'
  >
    
                            <span class="text-xl text-t-grey-200 group-has-[[data-open]]:text-t-accent-blue">
                              About
                            </span>
                          

<svg-icon
  src='icon-caret'
  class='group-has-[[data-open]]:rotate-180 duration-300 transition-transform'

  

  
  
></svg-icon>
</button>
  <div
    id='Details-footer-'
    class=' invisible grid grid-rows-[0fr] transition-[visiblity,grid-template-rows] duration-300 group-has-[[data-open]]:visible group-has-[[data-open]]:grid-rows-[1fr]'
    data-accordion-content
    
  >
    <div class='overflow-hidden'>
      <div class='pt-xs'>
        
<ul class='grid grid-cols-1 gap-xs'><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/about-nbi'
                                    >About Us</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/speak-for-nbi'
                                    >Become A Presenter</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/faculty'
                                    >Faculty Directory</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/customer-reviews'
                                    >Customer Reviews</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/content-advisory-committee'
                                    >Content Advisory Committee</a>
                                  </li></ul>
      </div>
    </div>
  </div>
</custom-accordion>

                        </div>
                      </li>
                    </ul>
                  </div><div class='flex flex-col gap-xs'>
                    <ul class='grid grid-cols-1 gap-2xs'>
                      <li>
                        <h3 class='hidden text-xl text-t-grey-200 md:p md:block'>Products</h3><ul class='mt-6 hidden grid-cols-1 gap-xs md:grid'><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/collections/all-courses'
                                >CLE Courses</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/subscribe-save'
                                >CLE Subscriptions</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/collections/cle-bundles'
                                >CLE Bundles</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/collections/fast-tracks'
                                >NBI FastTracks</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/collections/podcast-cle-courses'
                                >CLE Podcast</a>
                              </li></ul><div class='block md:hidden'>
                          
                          
                          <custom-accordion
  class='group block'
  
    data-accordion-group='footer-links'
  
  
>
  <button
    type='button'
    aria-expanded='false'
    aria-controls='Details-footer-'
    data-accordion-toggle
    class='flex w-full items-center justify-between border-b border-t-secondary-blue py-sm ring-u-focus peer-focus-visible:ring-1'
  >
    
                            <span class="text-xl text-t-grey-200 group-has-[[data-open]]:text-t-accent-blue">
                              Products
                            </span>
                          

<svg-icon
  src='icon-caret'
  class='group-has-[[data-open]]:rotate-180 duration-300 transition-transform'

  

  
  
></svg-icon>
</button>
  <div
    id='Details-footer-'
    class=' invisible grid grid-rows-[0fr] transition-[visiblity,grid-template-rows] duration-300 group-has-[[data-open]]:visible group-has-[[data-open]]:grid-rows-[1fr]'
    data-accordion-content
    
  >
    <div class='overflow-hidden'>
      <div class='pt-xs'>
        
<ul class='grid grid-cols-1 gap-xs'><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/collections/all-courses'
                                    >CLE Courses</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/subscribe-save'
                                    >CLE Subscriptions</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/collections/cle-bundles'
                                    >CLE Bundles</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/collections/fast-tracks'
                                    >NBI FastTracks</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/collections/podcast-cle-courses'
                                    >CLE Podcast</a>
                                  </li></ul>
      </div>
    </div>
  </div>
</custom-accordion>

                        </div>
                      </li>
                    </ul>
                  </div><div class='flex flex-col gap-xs'>
                    <ul class='grid grid-cols-1 gap-2xs'>
                      <li>
                        <h3 class='hidden text-xl text-t-grey-200 md:p md:block'>Resources</h3><ul class='mt-6 hidden grid-cols-1 gap-xs md:grid'><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/cle-requirements-by-jurisdiction'
                                >CLE Requirements</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/faqs'
                                >FAQs</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/blogs/news'
                                >NBI Blog</a>
                              </li></ul><div class='block md:hidden'>
                          
                          
                          <custom-accordion
  class='group block'
  
    data-accordion-group='footer-links'
  
  
>
  <button
    type='button'
    aria-expanded='false'
    aria-controls='Details-footer-'
    data-accordion-toggle
    class='flex w-full items-center justify-between border-b border-t-secondary-blue py-sm ring-u-focus peer-focus-visible:ring-1'
  >
    
                            <span class="text-xl text-t-grey-200 group-has-[[data-open]]:text-t-accent-blue">
                              Resources
                            </span>
                          

<svg-icon
  src='icon-caret'
  class='group-has-[[data-open]]:rotate-180 duration-300 transition-transform'

  

  
  
></svg-icon>
</button>
  <div
    id='Details-footer-'
    class=' invisible grid grid-rows-[0fr] transition-[visiblity,grid-template-rows] duration-300 group-has-[[data-open]]:visible group-has-[[data-open]]:grid-rows-[1fr]'
    data-accordion-content
    
  >
    <div class='overflow-hidden'>
      <div class='pt-xs'>
        
<ul class='grid grid-cols-1 gap-xs'><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/cle-requirements-by-jurisdiction'
                                    >CLE Requirements</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/faqs'
                                    >FAQs</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/blogs/news'
                                    >NBI Blog</a>
                                  </li></ul>
      </div>
    </div>
  </div>
</custom-accordion>

                        </div>
                      </li>
                    </ul>
                  </div><div class='flex flex-col gap-xs'>
                    <ul class='grid grid-cols-1 gap-2xs'>
                      <li>
                        <h3 class='hidden text-xl text-t-grey-200 md:p md:block'>Support</h3><ul class='mt-6 hidden grid-cols-1 gap-xs md:grid'><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/contact-us'
                                >Contact Us</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/hardship-tuition-policy'
                                >Hardship Tuition</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='/pages/nbi-satisfaction-guarantee-cancellation-policy'
                                >Satisfaction Guarantee</a>
                              </li><li>
                                <a
                                  class='p text-[inherit] hover:text-t-accent-blue hover:no-underline'
                                  href='https://account.nbi-sems.com/home/MailListUnsubscribe'
                                >Remove From Mail List</a>
                              </li></ul><div class='block md:hidden'>
                          
                          
                          <custom-accordion
  class='group block'
  
    data-accordion-group='footer-links'
  
  
>
  <button
    type='button'
    aria-expanded='false'
    aria-controls='Details-footer-'
    data-accordion-toggle
    class='flex w-full items-center justify-between border-b border-t-secondary-blue py-sm ring-u-focus peer-focus-visible:ring-1'
  >
    
                            <span class="text-xl text-t-grey-200 group-has-[[data-open]]:text-t-accent-blue">
                              Support
                            </span>
                          

<svg-icon
  src='icon-caret'
  class='group-has-[[data-open]]:rotate-180 duration-300 transition-transform'

  

  
  
></svg-icon>
</button>
  <div
    id='Details-footer-'
    class=' invisible grid grid-rows-[0fr] transition-[visiblity,grid-template-rows] duration-300 group-has-[[data-open]]:visible group-has-[[data-open]]:grid-rows-[1fr]'
    data-accordion-content
    
  >
    <div class='overflow-hidden'>
      <div class='pt-xs'>
        
<ul class='grid grid-cols-1 gap-xs'><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/contact-us'
                                    >Contact Us</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/hardship-tuition-policy'
                                    >Hardship Tuition</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='/pages/nbi-satisfaction-guarantee-cancellation-policy'
                                    >Satisfaction Guarantee</a>
                                  </li><li>
                                    <a
                                      class='p text-[inherit]'
                                      href='https://account.nbi-sems.com/home/MailListUnsubscribe'
                                    >Remove From Mail List</a>
                                  </li></ul>
      </div>
    </div>
  </div>
</custom-accordion>

                        </div>
                      </li>
                    </ul>
                  </div></div><div class='rounded-[25px] bg-p-lightest p-sm hidden md:block mt-14 lg:max-w-[55%]'><a href='https://ipe-sems.com' class='hover:no-underline'><div class='flex' ><img
          src='//nbi-sems.com/cdn/shop/files/ipe-logo_9656c9a8-6269-47ea-b58d-935be0859170.svg?v=1759352338&width=100'
          alt='Institute for Paralegal Education'
          class='max-w-[55px] md:max-w-[100px]'
          width='89'
          height='35'
        ><div class='ml-sm flex grow flex-row items-center justify-between text-t-brand-primary'>
        <div class='ml-sm flex flex-col'><h4 class='p text-t-brand-primary'>Institute for Paralegal Education</h4><p class='text-sm text-t-grey-300'>Keep your edge with IPE resources</p></div>
        
<svg-icon
  src='icon-arrow'
  class=''

  
    style='--icon-size: 15px;'
  

  
  
></svg-icon>

      </div>
    </div></a></div>
</div>

    <div class='col-span-12 mt-7 md:col-span-5 md:mt-0 md:ps-10 md:pt-3 lg:col-span-3'><div id="shopify-block-AMDZvY1lVaWREUG1sc__hulk_form_builder_form_block_Ff86Vn" class="shopify-block shopify-app-block"><div style="margin:0 auto;" class="pxFormGenerator" id="5qriFDp2AQo3ORFi03c5GQ"></div>



<script>

  if (!window._fbFormMessageListenerAttached) {
    window._fbFormMessageListenerAttached = true;

    window.addEventListener('message', function (event) {
      const { type, payload } = event.data || {};

      if (!window.Shopify?.analytics || !type) return;

      const now = new Date().toISOString();

      if (type === 'form_viewed') {
        Shopify.analytics.publish('form_viewed', {
          ...payload,
          app_id: '1496853', // Replace with your app ID
        });
      }

      if (type === 'form_submitted') {
        Shopify.analytics.publish('form_submitted', {
          ...payload,
          app_id: '1496853', // Replace with your app ID
        });
        Shopify.analytics.visitor(
          payload,
          {
            appId: '1496853',
          },
        );
      }
      
    });
  }

  var fb_theme_app_ext_settings = {
   'padding': "35",
   'fill_color': "#ebe9e9", 
   'form_settings': "false", 
   'btn_text': "Submit", 
   'font_color': "#000000", 
   'size': "14", 
   'border_color': "#121212", 
   'border_radius': "2", 
   'border': "1", 
   'form_uuid': "5qriFDp2AQo3ORFi03c5GQ",
   'input_background_color': "#ffffff",
   'input_border_radius': "1",
   'input_border_color': "#ebe9e9",
   'input_font_color': "#3d3131",
   'input_size': "14",
   'form_width': "600",
   'sub_btn_txt_color': "#f3f3f3",
   'sub_btn_bg_color': "#3f3333",
   'sub_btn_font_size': "14",
   'sub_btn_bdr_color': "#ffffff",
   'sub_btn_bdr_rad': "3",
   'sub_btn_bdr_width': "1",
   'fonts': "Times New Roman",
   'input_border_color_focus': "#2d2727",
   'input_background_color_focus': "#f4dada"
   };
  window.FbThemeAppExtSettingsHash["5qriFDp2AQo3ORFi03c5GQ"] = fb_theme_app_ext_settings
</script>

</div>
</div>
  </div>
</div>


</div><div id="shopify-section-sections--27690274586993__legal" class="shopify-section shopify-section-group-footer-group">




<div class='text-p-lightest md:border-t md:border-t-secondary-blue bg-t-brand-primary text-p-lightest'>
  <div class='px-pagemargin py-sm 2xl:container'>
    <!-- Mobile: social links, banner, then legal content -->
    <div class='block space-y-7 md:hidden'>
      <ul class='flex items-center gap-5' role='list'>
      <li>
        <a href='https://www.facebook.com/NBICLE/' target='_blank' rel='noopener' aria-label='Facebook' class='flex hover:text-p-lightest hover:no-underline w-[22px] h-[22px]'>
          <span class='sr-only'>Facebook</span>
          
<img src="//nbi-sems.com/cdn/shop/files/facebook.svg?v=1694476465&amp;width=22" alt="" srcset="//nbi-sems.com/cdn/shop/files/facebook.svg?v=1694476465&amp;width=22 22w" width="22" height="46" loading="lazy" decoding="auto" class="w-full block w-full h-full object-contain" fetchpriority="auto">
        </a>
      </li>
      <li>
        <a href='https://www.linkedin.com/company/national-business-institute-nbi-inc.-/' target='_blank' rel='noopener' aria-label='LinkedIn' class='flex hover:text-p-lightest hover:no-underline w-[22px] h-[22px]'>
          <span class='sr-only'>LinkedIn</span>
          
<img src="//nbi-sems.com/cdn/shop/files/linkedin.svg?v=1694476496&amp;width=22" alt="" srcset="//nbi-sems.com/cdn/shop/files/linkedin.svg?v=1694476496&amp;width=22 22w" width="22" height="21" loading="lazy" decoding="auto" class="w-full block w-full h-full object-contain" fetchpriority="auto">
        </a>
      </li>
      <li>
        <a href='https://x.com/NBICLE' target='_blank' rel='noopener' aria-label='Twitter' class='flex hover:text-p-lightest hover:no-underline w-[22px] h-[22px]'>
          <span class='sr-only'>Twitter</span>
          
<img src="//nbi-sems.com/cdn/shop/files/new_twitter.png?v=1710266558&amp;width=22" alt="" srcset="//nbi-sems.com/cdn/shop/files/new_twitter.png?v=1710266558&amp;width=22 22w" width="22" height="22" loading="lazy" decoding="auto" class="w-full block w-full h-full object-contain" fetchpriority="auto">
        </a>
      </li></ul>
      

      
  <div class='-mx-4 flex flex-col items-center gap-5 border-t border-t-secondary-blue pt-7 md:mx-0 md:flex-row md:border-t-0 md:pt-0'><img
        src='//nbi-sems.com/cdn/shop/files/NBI_Logo.svg?v=1754666054&width=100'
        alt='NBI'
        class='w-[70px]'
        width='100'
        height='36'
      ><p class='caption text-center'>Copyright © 2026 National Business Institute. All rights reserved.</p><nav class='flex flex-wrap items-center justify-center gap-xs'>
        
          <a href='/pages/nbi-terms-of-use' class='caption hover:text-p-lightest hover:no-underline'>Terms of Use</a><span class='mx-2 -mt-1'>|</span>
        
          <a href='/pages/privacy-policy' class='caption hover:text-p-lightest hover:no-underline'>Privacy Policy</a><span class='mx-2 -mt-1'>|</span>
        
          <a href='/pages/nbi-cookie-policy' class='caption hover:text-p-lightest hover:no-underline'>Cookie Policy</a><span class='mx-2 -mt-1'>|</span>
        
          <a href='/pages/nbi-satisfaction-guarantee-cancellation-policy' class='caption hover:text-p-lightest hover:no-underline'>Satisfaction Guarantee</a>
        
      </nav></div>

    </div>
    <!-- Desktop: legal content, then social links -->
    <div class='hidden justify-between gap-8 md:flex'>
      
  <div class='-mx-4 flex flex-col items-center gap-5 border-t border-t-secondary-blue pt-7 md:mx-0 md:flex-row md:border-t-0 md:pt-0'><img
        src='//nbi-sems.com/cdn/shop/files/NBI_Logo.svg?v=1754666054&width=100'
        alt='NBI'
        class='w-[70px]'
        width='100'
        height='36'
      ><p class='caption text-center'>Copyright © 2026 National Business Institute. All rights reserved.</p><nav class='flex flex-wrap items-center justify-center gap-xs'>
        
          <a href='/pages/nbi-terms-of-use' class='caption hover:text-p-lightest hover:no-underline'>Terms of Use</a><span class='mx-2 -mt-1'>|</span>
        
          <a href='/pages/privacy-policy' class='caption hover:text-p-lightest hover:no-underline'>Privacy Policy</a><span class='mx-2 -mt-1'>|</span>
        
          <a href='/pages/nbi-cookie-policy' class='caption hover:text-p-lightest hover:no-underline'>Cookie Policy</a><span class='mx-2 -mt-1'>|</span>
        
          <a href='/pages/nbi-satisfaction-guarantee-cancellation-policy' class='caption hover:text-p-lightest hover:no-underline'>Satisfaction Guarantee</a>
        
      </nav></div>

      <ul class='flex items-center gap-5' role='list'>
      <li>
        <a href='https://www.facebook.com/NBICLE/' target='_blank' rel='noopener' aria-label='Facebook' class='flex hover:text-p-lightest hover:no-underline w-[22px] h-[22px]'>
          <span class='sr-only'>Facebook</span>
          
<img src="//nbi-sems.com/cdn/shop/files/facebook.svg?v=1694476465&amp;width=22" alt="" srcset="//nbi-sems.com/cdn/shop/files/facebook.svg?v=1694476465&amp;width=22 22w" width="22" height="46" loading="lazy" decoding="auto" class="w-full block w-full h-full object-contain" fetchpriority="auto">
        </a>
      </li>
      <li>
        <a href='https://www.linkedin.com/company/national-business-institute-nbi-inc.-/' target='_blank' rel='noopener' aria-label='LinkedIn' class='flex hover:text-p-lightest hover:no-underline w-[22px] h-[22px]'>
          <span class='sr-only'>LinkedIn</span>
          
<img src="//nbi-sems.com/cdn/shop/files/linkedin.svg?v=1694476496&amp;width=22" alt="" srcset="//nbi-sems.com/cdn/shop/files/linkedin.svg?v=1694476496&amp;width=22 22w" width="22" height="21" loading="lazy" decoding="auto" class="w-full block w-full h-full object-contain" fetchpriority="auto">
        </a>
      </li>
      <li>
        <a href='https://x.com/NBICLE' target='_blank' rel='noopener' aria-label='Twitter' class='flex hover:text-p-lightest hover:no-underline w-[22px] h-[22px]'>
          <span class='sr-only'>Twitter</span>
          
<img src="//nbi-sems.com/cdn/shop/files/new_twitter.png?v=1710266558&amp;width=22" alt="" srcset="//nbi-sems.com/cdn/shop/files/new_twitter.png?v=1710266558&amp;width=22 22w" width="22" height="22" loading="lazy" decoding="auto" class="w-full block w-full h-full object-contain" fetchpriority="auto">
        </a>
      </li></ul>
    </div>
  </div>
</div>


</div><div id="shopify-section-sections--27690274586993__localization" class="shopify-section shopify-section-group-footer-group">
</div>
<!-- END sections: footer-group --></footer>

        <ul hidden>
          <li id='a11y-refresh-page-message'>
            Choosing a selection results in a full page refresh.
          </li>
        </ul>


<modal-dialog
    cloak
    type='modal'
    id='cart-drawer-dialog'

    
      url=''
    

    

    

    
      close-on-backdrop-click='true'
    

    

    

    
      header-classes='rounded-t-lg bg-t-brand-primary text-p-lightest min-h-[5.625rem]'
    

    
      drawer-classes='grid-rows-[var(--dmn-dialog-header-height,_90px)_minmax(0,_1fr)_auto]'
    

    
      close-icon-size='19'
    

    

    

    
  ><h5 slot='header' class='h5 !h3 leading-[32.5px] font-medium'>Added to Cart
</h5>


  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-cart-sections.eZJcATs3.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/debounce.D6ZMjh7U.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithShopifyCart.CVuw6po4.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/quantity-input.CCB2T8AB.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/firstFocusableElement.BqnhZP5g.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/HTMLUpdateUtility.Dl5Iuazx.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithApiClient.IaGgbJQC.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/index.CKJCYK2x.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/cart-sections.WoVMkNAv.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/create-context.89xeped_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/consume.CHsRYPSi.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/context-request-event.CcEA9XIP.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/state.Cmay8SOG.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/floating-ui.dom.DttlgEKl.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/LiveRegionUtility.44lKd9Yx.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/aria-live-region-context.BZEtRCSs.min.js" crossorigin="anonymous">

<cart-sections
  section-id='cart-drawer'
  class='grid h-full grid-cols-1 grid-rows-[minmax(auto,_1fr)_auto] rounded-b-lg bg-p-lightest px-md pb-[50px] pt-lg md:px-[50px]'
  cloak
>
  <div class='js-cart-sections grid grid-cols-1 place-items-start'>
    <form
      id='cart'
      method='post'
      action='/cart'
      class='contents'
    ><h4>Empty Cart Drawer</h4></form>
    






<div class='subscription-upsell border-b border-b-t-grey-200 pb-lg pt-lg' data-upsell-surface='pdp'>





<style>
  .upsell-monthly {
    background-image: url('//nbi-sems.com/cdn/shop/files/Rectangle_27.png?v=1754666190');
  }

  @media (min-width: 768px) {
    .upsell-monthly {
      background-image: url('//nbi-sems.com/cdn/shop/files/Rectangle_27.png?v=1754666190');
    }
  }
</style>

<div class='w-full text-t-brand-primary [&_li]:text-body'>
  <div
    class='flex flex-col justify-between rounded-[11.356px] bg-cover p-lg md:flex-row md:rounded-md md:p-md upsell-monthly'
  >
    <div class='mb-xs flex flex-col gap-xs text-center md:mb-0 md:w-7/12 md:gap-[15px] md:text-left'>
      
        <h4 class='text-p-lightest [&>p]:!h4 [&>p]:!font-medium'>
          <p>Why Not Go Unlimited?</p>
        </h4>
      

      <div class='h4 font-medium text-p-lightest'>
        
          $129
        

        
          <span class='text-t-grey-200'>/ month</span>
        
      </div>

      
        <div class='hidden text-sm text-t-grey-200 md:block'>
          <p>Build expertise and stay compliant with our All-Inclusive Subscription</p>
        </div>
      
    </div>

    <div class='flex items-center justify-center [&>div]:w-full [&>div]:md:w-auto'>



  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-main-product.CAKLzUoV.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithShopifyCart.CVuw6po4.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaHitStorage.DZFmt5at.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/state.Cmay8SOG.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/ref.CbM0O0qp.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/quantity-input.CCB2T8AB.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/HTMLUpdateUtility.Dl5Iuazx.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithApiClient.IaGgbJQC.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/index.CKJCYK2x.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/cart-sections.WoVMkNAv.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/create-context.89xeped_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/consume.CHsRYPSi.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/context-request-event.CcEA9XIP.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/directive.C_Rw-dL6.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/floating-ui.dom.DttlgEKl.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/debounce.D6ZMjh7U.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/LiveRegionUtility.44lKd9Yx.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/aria-live-region-context.BZEtRCSs.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/firstFocusableElement.BqnhZP5g.min.js" crossorigin="anonymous">

<div  sub-section-id=''><product-form
      class='group/product-form'
      
      
        data-redirect-to-cart='true'
      
      data-product-handle='all-inclusive-subscription-monthly'
      data-product-title='All Inclusive CLE Pass (Monthly)'
      data-product-price='129.0'
      data-product-type='Subscription'
      data-product-sku='0003ASUBM'
      data-product-object-id='10025738010942'
      data-algolia-fallback-index=''
      data-algolia-app-id='9F1EFTW2FW'
      data-algolia-search-key='700590744e574b95e8d7519864347a27'
      data-customer-id=''
      data-product-includes='[]'
    >
      <div class='product-form__error-message-wrapper' role='alert' hidden>
<svg-icon
  src='icon-error'
  class=''

  

  
  
></svg-icon>
<span class='product-form__error-message'></span>
      </div><form method="post" action="/cart/add" id="upsell-product-form-monthly" accept-charset="UTF-8" class="group-[.loading]/product-form:pointer-events-none" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input
          type='hidden'
          name='id'
          class='hidden'
          
            value='47531956437310'
          
          
        ><input
            type='hidden'
            name='selling_plan'
            value='8799027518'
          ><div class='grid grid-cols-1 gap-y-xs'><button
            id='ProductSubmitButton-monthly'
            type='submit'
            name='add'
            variant='secondary'
            class='btn  w-full  text-body [&_span]:text-xs !border-p-lightest !text-p-lightest md:!py-md !py-lg md:w-auto !w-fit mx-auto'
            
          >
            <h5 data-atc-cta-text class='text-body flex gap-xs text-base font-medium leading-[130%]'>
              <span>Upgrade
</span>
              
            </h5>
          </button></div><input type="hidden" name="product-id" value="10025738010942" /></form></product-form></div>

<style>
  .shopify-payment-button__more-options[aria-hidden='true'] {
    display: none;
  }
</style>
</div>

    
      <div class='mt-[15px] block text-center text-sm text-p-lightest md:mt-xs md:hidden'>
        <p>Build expertise and stay compliant with our All-Inclusive Subscription</p>
      </div>
    
  </div>
</div>
</div>
  </div>
</cart-sections>

  </modal-dialog>


  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-quickshop.DZVPBEly.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/quickshop.CQYPJqsz.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithModalDialog.CtXAj9iI.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/consume.CHsRYPSi.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/query.CpiO8Lcb.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/create-context.89xeped_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/modal-context.eEhUllgb.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/context-request-event.CcEA9XIP.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/base.CShCMygk.min.js" crossorigin="anonymous">




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-main-product.CAKLzUoV.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithShopifyCart.CVuw6po4.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaHitStorage.DZFmt5at.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/state.Cmay8SOG.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/ref.CbM0O0qp.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/quantity-input.CCB2T8AB.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/HTMLUpdateUtility.Dl5Iuazx.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithApiClient.IaGgbJQC.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/index.CKJCYK2x.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/cart-sections.WoVMkNAv.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/create-context.89xeped_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/consume.CHsRYPSi.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/context-request-event.CcEA9XIP.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/directive.C_Rw-dL6.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/floating-ui.dom.DttlgEKl.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/debounce.D6ZMjh7U.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/LiveRegionUtility.44lKd9Yx.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/aria-live-region-context.BZEtRCSs.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/firstFocusableElement.BqnhZP5g.min.js" crossorigin="anonymous">




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-swiper-with-media.BSBi3a7B.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/SwiperElement.BPeEYqJ_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/query.CpiO8Lcb.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/base.CShCMygk.min.js" crossorigin="anonymous">

<quick-shop modal-id='quick-shop-modal'>
  
<modal-dialog
    cloak
    type='drawer'
    id='quick-shop-modal'

    
      url=''
    

    

    
      anchor='right'
    

    
      close-on-backdrop-click='true'
    

    

    

    

    

    

    

    

    
  ><h5 slot='header' class='h5 '>Quick Shop
</h5>
  </modal-dialog>
</quick-shop>

      </app-provider>


  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-dialog.DJSUuW_9.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithModalDialog.CtXAj9iI.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/base.CShCMygk.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithApiClient.IaGgbJQC.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/task.BIuG9C6l.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/query-all.D646pH-D.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/query-async.BD_BGkJr.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/unsafe-html.BXKrt2Ko.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/modal-context.eEhUllgb.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/create-context.89xeped_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/consume.CHsRYPSi.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/context-request-event.CcEA9XIP.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/index.CKJCYK2x.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/directive.C_Rw-dL6.min.js" crossorigin="anonymous">




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-vendor-swiper.EpeLcyI8.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/preload-helper.C1FmrZbK.min.js" crossorigin="anonymous">




  <script src="//nbi-sems.com/cdn/shop/t/347/assets/core-dynamic-product-card.dqTuzVkj.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithApiClient.IaGgbJQC.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/badgeHydrator.CWG_gpsN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/task.BIuG9C6l.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/query-all.D646pH-D.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/unsafe-html.BXKrt2Ko.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaHitStorage.DZFmt5at.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/algoliaUrlParams.D041RnRL.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/index.CKJCYK2x.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/base.CShCMygk.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/directive.C_Rw-dL6.min.js" crossorigin="anonymous">





  <script src="//nbi-sems.com/cdn/shop/t/347/assets/credits-modal-selector.BK-2mlDc.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithModalDialog.CtXAj9iI.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithShopifyCart.CVuw6po4.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/custom-element.BhZVzxrc.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/property.C7OeqhA5.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/state.Cmay8SOG.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/modal-context.eEhUllgb.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/create-context.89xeped_.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/consume.CHsRYPSi.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/context-request-event.CcEA9XIP.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/WithApiClient.IaGgbJQC.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/index.CKJCYK2x.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/cart-sections.WoVMkNAv.min.js" crossorigin="anonymous">





  <script src="//nbi-sems.com/cdn/shop/t/347/assets/component-event-date.CKFIybxV.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">





  <script src="//nbi-sems.com/cdn/shop/t/347/assets/algolia-panel.BvwLRapU.min.js" type="module" crossorigin="anonymous"></script>
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/BaseElement.DcZImwKN.min.js" crossorigin="anonymous">
  <link rel="modulepreload" href="//nbi-sems.com/cdn/shop/t/347/assets/lit-element.mvcqtviJ.min.js" crossorigin="anonymous">





  <script src="//nbi-sems.com/cdn/shop/t/347/assets/algolia-date-picker.DuImSfFq.min.js" type="module" crossorigin="anonymous"></script>




<script>
  
    window.nbiCustomerData = {
      isLoggedIn: false,
      hasActiveSubscription: false,
      subscriptionType: null,
      customerId: null
    };
  
</script>


<script
  src='https://cdn.jsdelivr.net/npm/instantsearch.js@4.79.2/dist/instantsearch.production.min.js'
  integrity='sha256-xzEobMl7YU4X8/v8b+Ax4tXJtrs9DVhKOzKDSnZgj1Q='
  crossorigin='anonymous'
  defer
></script><script>
  const _safeCall = (fn) => {
    try {
      fn()
    } catch (e) {
      console.error(e)
    }
  }

  const adjustSelectWidth = (selectElement) => {
    if (!selectElement) return
    const span = document.createElement('span')
    const styles = window.getComputedStyle(selectElement)
    span.style.fontSize = styles.fontSize
    span.style.letterSpacing = styles.letterSpacing
    span.style.textTransform = styles.textTransform
    span.textContent = selectElement.options[selectElement.selectedIndex].text
    document.body.appendChild(span)
    const w = span.getBoundingClientRect().width + 5
    document.body.removeChild(span)
    selectElement.style.width = `${Math.ceil(w)}px`
    selectElement.style.backgroundColor = 'transparent'
  }

  const isSearchPage = window.location.pathname.includes('/search')

  // shared state abbreviations mapping
  const stateAbbreviations = {
    'Alabama': 'AL', 'Alaska': 'AK', 'Arizona': 'AZ', 'Arkansas': 'AR', 'California': 'CA',
    'Colorado': 'CO', 'Connecticut': 'CT', 'Delaware': 'DE', 'Florida': 'FL', 'Georgia': 'GA',
    'Hawaii': 'HI', 'Idaho': 'ID', 'Illinois': 'IL', 'Indiana': 'IN', 'Iowa': 'IA',
    'Kansas': 'KS', 'Kentucky': 'KY', 'Louisiana': 'LA', 'Maine': 'ME', 'Maryland': 'MD',
    'Massachusetts': 'MA', 'Michigan': 'MI', 'Minnesota': 'MN', 'Mississippi': 'MS', 'Missouri': 'MO',
    'Montana': 'MT', 'Nebraska': 'NE', 'Nevada': 'NV', 'New Hampshire': 'NH', 'New Jersey': 'NJ',
    'New Mexico': 'NM', 'New York': 'NY', 'North Carolina': 'NC', 'North Dakota': 'ND', 'Ohio': 'OH',
    'Oklahoma': 'OK', 'Oregon': 'OR', 'Pennsylvania': 'PA', 'Rhode Island': 'RI', 'South Carolina': 'SC',
    'South Dakota': 'SD', 'Tennessee': 'TN', 'Texas': 'TX', 'Utah': 'UT', 'Vermont': 'VT',
    'Virginia': 'VA', 'Washington': 'WA', 'West Virginia': 'WV', 'Wisconsin': 'WI', 'Wyoming': 'WY'
  }

  // Initialize global state for credit filters
  window.selectedCreditStates = window.selectedCreditStates || []

  // prevent infinite loops with check for state-specific content
  let isValidating = false
  let lastValidationKey = null

  // check if state-specific content would return more than 0 results
  const checkStateSpecificContentValidation = (instantSearchInstance, creditRefinements, allRefinements, allDisjunctiveRefinements) => {
    // prevent race conditions
    if (isValidating) return

    const cleStateCount = creditRefinements.length
    const validationKey = `${cleStateCount}:${creditRefinements.join(',')}`

    // skip if already validated this combination
    if (lastValidationKey === validationKey) return

    isValidating = true
    lastValidationKey = validationKey

    // check if exactly one CLE state is selected
    if (cleStateCount === 1) {
      const selectedState = creditRefinements[0]
      const stateName = selectedState.replace(' CLE', '')

      performStateSpecificContentCheck(instantSearchInstance, stateName, allRefinements, allDisjunctiveRefinements)
    }

    // Reset validation flag after current execution
    requestAnimationFrame(() => {
      isValidating = false
    })
  }

  const performStateSpecificContentCheck = (instantSearchInstance, stateName, allRefinements, allDisjunctiveRefinements) => {
    const stateAbbr = stateAbbreviations[stateName] || stateName
    const algoliaClient = instantSearchInstance.client
    const indexName = instantSearchInstance.indexName

    // get current collection handle from URL
    const currentPath = window.location.pathname
    const collectionMatch = currentPath.match(/\/collections\/([^\/]+)/)
    const currentCollection = collectionMatch ? collectionMatch[1] : null

    const searchParams = {
      query: instantSearchInstance.helper.state.query || '',
      hitsPerPage: 0,
      facetFilters: []
    }

    // add current refinements as facet filters
    Object.keys(allRefinements).forEach(facet => {
      if (facet !== 'named_tags.statespecific' && allRefinements[facet].length > 0) {
        allRefinements[facet].forEach(value => {
          searchParams.facetFilters.push(`${facet}:${value}`)
        })
      }
    })

    // add disjunctive refinements as facet filters
    Object.keys(allDisjunctiveRefinements).forEach(facet => {
      if (facet !== 'named_tags.statespecific' && allDisjunctiveRefinements[facet].length > 0) {
        // for disjunctive facets, group them with OR logic
        if (allDisjunctiveRefinements[facet].length > 1) {
          searchParams.facetFilters.push(allDisjunctiveRefinements[facet].map(value => `${facet}:${value}`))
        } else {
          searchParams.facetFilters.push(`${facet}:${allDisjunctiveRefinements[facet][0]}`)
        }
      }
    })

    if (currentCollection) {
      searchParams.facetFilters.push(`collections:${currentCollection}`)
    }

    // add state-specific filter
    searchParams.facetFilters.push(`named_tags.statespecific:${stateAbbr}`)

    // perform Algolia search
    algoliaClient.search([{ indexName, params: searchParams }])
      .then(response => {
        const hitCount = response.results[0].nbHits

        if (hitCount === 0) {
          const stateSpecificToggle = document.querySelector('.ais-facet-named_tags\\.statespecific-container')
          stateSpecificToggle?.classList.add('hidden')
        }
      })
      .catch(error => {
        console.error(error)
      })
  }

  const  timeConverter = (UNIX_timestamp) => {
    var a = new Date(UNIX_timestamp * 1000)
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
    var month = months[a.getMonth()]
    var date = a.getDate()
    var time = month + ' ' + date
    return time
  }

  const templates = {
    noResults: `
      <div class='flex items-center justify-between'>
        <div class='flex flex-1 flex-col items-center justify-center gap-md'>
          <div class='flex flex-col items-center gap-sm'>
            <h3 class='text-body text-center text-t-brand-primary'>
              No matches found.
            </h3>
          </div>
        </div>
      </div>
    `,
  };

  // Helper function to update facet counters
  const updateFacetCounters = (instantSearchInstance) => {
    if (!instantSearchInstance || !instantSearchInstance.helper) return

    requestAnimationFrame(() => {
      const facetElements = new Map(
        Array.from(document.querySelectorAll('[data-facet-filter-count]')).map((el) => [
          el.getAttribute('data-facet-filter-count'),
          el,
        ])
      )

      facetElements.forEach((facetElement, facetName) => {
        // Count refinements for this facet from helper state
        const facetRefinements = instantSearchInstance.helper.state.facetsRefinements[facetName] || []
        const disjunctiveRefinements = instantSearchInstance.helper.state.disjunctiveFacetsRefinements[facetName] || []
        const hierarchicalRefinements = instantSearchInstance.helper.state.hierarchicalFacetsRefinements[facetName] || []
        const allRefinements = [...facetRefinements, ...disjunctiveRefinements, ...hierarchicalRefinements]
        let facetFilterCount = allRefinements.length

        // Special handling for numeric/range facets
        if (facetName === 'meta.course.event-date-timestamp') {
          facetFilterCount = 0
          const rangeRefinements = instantSearchInstance.helper.state.numericRefinements[facetName]
          const minValue = rangeRefinements?.['>=']?.[0]
          const maxValue = rangeRefinements?.['<=']?.[0]

          if (minValue && maxValue && !isNaN(minValue) && !isNaN(maxValue)) {
            facetFilterCount = 1
          }
        }

        if (facetElement) {
          if (facetFilterCount > 0) {
            facetElement.classList.remove('hidden')
            facetElement.classList.add('flex')
            if (facetName === 'meta.course.event-date-timestamp') {
              // Special handling for date range - show date range text
              const rangeRefinements = instantSearchInstance.helper.state.numericRefinements[facetName]
              const minValue = rangeRefinements?.['>=']?.[0]
              const maxValue = rangeRefinements?.['<=']?.[0]

              if (minValue && maxValue && !isNaN(minValue) && !isNaN(maxValue)) {
                const firstDate = timeConverter(minValue)
                const lastDate = timeConverter(maxValue)
                facetElement.textContent = firstDate === lastDate ? firstDate : `${firstDate} - ${lastDate}`
              } else {
                facetElement.textContent = facetFilterCount
              }
            } else {
              facetElement.textContent = facetFilterCount
            }
          } else {
            facetElement.classList.add('hidden')
            facetElement.classList.remove('flex')
            facetElement.textContent = ''
          }
        }
      })
    })
  }

  const customizeISStartAddWidgetArray = () => {
    algoliaShopify.hooks.registerHook('beforeISStartAddWidgetArray', function () {
      // Track previous page to detect pagination changes
      let previousPage = null

      const { sortBy, clearRefinements, stats, searchBox, refinementList, hits, pagination, panel, rangeSlider, render } = algoliaShopify.externals.widgets

      const hitMetadataCache = new Map()

      const applyMetadataDataset = (element, metadata) => {
        if (!element || !metadata) return
        if (metadata.objectId) {
          element.dataset.algoliaObjectId = String(metadata.objectId)
        }
        if (metadata.queryId) {
          element.dataset.algoliaQueryId = metadata.queryId
        }
        if (metadata.position) {
          element.dataset.algoliaPosition = String(metadata.position)
        }
        if (metadata.indexName) {
          element.dataset.algoliaIndexName = metadata.indexName
        }
      }

      const syncHitMetadataToPlaceholders = (results, instantSearchInstance) => {
        if (!results || !Array.isArray(results.hits)) return

        const resolvedIndexName =
          results.index ||
          instantSearchInstance?.indexName ||
          window?.globalInstantSearchInstance?.indexName ||
          algoliaShopify.instantsearch?.indexName ||
          algoliaShopify.config?.indexName ||
          ''

        hitMetadataCache.clear()

        results.hits.forEach((hit) => {
          const placeholderId = `product-card-${hit.objectID || hit.handle}`
          const placeholder = document.getElementById(placeholderId)
          const metadata = {
            objectId: hit.objectID || null,
            queryId: hit.__queryID || null,
            position: hit.__position || null,
            indexName: resolvedIndexName || null,
          }

          hitMetadataCache.set(placeholderId, metadata)
          if (placeholder) {
            applyMetadataDataset(placeholder, metadata)
          }
        })
      }
      const hitsWidget = hits({
        container: '.js-hits-container',
        templates: {
          item(hit) {
            const placeholderId = `product-card-${hit.objectID || hit.handle}`;
            return `<div id="${placeholderId}" class="product-card-placeholder" data-handle="${hit.handle}" data-template="product-card-horizontal"></div>`;
          },
          empty(results) {
            if (!templates.noResults) return '';
            return templates.noResults.replace(
              '__QUERY__',
              `<span class="font-medium">${results.query}</span>`
            );
          },
        },
        cssClasses: {
          list: ['space-y-[15px]', 'md:space-y-[25px]']
        }
      });

      const replacePlaceholdersWithCustomElements = () => {
        if (!customElements.get('dynamic-product-card')) {
          console.warn('dynamic-product-card custom element not defined yet, retrying...');
          setTimeout(replacePlaceholdersWithCustomElements, 100);
          return;
        }

        const placeholders = document.querySelectorAll('.product-card-placeholder:not([data-replaced])');

        if (placeholders.length === 0) return;

        const replacements = [];

        placeholders.forEach(placeholder => {
          const handle = placeholder.getAttribute('data-handle');
          const template = placeholder.getAttribute('data-template') || 'product-card-horizontal';

          if (handle) {
            const customElement = document.createElement('dynamic-product-card');
            customElement.setAttribute('handle', handle);
            customElement.setAttribute('template', template);
            customElement.setAttribute('data-replaced', 'true');

            const metadata = hitMetadataCache.get(placeholder.id)
            if (metadata) {
              applyMetadataDataset(placeholder, metadata)
              applyMetadataDataset(customElement, metadata)
            } else {
              if (placeholder.dataset.algoliaObjectId) {
                customElement.dataset.algoliaObjectId = placeholder.dataset.algoliaObjectId;
              }
              if (placeholder.dataset.algoliaQueryId) {
                customElement.dataset.algoliaQueryId = placeholder.dataset.algoliaQueryId;
              }
              if (placeholder.dataset.algoliaPosition) {
                customElement.dataset.algoliaPosition = placeholder.dataset.algoliaPosition;
              }
              if (placeholder.dataset.algoliaIndexName) {
                customElement.dataset.algoliaIndexName = placeholder.dataset.algoliaIndexName;
              }
            }

            replacements.push({ placeholder, customElement });
          }
        });

        replacements.forEach(({ placeholder, customElement }) => {
          placeholder.parentNode?.replaceChild(customElement, placeholder);
        });
      };

      let isReplacingPlaceholders = false;
      const debouncedReplace = () => {
        if (isReplacingPlaceholders) return;

        requestAnimationFrame(() => {
          isReplacingPlaceholders = true;
          replacePlaceholdersWithCustomElements();
          isReplacingPlaceholders = false;
        });
      };

      const paginationWidget = pagination({
        container: '.js-pagination-container',
        showFirst: false,
        showLast: false,
        templates: {
          previous: `
            <button class="flex size-[45px] rotate-90 items-center justify-center rounded-full bg-t-grey-100 text-t-brand-primary">
              <svg-icon src="icon-caret"></svg-icon>
            </button>
          `,
          next: `
            <button class="flex size-[45px] -rotate-90 items-center justify-center rounded-full bg-t-grey-100 text-t-brand-primary">
              <svg-icon src="icon-caret"></svg-icon>
            </button>
          `
        },
        cssClasses: {
          list: ['flex', 'gap-[5px]', 'items-center'],
          pageItem: ['px-[10px]', 'py-[12px]', 'h-[53px]'],
          link: ['text-body', 'font-medium', 'text-t-secondary-blue'],
          selectedItem: ['border-b-[5px]', 'border-b-t-accent-blue'],
          previousPageItem: ['mr-[15px]'],
          nextPageItem: ['ml-[15px]'],
        }
      });

      let connectRange = null
      if (typeof window.instantsearch !== 'undefined' && window.instantsearch?.connectors?.connectRange) {
        connectRange = window.instantsearch.connectors.connectRange
      }

      const clearRefinementsWidget = clearRefinements({
        container: '.ais-clear-refinements-container',
        cssClasses: {
          button:
            'text-body text-[14px] font-medium leading-[0.9] text-t-secondary-blue underline [&:not(:disabled)]:flex disabled:hidden',
        },
        templates: {
          resetLabel: 'Clear all',
        },
      })

      waitForElement('.ais-clear-refinements-container', (clearBtn) => {
        if (clearBtn.dataset.clearWired) return
        clearBtn.dataset.clearWired = 'true'

        clearBtn.addEventListener('click', (e) => {
          const btn = e.target.closest('button')
          if (!btn) return

          const resetTopics = () => {
            window.currentRefinedTopics = new Set()
            window.topicsWithSelectedSubtopics = new Set()
            document.querySelectorAll('.subtopic-item').forEach((el) => el.classList.add('hidden'))

            const clearSelectedDateButton = document.querySelector('#clear-date-selection')
            if (clearSelectedDateButton) {
              clearSelectedDateButton.click()
            }

            const subscriptionToggle = document.getElementById('subscriptionToggle')
            if (subscriptionToggle && subscriptionToggle.checked) {
              subscriptionToggle.checked = false

              if (window.globalInstantSearchInstance && window.globalInstantSearchInstance.helper) {
                const helper = window.globalInstantSearchInstance.helper
                _safeCall(() => helper.clearRefinements('named_tags.validinsub'))
                _safeCall(() => helper.clearRefinements('named_tags.format'))

                const url = new URL(window.location)
                const keysToDelete = []
                for (const [key] of url.searchParams) {
                  if (key.startsWith('refinementList[named_tags.validinsub]') ||
                      key.startsWith('refinementList[named_tags.format]')) {
                    keysToDelete.push(key)
                  }
                }
                keysToDelete.forEach(key => url.searchParams.delete(key))
                window.history.pushState({}, '', url)
              }
            }
          }

          resetTopics()
          setTimeout(resetTopics, 0)

          // Update counters after clearing
          setTimeout(() => {
            if (window.globalInstantSearchInstance) {
              updateFacetCounters(window.globalInstantSearchInstance)
            }
          }, 150)
        })
      })

      const statsWidget = stats({
        container: '.ais-stats-container',
        cssClasses: {
          text: 'text-utility text-[14px] font-medium uppercase text-t-brand-primary',
        },
        templates: {
          text(data, { html }) {
            return html`<span class="ais-Stats-text h-md md:h-sm">${data.nbHits} Courses</span>`
          },
        },
      })

      let sortOrdersRaw
      if (isSearchPage) {
        sortOrdersRaw = algoliaShopify.config.sort_orders
      } else {
        sortOrdersRaw = algoliaShopify.config.collection_sort_orders.default
      }
      const prefix = algoliaShopify.config.index_prefix || 'shopify_'

      const sortItems = [
        { label: "Featured", value: `${prefix}products` },
        
          {
            label: "Event Date (ASC)",
            value: "nbi_shopify_products_event_date_asc"
          },
          {
            label: "Event Date (DESC)",
            value: "nbi_shopify_products_event_date_desc"
          },
          {
            label: "Top Rated",
            value: "nbi_shopify_products_top_rated"
          }
      ]

      sortOrdersRaw.forEach((order) => {
        if (order.asc?.active) {
          sortItems.push({
            label: order.asc.title,
            value: `${prefix}products_${order.key}_asc`,
          })
        }
        if (order.desc?.active) {
          sortItems.push({
            label: order.desc.title,
            value: `${prefix}products_${order.key}_desc`,
          })
        }
      })

      // Only create sortBy widget if there are multiple sort items
      let sortByWidget = null
      if (sortItems.length > 1) {
        sortByWidget = sortBy({
          container: '.ais-sort-orders-container',
          cssClasses: { select: 'ais-SortBy-select appearance-none' },
          items: sortItems,
        })
      }

      let lastRenderState = null;

      const renderWidget = {
        init({ instantSearchInstance, helper, results }) {
          window.globalInstantSearchInstance = instantSearchInstance

          if (!helper.state.disjunctiveFacets.includes('named_tags.validinsub')) {
            helper.state.disjunctiveFacets.push('named_tags.validinsub')
          }

          if (results) {
            const datePickerElement = document.querySelector('algolia-date-picker')
            if (datePickerElement && results.facets) {
              datePickerElement.updateRangeFromSearchResults(results)
            }
            syncHitMetadataToPlaceholders(results, instantSearchInstance)
          }

          document.addEventListener('click', (e) => {
            const refinementLabel = e.target.closest('.ais-RefinementList-label, label[class*="cursor-pointer"]')
            if (refinementLabel) {
              setTimeout(() => {
                updateFacetCounters(instantSearchInstance)
              }, 100)
            }
          })

          setTimeout(() => {
            updateFacetCounters(instantSearchInstance)
          }, 500)
        },
        render({ instantSearchInstance, helper, results }) {
          window.globalInstantSearchInstance = instantSearchInstance

          const datePickerElement = document.querySelector('algolia-date-picker')
          if (datePickerElement && results && results.facets) {
            datePickerElement.updateRangeFromSearchResults(results)
          }

          // Hide pagination when no results
          const paginationContainer = document.querySelector('.js-pagination-container')
          if (paginationContainer) {
            if (results && results.nbHits === 0) {
              paginationContainer.classList.add('hidden')
            } else {
              paginationContainer.classList.remove('hidden')
            }
          }

          const skeleton = document.querySelector('.algolia-product-skeleton')
          if (skeleton && results) {
            skeleton.classList.add('hidden')
          }

          if (results) {
            syncHitMetadataToPlaceholders(results, instantSearchInstance)
          }

          debouncedReplace();

          const allRefinements = instantSearchInstance.helper.state.facetsRefinements
          const allDisjunctiveRefinements = instantSearchInstance.helper.state.disjunctiveFacetsRefinements

          const getFacetRefinements = (facetName) => {
            const conjunctiveValues = allRefinements[facetName]
            const disjunctiveValues = allDisjunctiveRefinements[facetName]
            return conjunctiveValues || disjunctiveValues || []
          }

          const creditRefinements = getFacetRefinements('meta.custom.cle_state')

          // Store selected states globally
          const paralegalCreditRefinements = getFacetRefinements('meta.custom.credits_paralegal')
          const otherCreditRefinements = getFacetRefinements('meta.custom.credits_other')

          const combinedRefinementsArray = [
            ...creditRefinements,
            ...paralegalCreditRefinements,
            ...otherCreditRefinements,
          ]

          // check if state changed to avoid unnecessary updates
          const currentStateKey = combinedRefinementsArray.join(',');
          const stateChanged = lastRenderState !== currentStateKey;
          lastRenderState = currentStateKey;

          window.selectedCreditStates = combinedRefinementsArray

          // Check state-specific content validation only if state changed
          if (stateChanged) {
            checkStateSpecificContentValidation(instantSearchInstance, creditRefinements, allRefinements, allDisjunctiveRefinements)
          }

          const hasAnyCreditSelected = combinedRefinementsArray.length > 0

          // When any of the parent credit filters (CLE State, Paralegal, Other) are selected hide message
          try {
            const dependentMessages = Array.from(document.querySelectorAll('.credit-dependent-global-message, .credit-dependent-message'))
            if (hasAnyCreditSelected) {
              dependentMessages.forEach((el) => el.classList.add('hidden'))
            } else {
              dependentMessages.forEach((el) => el.classList.remove('hidden'))
            }
          } catch (e) {
            console.error(e)
          }

          const creditClassificationWrapper = document.querySelector('.ais-facet-meta\\.custom\\.credit_classification')
          const creditTypeWrapper = document.querySelector('.ais-facet-meta\\.custom\\.credit_type')
          const formatWrapper = document.querySelector('.ais-facet-meta\\.custom\\.legal_specialization')
          const creditHoursWrapper = document.querySelector('.ais-facet-meta\\.custom\\.credit_hours')

          if (hasAnyCreditSelected) {
            // Helper function to check if wrapper has visible items
            const hasVisibleItems = (wrapper) => {
              if (!wrapper) return false
              const container = wrapper.querySelector('.ais-facet-dropdown-container')
              if (!container) return false
              const items = container.querySelectorAll('.ais-RefinementList-item')
              let visibleCount = 0

              // Process all items in a single pass
              for (let index = 0; index < items.length; index++) {
                const item = items[index]
                const subheading = item.querySelector('.subheading')

                if (subheading) {
                  // This is a header item
                  const stateName = subheading.textContent.trim()
                  const shouldShowGroup = combinedRefinementsArray.some((refinement) => refinement === stateName)

                  if (shouldShowGroup) {
                    item.classList.remove('hidden')
                    visibleCount++

                    // Show all subsequent items until we hit next subheading
                    for (let i = index + 1; i < items.length; i++) {
                      const nextItem = items[i]
                      if (nextItem.querySelector('.subheading')) break
                      nextItem.classList.remove('hidden')
                      visibleCount++
                      index = i // Skip already processed items
                    }
                  } else {
                    item.classList.add('hidden')

                    // Hide all subsequent items until we hit next subheading
                    for (let i = index + 1; i < items.length; i++) {
                      const nextItem = items[i]
                      if (nextItem.querySelector('.subheading')) break
                      nextItem.classList.add('hidden')
                      index = i // Skip already processed items
                    }
                  }
                }
              }

              return visibleCount > 0
            }

            // Execute in next frame to prevent visual "jumps"
            requestAnimationFrame(() => {
              // Check and show/hide each wrapper based on visible content
              const hasVisibleClassification = hasVisibleItems(creditClassificationWrapper)
              const hasVisibleType = hasVisibleItems(creditTypeWrapper)
              const hasVisibleHours = hasVisibleItems(creditHoursWrapper)
              const hasVisibleFormat = hasVisibleItems(formatWrapper)

              // Batch DOM updates for better performance
              const updates = [
                { wrapper: creditClassificationWrapper, visible: hasVisibleClassification },
                { wrapper: creditTypeWrapper, visible: hasVisibleType },
                { wrapper: creditHoursWrapper, visible: hasVisibleHours },
                { wrapper: formatWrapper, visible: hasVisibleFormat }
              ]

              updates.forEach(({ wrapper, visible }) => {
                if (wrapper) {
                  if (visible) {
                    wrapper.classList.remove('hidden')
                    wrapper.style.opacity = '1'
                  } else {
                    wrapper.classList.add('hidden')
                    wrapper.style.opacity = '0'
                  }
                }
              })
            })
          } else {
            // Clean up dependent filters when all parent credit filters are removed
            const classificationRefinements =
              instantSearchInstance.helper.state.facetsRefinements['meta.custom.credit_classification'] || []
            const typeRefinements =
              instantSearchInstance.helper.state.facetsRefinements['meta.custom.credit_type'] || []
            const hoursRefinements =
              instantSearchInstance.helper.state.facetsRefinements['meta.custom.credit_hours'] || []

            if (classificationRefinements.length > 0 || typeRefinements.length > 0 || hoursRefinements.length > 0) {
              if (classificationRefinements.length > 0) {
                instantSearchInstance.helper.clearRefinements('meta.custom.credit_classification')
              }

              if (typeRefinements.length > 0) {
                instantSearchInstance.helper.clearRefinements('meta.custom.credit_type')
              }

              if (hoursRefinements.length > 0) {
                instantSearchInstance.helper.clearRefinements('meta.custom.credit_hours')
              }

              // Trigger search if any refinements were cleared
              instantSearchInstance.helper.search()
            }

            // Hide all dependent filter wrappers when no credits are selected
            requestAnimationFrame(() => {
              if (creditClassificationWrapper) {
                creditClassificationWrapper.classList.add('hidden')
                creditClassificationWrapper.style.opacity = '0'
              }
              if (creditTypeWrapper) {
                creditTypeWrapper.classList.add('hidden')
                creditTypeWrapper.style.opacity = '0'
              }
              if (creditHoursWrapper) {
                creditHoursWrapper.classList.add('hidden')
                creditHoursWrapper.style.opacity = '0'
              }
              if (formatWrapper) {
                formatWrapper.classList.add('hidden')
                formatWrapper.style.opacity = '0'
              }
            })
          }

          const toggleCreditFacetPanels = (retryCount = 0) => {
            const MAX_RETRIES = 10;
            const targets = [
              '.ais-facet-meta\\.custom\\.credit_type',
              '.ais-facet-meta\\.custom\\.credit_classification',
              '.ais-facet-meta\\.custom\\.credit_hours',
              '.ais-facet-meta\\.custom\\.credit_type_hours',
            ];
            let hasMissingPanels = false;

            targets.forEach((sel) => {
              const wrapper = document.querySelector(sel);
              if (!wrapper) return;

              const panel =
                wrapper.querySelector('.ais-facet-dropdown-container .ais-Panel') ||
                wrapper.querySelector('.ais-Panel');

              const msg = wrapper.querySelector('.credit-dependent-message');

              if (panel) {
                if (hasAnyCreditSelected) {
                  panel.style.display = '';
                  panel.classList.remove('hidden');
                  if (msg) msg.classList.add('hidden');
                } else {
                  panel.style.display = 'none';
                  panel.classList.add('hidden');
                  if (msg) msg.classList.remove('hidden');
                }
              } else {
                hasMissingPanels = true;
              }
            });

            if (hasMissingPanels && retryCount < MAX_RETRIES) {
              requestAnimationFrame(() => toggleCreditFacetPanels(retryCount + 1));
            }
          };
          toggleCreditFacetPanels();


          // Handle conditional visibility for legal specialization (format) wrapper
          if (stateChanged && !hasAnyCreditSelected) {
            const formatWrapper = document.querySelector('.ais-facet-meta\\.custom\\.legal_specialization')

            // Clean up format filters when all parent credit filters are removed
            const formatRefinements =
              instantSearchInstance.helper.state.facetsRefinements['meta.custom.legal_specialization'] || []

            if (formatRefinements.length > 0) {
              instantSearchInstance.helper.clearRefinements('meta.custom.legal_specialization')
              instantSearchInstance.helper.search()
            }

            // Hide the legal specialization wrapper
            if (formatWrapper) {
              formatWrapper.classList.add('hidden')
              formatWrapper.style.opacity = '0'
            }
          }

          const selectedCredits = helper.getRefinements('meta.custom.cle_state').map((ref) => ref.value)
          const toggleWrapper = document.querySelector('.ais-facet-named_tags\\.statespecific')
          const toggleInput = document.getElementById('stateToggle')

          if (!toggleWrapper || !toggleInput) return

          const wasHidden = toggleWrapper.classList.contains('hidden')
          const shouldShowToggle = selectedCredits.length === 1 // Only show when exactly 1 CLE is selected
          const shouldHideToggle = selectedCredits.length === 0 || selectedCredits.length > 1 // Hide when 0 or 2+ CLEs selected
          const hasStateSpecificRefinements = helper.state.facetsRefinements['named_tags.statespecific'] ||
                                              helper.state.disjunctiveFacetsRefinements['named_tags.statespecific']

          if (shouldShowToggle) {
            // Show toggle when exactly 1 CLE is selected
            if (wasHidden) toggleWrapper.classList.remove('hidden')

            // Always clear state specific refinements if toggle should be hidden
            if (hasStateSpecificRefinements && hasStateSpecificRefinements.length > 0) {
              toggleInput.checked = true
            }
          } else if (shouldHideToggle) {
            // Hide toggle and clear state specific refinements when 0 or 2+ CLEs selected
            if (!wasHidden) {
              toggleWrapper.classList.add('hidden')
              toggleInput.checked = false
              _safeCall(() => helper.clearRefinements('named_tags.statespecific'))
              helper.search()
            }
            // Always clear state specific refinements if toggle should be hidden
            const hasStateSpecificRefinements = helper.state.facetsRefinements['named_tags.statespecific'] ||
              helper.state.disjunctiveFacetsRefinements['named_tags.statespecific']
            if (hasStateSpecificRefinements && hasStateSpecificRefinements.length > 0) {
              _safeCall(() => helper.clearRefinements('named_tags.statespecific'))
              helper.search()
            }
            return
          }

          if (!toggleInput.dataset.listenerAttached) {
            toggleInput.dataset.listenerAttached = 'true'
            toggleInput.addEventListener('change', () => {
              const currentSelectedStates = helper
                .getRefinements('meta.custom.cle_state')
                .map((ref) => ref.value.replace(' CLE', ''))
                .map((stateName) => stateAbbreviations[stateName] || stateName)

              _safeCall(() => helper.clearRefinements('named_tags.statespecific'))

              if (toggleInput.checked && currentSelectedStates.length > 0) {
                if (!helper.state.disjunctiveFacets.includes('named_tags.statespecific')) {
                  helper.state.disjunctiveFacets.push('named_tags.statespecific')
                }

                currentSelectedStates.forEach((state) => {
                  try {
                    helper.addDisjunctiveFacetRefinement('named_tags.statespecific', state)
                  } catch (e) {
                    helper.addFacetRefinement('named_tags.statespecific', state)
                  }
                })
              }

              helper.search()
            })
          }

          updateFacetCounters(instantSearchInstance)
        }
      }

      const widgets = [hitsWidget, clearRefinementsWidget, statsWidget, sortByWidget, paginationWidget, renderWidget]

      // Add search box widget for search pages
      if (isSearchPage) {
        const searchBoxWidget = searchBox({
          container: '.ais-search-box-container',
          cssClasses: {
            root: '!h-auto',
            form: '!h-auto !mt-0',
            input:
              'w-full border-0 bg-transparent text-[16px] font-medium leading-[1.2] text-t-foreground-secondary bg-t-white placeholder-t-foreground-secondary focus:outline-none !h-auto !min-h-0 [&::-webkit-search-cancel-button]:hidden [&::-webkit-search-decoration]:hidden [&::-ms-clear]:hidden',
            submitIcon: 'hidden',
            resetIcon: 'hidden',
          },
          placeholder: 'Content or Topic',
          showLoadingIndicator: true,
          queryHook(query, search) {
            clearTimeout(window.searchDebounceTimer)
            window.searchDebounceTimer = setTimeout(() => search(query), 300)
          },
        })
        widgets.push(searchBoxWidget)
      }

      const renderDateFacet = ({ refine, widgetParams, range, start }, isFirstRender) => {
        const container = widgetParams.container;
        if (!container) return;

        const datePickerTemplate = `<algolia-date-picker class='block mt-[15px]' style-link='//nbi-sems.com/cdn/shop/t/347/assets/easepick-custom.css?v=31921188167564332441772636480'>
  <div class='ais-facet-dropdown-container'>
    <div class='space-y-[15px]'>
      <div class='space-y-[10px]'>
        <div class='flex items-center gap-[10px]'>
          <input
            type='radio'
            name='events-timestamp-radio'
            value='events-today'
            id='events-today'
            class='size-[20px]'
          >
          <label for='events-today' class='text-body text-t-brand-primary cursor-pointer'> Today </label>
        </div>
        <div class='flex items-center gap-[10px]'>
          <input
            type='radio'
            name='events-timestamp-radio'
            value='events-tomorrow'
            id='events-tomorrow'
            class='size-[20px]'
          >
          <label for='events-tomorrow' class='text-body text-t-brand-primary cursor-pointer'> Tomorrow </label>
        </div>
        <div class='flex items-center gap-[10px]'>
          <input
            type='radio'
            name='events-timestamp-radio'
            value='events-this-week'
            id='events-this-week'
            class='size-[20px]'
          >
          <label for='events-this-week' class='text-body text-t-brand-primary cursor-pointer'> This Week </label>
        </div>
        <div class='flex items-center gap-[10px]'>
          <input
            type='radio'
            name='events-timestamp-radio'
            value='events-next-week'
            id='events-next-week'
            class='size-[20px]'
          >
          <label for='events-next-week' class='text-body text-t-brand-primary cursor-pointer'> Next Week </label>
        </div>
      </div>

      <input
        type='text'
        id='datepicker'
        class='hidden'
      >

      <button
        type='button'
        id='clear-date-selection'
        class='text-body text-[14px] font-medium leading-[0.9] text-t-secondary-blue underline hover:no-underline hidden'
      >
        Clear Date Selection
      </button>
    </div>
  </div>
</algolia-date-picker>
`;

        if (isFirstRender && datePickerTemplate) {
          container.querySelector('.ais-Panel-body').insertAdjacentHTML('beforeend', datePickerTemplate);
        }

        const picker = container.querySelector('algolia-date-picker');
        if (picker) {
          picker.refine = refine;

          if (range && range.min !== undefined && range.max !== undefined) {
            const now = new Date()
            const today = new Date(now.getFullYear(), now.getMonth(), now.getDate())
            const todayTimestamp = Math.floor(today.getTime() / 1000)

            const minValue = Math.max(todayTimestamp, range.min)
            const maxValue = range.max

            picker.setRangeValues(minValue, maxValue)
          }
        }
      };

      const dateFacetWidget = window.instantsearch.connectors.connectRange(renderDateFacet)({
        container: document.querySelector('.ais-facet-meta\\.course\\.event-date-timestamp-container'),
        attribute: 'meta.course.event-date-timestamp',
      });

      widgets.push(dateFacetWidget);

      const renderToggleFacet = ({ refine, widgetParams }, isFirstRender) => {
        const container = widgetParams.container;
        if (!container) return;

        const toggleFacetTemplate = `<algolia-toggle>
  <label class='flex cursor-pointer items-center gap-[10px] mb-[15px]'>
    <div class='inline-flex items-start justify-start group/switch gap-x-xs'>
      <div class='relative inline-block h-6 rounded-full cursor-pointer w-11'>
        <input
          id='stateToggle'
          name='state_specific_toggle'
          aria-labelledby='stateToggle_label'
          type='checkbox'
          class='absolute w-full h-full transition-colors duration-300 rounded-full appearance-none cursor-pointer peer bg-p-neutral checked:bg-t-foreground peer-checked:border-t-border peer-checked:before:bg-t-border disabled:bg-t-background-secondary checked:disabled:bg-t-foreground-secondary'
        >
        <label
          class="before:content[''] before:bg-blue-gray-500 absolute left-0.5 top-2/4 h-5 w-5 -translate-y-2/4 cursor-pointer rounded-full border border-none border-t-border bg-t-background shadow-md transition-all duration-300 before:absolute before:left-2/4 before:top-2/4 before:hidden before:h-10 before:w-10 before:-translate-x-2/4 before:-translate-y-2/4 before:rounded-full before:opacity-0 before:transition-opacity peer-checked:translate-x-full peer-checked:border-t-border peer-checked:before:bg-t-border peer-disabled:bg-t-border hover:before:opacity-10"
          for='stateToggle'
        >
        </label>
      </div>
      <label for='stateToggle' class='mt-px cursor-pointer select-none'>
        <div>
          <p
            id='stateToggle_label'
            class='ais-facet--label text-body block text-t-brand-primary group-has-[:disabled]/switch:text-t-disabled'
          >
            State Specific Content
          </p>
        </div>
      </label>
    </div>
  </label>
</algolia-toggle>
`;
        if (isFirstRender && toggleFacetTemplate) {
          container.querySelector('.ais-Panel-body').insertAdjacentHTML('beforeend', toggleFacetTemplate);
        }
      }

      const toggleFacetWidget = window.instantsearch.connectors.connectRefinementList(renderToggleFacet)({
        container: document.querySelector('.ais-facet-named_tags\\.statespecific-container'),
        attribute: 'named_tags.statespecific',
      });

      widgets.push(toggleFacetWidget);

      const createSubscriptionToggleWidget = () => {
        let isUpdatingFromToggle = false;

        return {
          render({ helper }) {
            const subscriptionToggleTemplate = `<div class='flex cursor-pointer items-center gap-[10px]'>
  <div class='inline-flex items-start justify-start group/switch gap-x-xs'>
    <div class='relative inline-block h-6 rounded-full cursor-pointer w-11'>
      <input
        id='subscriptionToggle'
        name='subscription_toggle'
        aria-labelledby='subscriptionToggle_label'
        type='checkbox'
        class='absolute w-full h-full transition-colors duration-300 rounded-full appearance-none cursor-pointer peer bg-p-neutral checked:bg-t-foreground peer-checked:border-t-border peer-checked:before:bg-t-border disabled:bg-t-background-secondary checked:disabled:bg-t-foreground-secondary'
      >
      <label
        class="before:content[''] before:bg-blue-gray-500 absolute left-0.5 top-2/4 h-5 w-5 -translate-y-2/4 cursor-pointer rounded-full border border-none border-t-border bg-t-background shadow-md transition-all duration-300 before:absolute before:left-2/4 before:top-2/4 before:hidden before:h-10 before:w-10 before:-translate-x-2/4 before:-translate-y-2/4 before:rounded-full before:opacity-0 before:transition-opacity peer-checked:translate-x-full peer-checked:border-t-border peer-checked:before:bg-t-border peer-disabled:bg-t-border hover:before:opacity-10"
        for='subscriptionToggle'
      >
      </label>
    </div>
    <label for='subscriptionToggle' class='mt-px cursor-pointer select-none'>
      <p
        id='subscriptionToggle_label'
        class='ais-facet--label text-body block text-t-brand-primary group-has-[:disabled]/switch:text-t-disabled'
      >
        Included In My Subscription
      </p>
    </label>
  </div>
</div>

`;

            const filtersContainer = document.querySelector('[data-filter-drawer] .space-y-\\[25px\\]');
            if (!filtersContainer) return;

            const originalFacet = filtersContainer.querySelector('.ais-facet-named_tags\\.validinsub');
            
            if (!originalFacet) {
              const existingToggle = filtersContainer.querySelector('.subscription-toggle-wrapper');
              if (existingToggle) {
                existingToggle.remove();
              }
              return;
            }

            let toggleWrapper = filtersContainer.querySelector('.subscription-toggle-wrapper');

            if (!toggleWrapper) {
              toggleWrapper = document.createElement('div');
              toggleWrapper.className = 'subscription-toggle-wrapper ais-facet-subscription-toggle group border-t border-t-grey-200 pt-[15px]';
              toggleWrapper.innerHTML = subscriptionToggleTemplate;
              
              originalFacet.parentNode.insertBefore(toggleWrapper, originalFacet);
              originalFacet.style.display = 'none';
            }

            const subscriptionToggleInput = toggleWrapper.querySelector('#subscriptionToggle');
            const customerData = window.nbiCustomerData;

            if (!customerData || !customerData.isLoggedIn || !customerData.hasActiveSubscription) {
              toggleWrapper.classList.add('hidden');
              return;
            } else {
              toggleWrapper.classList.remove('hidden');
            }

            if (subscriptionToggleInput && !subscriptionToggleInput.dataset.listenerAttached) {
              subscriptionToggleInput.dataset.listenerAttached = 'true';
              
              // Track if format was set by toggle (not manually by user)
              // Note: This only persists within the current page lifecycle, resets on page reload
              subscriptionToggleInput.dataset.formatSetByToggle = 'false';
              
              const isFormatSetByToggle = () => subscriptionToggleInput.dataset.formatSetByToggle === 'true';
              const setFormatByToggle = (value) => { subscriptionToggleInput.dataset.formatSetByToggle = value ? 'true' : 'false'; };

              // Track previous format state to detect manual changes
              let previousFormatValue = null;
              
              // Listen for manual format changes to reset the flag
              helper.on('change', () => {
                if (isUpdatingFromToggle) return;
                
                const currentFormat = helper.state.facetsRefinements['named_tags.format'] || [];
                const currentFormatStr = JSON.stringify(currentFormat);
                
                // If format changed and it wasn't by our code, user changed it manually
                if (previousFormatValue !== null && previousFormatValue !== currentFormatStr) {
                  setFormatByToggle(false);
                }
                previousFormatValue = currentFormatStr;
              });

              const updateToggleState = () => {
                const currentRefinements = helper.state.facetsRefinements['named_tags.validinsub'] || [];
                const disjunctiveRefinements = helper.state.disjunctiveFacetsRefinements['named_tags.validinsub'] || [];
                const allRefinements = [...currentRefinements, ...disjunctiveRefinements];
                const subscriptionType = customerData.subscriptionType === 'all' ? 'allinclusive' : customerData.subscriptionType;

                if (allRefinements.length > 0 && subscriptionType && allRefinements.includes(subscriptionType)) {
                  subscriptionToggleInput.checked = true;
                } else {
                  subscriptionToggleInput.checked = false;
                }
              };

              const urlParams = new URLSearchParams(window.location.search);
              const hasValidinsubInURL = Array.from(urlParams.keys()).some(key =>
                key.startsWith('refinementList[named_tags.validinsub]')
              );
              const hasFormatInURL = Array.from(urlParams.keys()).some(key =>
                key.startsWith('refinementList[named_tags.format]')
              );
              
              // DEFAULT ON: Auto-enable toggle if user has subscription and no validinsub URL params
              // This ensures toggle is ON by default on fresh page load
              if (hasValidinsubInURL) {
                // URL has filter params - sync toggle state with URL once helper has applied refinements
                const onFirstResult = () => {
                  updateToggleState();
                  helper.removeListener('result', onFirstResult);
                };
                helper.on('result', onFirstResult);
              } else {
                // No URL params - default to ON for users with active subscription
                subscriptionToggleInput.checked = true;
                
                // Apply the filter
                const subscriptionType = customerData.subscriptionType === 'all' ? 'allinclusive' : customerData.subscriptionType;
                if (subscriptionType) {
                  if (!helper.state.disjunctiveFacets.includes('named_tags.validinsub')) {
                    helper.state.disjunctiveFacets.push('named_tags.validinsub');
                  }
                  helper.addDisjunctiveFacetRefinement('named_tags.validinsub', subscriptionType);
                  
                  // For OnDemand: only add format if no format in URL
                  if (subscriptionType === 'ondemand' && !hasFormatInURL) {
                    if (!helper.state.facets.includes('named_tags.format')) {
                      helper.state.facets.push('named_tags.format');
                    }
                    helper.addFacetRefinement('named_tags.format', 'OnDemand');
                    setFormatByToggle(true);
                  }
                  
                  helper.search();
                }
              }

              subscriptionToggleInput.addEventListener('change', () => {
                const subscriptionType = customerData.subscriptionType === 'all' ? 'allinclusive' : customerData.subscriptionType;
                isUpdatingFromToggle = true;
                
                // Capture flag value BEFORE resetting for URL update
                const wasFormatSetByToggle = isFormatSetByToggle();

                // Only clear validinsub filter
                _safeCall(() => helper.clearRefinements('named_tags.validinsub'));
                
                // Only clear format if it was set by toggle (not manually by user)
                if (wasFormatSetByToggle) {
                  _safeCall(() => helper.clearRefinements('named_tags.format'));
                  setFormatByToggle(false);
                }

                if (subscriptionToggleInput.checked && subscriptionType) {
                  if (!helper.state.disjunctiveFacets.includes('named_tags.validinsub')) {
                    helper.state.disjunctiveFacets.push('named_tags.validinsub');
                  }

                  helper.addDisjunctiveFacetRefinement('named_tags.validinsub', subscriptionType);

                  if (subscriptionType === 'ondemand') {
                    // Only add format filter if no format is currently selected
                    const currentFormatRefinements = helper.state.facetsRefinements['named_tags.format'] || [];
                    if (currentFormatRefinements.length === 0) {
                      if (!helper.state.facets.includes('named_tags.format')) {
                        helper.state.facets.push('named_tags.format');
                      }
                      helper.addFacetRefinement('named_tags.format', 'OnDemand');
                      setFormatByToggle(true);
                    }
                  }

                  setTimeout(() => {
                    const url = new URL(window.location);
                    url.searchParams.set(`refinementList[named_tags.validinsub][0]`, subscriptionType);
                    if (subscriptionType === 'ondemand' && isFormatSetByToggle()) {
                      url.searchParams.set(`refinementList[named_tags.format][0]`, 'OnDemand');
                    }
                    window.history.replaceState({}, '', url);
                  }, 100);
                } else {
                  setTimeout(() => {
                    const url = new URL(window.location);
                    const keysToDelete = [];
                    for (const [key] of url.searchParams) {
                      if (key.startsWith('refinementList[named_tags.validinsub]')) {
                        keysToDelete.push(key);
                      }
                      // Only remove format from URL if it was set by toggle (use captured value)
                      if (wasFormatSetByToggle && key.startsWith('refinementList[named_tags.format]')) {
                        keysToDelete.push(key);
                      }
                    }
                    keysToDelete.forEach(key => url.searchParams.delete(key));
                    window.history.replaceState({}, '', url);
                  }, 100);
                }

                helper.setPage(0);
                helper.search();

                setTimeout(() => {
                  isUpdatingFromToggle = false;
                }, 300);
              });
            }

            if (!isUpdatingFromToggle && subscriptionToggleInput && subscriptionToggleInput.checked) {
              const subscriptionType = customerData.subscriptionType === 'all' ? 'allinclusive' : customerData.subscriptionType;
              const currentRefinements = helper.state.disjunctiveFacetsRefinements['named_tags.validinsub'] || [];
              const currentFormatRefinements = helper.state.facetsRefinements['named_tags.format'] || [];
              const isFormatSetByToggle = () => subscriptionToggleInput.dataset.formatSetByToggle === 'true';
              const setFormatByToggle = (value) => { subscriptionToggleInput.dataset.formatSetByToggle = value ? 'true' : 'false'; };

              let needsSearch = false;

              if (subscriptionType && !currentRefinements.includes(subscriptionType)) {
                if (!helper.state.disjunctiveFacets.includes('named_tags.validinsub')) {
                  helper.state.disjunctiveFacets.push('named_tags.validinsub');
                }
                helper.addDisjunctiveFacetRefinement('named_tags.validinsub', subscriptionType);
                needsSearch = true;
              }

              // For OnDemand: only add format filter if NO format is currently selected
              // This prevents overriding user's manual format selection
              if (subscriptionType === 'ondemand' && currentFormatRefinements.length === 0) {
                if (!helper.state.facets.includes('named_tags.format')) {
                  helper.state.facets.push('named_tags.format');
                }
                helper.addFacetRefinement('named_tags.format', 'OnDemand');
                setFormatByToggle(true);
                needsSearch = true;
              }

              if (needsSearch) {
                setTimeout(() => {
                  helper.search();
                }, 0);
              }
            }

            setTimeout(() => {
              const url = new URL(window.location);
              const subscriptionType = customerData.subscriptionType === 'all' ? 'allinclusive' : customerData.subscriptionType;
              const currentRefinements = helper.state.disjunctiveFacetsRefinements['named_tags.validinsub'] || [];
              const isToggleChecked = subscriptionToggleInput && subscriptionToggleInput.checked;
              const isFormatSetByToggle = () => subscriptionToggleInput.dataset.formatSetByToggle === 'true';

              if (isToggleChecked && currentRefinements.length > 0 && subscriptionType) {
                const hasParam = url.searchParams.has(`refinementList[named_tags.validinsub][0]`);
                if (!hasParam || url.searchParams.get(`refinementList[named_tags.validinsub][0]`) !== subscriptionType) {
                  url.searchParams.set(`refinementList[named_tags.validinsub][0]`, subscriptionType);
                  // For OnDemand: only set format param if it was set by toggle
                  if (subscriptionType === 'ondemand' && isFormatSetByToggle()) {
                    url.searchParams.set(`refinementList[named_tags.format][0]`, 'OnDemand');
                  }
                  window.history.replaceState({}, '', url);
                }
              } else if (!isToggleChecked) {
                const keysToDelete = [];
                for (const [key] of url.searchParams) {
                  if (key.startsWith('refinementList[named_tags.validinsub]') ||
                      key.startsWith('refinementList[named_tags.format]')) {
                    keysToDelete.push(key);
                  }
                }
                if (keysToDelete.length > 0) {
                  keysToDelete.forEach(key => url.searchParams.delete(key));
                  window.history.replaceState({}, '', url);
                }
              }
            }, 150);
          }
        };
      };

      const subscriptionToggleWidget = createSubscriptionToggleWidget();
      widgets.push(subscriptionToggleWidget);

      return widgets.filter(Boolean)
    })
  }

  const waitForElement = (selector, callback) => {
    let timeoutId
    const observer = new MutationObserver((_, obs) => {
      const element = document.querySelector(selector)
      if (element) {
        clearTimeout(timeoutId)
        timeoutId = setTimeout(() => {
          callback(element)
          obs.disconnect()
        }, 100)
      }
    })

    observer.observe(document.body, {
      childList: true,
      subtree: true,
      attributes: false,
      characterData: false,
    })
  }

  const customizeInstantSearchMainTemplate = () => {
    algoliaShopify.hooks.registerHook('beforeInstantSearchMainTemplate', function (_defaultTemplate, data, html) {
      const sortOrdersContainerClass = `[&_.ais-SortBy-select]:text-right font-semibold pl-2xs [&_.ais-SortBy-select]:absolute [&_.ais-SortBy-select]:inset-0 [&_.ais-SortBy-select]:w-full [&_.ais-SortBy-select]:h-full [&_.ais-SortBy-select]:opacity-0 [&_.ais-SortBy-select]:cursor-pointer`

      waitForElement('[data-algolia-search-container]', (algoliaSearchContainer) => {
        const filterDrawerToggle = algoliaSearchContainer.querySelector('[data-filter-drawer-toggle]')
        const filterDrawerClose = algoliaSearchContainer.querySelector('[data-filter-drawer-close]')
        const filterDrawer = algoliaSearchContainer.querySelector('[data-filter-drawer]')

        const toggleDrawer = (isOpen) => {
          filterDrawer.classList.toggle('-translate-x-full', !isOpen)
          document.body.classList.toggle('overflow-hidden', isOpen)
        }

        filterDrawerToggle?.addEventListener('click', () => toggleDrawer(true))
        filterDrawerClose?.addEventListener('click', () => toggleDrawer(false))
      })

      waitForElement('.ais-SortBy-select', (select) => {
        const wrapper = select.closest('.ais-sort')
        if (wrapper && !wrapper.classList.contains('relative')) {
          wrapper.classList.add('relative')
        }

        const oldSpans = wrapper.querySelectorAll('[data-selected-label]')
        oldSpans.forEach((el) => el.remove())

        const labelSpan = document.createElement('span')
        labelSpan.setAttribute('data-selected-label', '')
        labelSpan.className = 'pl-1 font-semibold whitespace-nowrap truncate'

        const beforeNode = wrapper.querySelector('.ais-sort-orders-container')
        if (beforeNode) {
          wrapper.insertBefore(labelSpan, beforeNode)
        } else {
          wrapper.appendChild(labelSpan)
        }

        const updateVisibleLabel = () => {
          labelSpan.textContent = select.options[select.selectedIndex].text
        }

        updateVisibleLabel()
        select.addEventListener('change', updateVisibleLabel)
      })

      waitForElement('.ais-sort', (wrapper) => {
        const select = wrapper.querySelector('.ais-SortBy-select')
        if (!select) return

        wrapper.addEventListener('click', (e) => {
          if (e.target !== select) {
            select.click()
            setTimeout(() => select.focus(), 0)
          }
        })
      })

      return html`
        <div class="pb-[75px]" data-algolia-search-container>
          ${isSearchPage
            ? html`
                <div class="ais-input mb-[30px] mt-[80px]">
                  <div class="mx-auto max-w-[765px]">
                    <div
                      class="flex h-[65px] items-center gap-2 rounded-[50px] border border-t-grey-200 bg-t-background"
                    >
                      <div class="flex-1 px-[30px]">
                        <div class="mb-1 font-medium text-caption text-t-foreground">Search</div>
                        <div class="ais-search-box-container"></div>
                      </div>
                      <button
                        class="flex h-[65px] w-[65px] items-center justify-center rounded-r-[50px] bg-t-accent-blue"
                      >
                        <svg-icon src="icon-search" class="text-white size-[20px]"></svg-icon>
                      </button>
                    </div>
                  </div>
                  <div class="hidden ais-input-button">
                    <div class="ais-clear-input-icon"></div>
                  </div>
                </div>
              `
            : html`
                <h1 class="hidden ais-h2">${algoliaShopify.translations.searchTitle}</h1>
                <div class="hidden ais-input">
                  <div class="ais-search-box-container"></div>
                  <div class="ais-input-button">
                    <div class="ais-clear-input-icon"></div>
                  </div>
                </div>
              `}
          <div class="hidden ais-facets-button">${algoliaShopify.translations.showFilters}</div>

          <div class="ais-block">
            <div
              class="ais-search-header flex flex-col gap-[15px] py-[30px] md:flex-row md:items-center md:justify-between"
            >
              <div class="ais-stats-container"></div>
              <div class="hidden ais-change-display">
                <span class="ais-change-display-block ais-change-display-selected"><i class="fa fa-th-large"></i></span>
                <span class="ais-change-display-list"><i class="fa fa-th-list"></i></span>
              </div>
              <div class="flex justify-between">
                <div
                  class="ais-sort flex justify-between rounded-full border border-t-brand-primary px-[15px] py-[11px] text-[14px] text-t-brand-primary"
                >
                  ${algoliaShopify.translations.sortBy}
                  <span class="ais-sort-orders-container ${sortOrdersContainerClass}"></span>
                  <span class="flex items-center justify-center pl-2xs">
                    <svg-icon src="icon-caret"></svg-icon>
                  </span>
                </div>
                <button
                  class="flex size-[40px] items-center justify-center rounded-full border border-t-brand-primary md:hidden"
                  data-filter-drawer-toggle
                >
                  <svg-icon src="icon-filter" class="size-[20px]"></svg-icon>
                </button>
              </div>
            </div>
            <div class="hidden ais-hits-container ais-results-as-block"></div>
          </div>
          <div class="hidden ais-pagination-container"></div>
          <div class="md:flex md:gap-[64px]">
            <div
              class="size-screen fixed inset-0 z-[200] -translate-x-full overflow-y-auto overflow-x-hidden bg-t-white transition-all duration-300 md:relative md:z-0 md:w-[358px] md:translate-x-0 md:overflow-visible"
              data-filter-drawer
            >
              <div class="flex items-center justify-between border-b border-b-t-grey-200 px-[30px] py-[20px] md:hidden">
                <h3>Filters</h3>
                <button class="size-[25px]" data-filter-drawer-close>
                  <svg-icon src="icon-close" class="size-[25px]"></svg-icon>
                </button>
              </div>
              <div class="space-y-[25px] px-[16px] py-[30px] md:p-0">
                <div class="ais-clear-refinements-container"></div>
                <div class="hidden ais-current-refined-values-container"></div>

                ${data.facets.map(
                  (facet) => html`
                    <div
                      class="ais-facet-dropdown-wrapper ais-facet-${facet.type} ais-facet-${facet.escapedName} ${facet.escapedName === 'named_tags.statespecific' ? 'ais-facet-toggles-wrapper ais-facet-state-specific' : ''} ${facet.escapedName === 'named_tags.validinsub' ? 'ais-facet-subscription-toggle hidden' : ''} ${['meta.custom.legal_specialization'].includes(facet.escapedName) ? 'hidden' : ''} group border-t border-t-grey-200 pt-[15px]"
                    >
                      <label
                        for="${facet.escapedName}"
                        class="ais-facet--header ais-header text-heading-5 flex w-full ${facet.escapedName === 'named_tags.validinsub' ? 'hidden' : 'cursor-pointer'} items-center justify-between text-[16px] font-medium leading-[1.3] text-t-brand-primary"
                        >${facet.title}
                        <div class="flex items-center gap-[10px]">
                          <span
                            class="text-body hidden size-[20px] items-center justify-center rounded-full bg-t-active-light text-[10px] font-medium leading-[1.2] text-t-brand-primary"
                            data-facet-filter-count="${facet.escapedName}"
                          ></span>
                          <svg-icon
                            src="icon-chevron-down"
                            class="size-[15px] transition-transform duration-300 group-has-[.ais-dropdown-checkbox:checked]:rotate-0 rotate-180"
                          ></svg-icon>
                        </div>
                      </label>
                      <input class="ais-dropdown-checkbox ${facet.escapedName === 'named_tags.validinsub' ? 'hidden' : ''}" type="checkbox" id="${facet.escapedName}" name="dropdown" ${facet.escapedName === 'named_tags.validinsub' ? 'checked' : ''} />
                      <div
                        class="ais-facet-${facet.escapedName}-container ais-facet-dropdown-container ${facet.escapedName ===
                          'price' || facet.escapedName === 'meta.course.hours'
                          ? 'py-[10px]'
                          : facet.escapedName === 'named_tags.validinsub'
                          ? ''
                          : 'mt-[15px]'}"
                      >
                        <div class="ais-refinement-list"></div>
                        ${['meta.custom.credit_type', 'meta.custom.credit_classification', 'meta.custom.credit_hours', 'meta.custom.credit_type_hours'].includes(facet.escapedName)
                          ? html`<div class="credit-dependent-message text-body text-t-secondary mt-3">Please select a CLE State, Paralegal Credit, or Other Credit.</div>`
                          : ''}
                      </div>
                    </div>
                  `
                )}
              </div>
            </div>
            <div class="md:flex-1">
              <div class="js-hits-container space-y-[15px] md:space-y-[25px]"></div>
        <div class="algolia-product-skeleton space-y-[15px] md:space-y-[25px]">
          ${[1, 2, 3, 4, 5, 6, 7, 8].map((i) => html`
            <div class="bg-white group relative flex w-full flex-col md:flex-row gap-[20px] overflow-hidden rounded-[10px] border border-t-grey-200 p-sm">
              <div class="block w-full md:w-[255px]">
                <div class="aspect-[4/3] bg-t-grey-100 rounded-[10px]"></div>
              </div>
              <div class="flex flex-1 flex-col gap-md md:gap-1 md:justify-between">
                <div class="flex flex-wrap gap-2xs">
                  <div class="h-6 w-[90px] bg-t-grey-100 rounded"></div>
                  <div class="h-6 w-[90px] bg-t-grey-100 rounded"></div>
                </div>
                <div class="flex flex-1 flex-col gap-xs md:gap-2xs">
                  <div class="h-[22px] bg-t-grey-100 rounded w-[140px]"></div>
                  <div class="h-[17px] bg-t-grey-100 rounded w-[95%]"></div>
                </div>
                <div class="flex flex-row gap-[10px] flex-wrap">
                  <div class="h-[19px] w-[110px] bg-t-grey-100 rounded"></div>
                  <div class="h-[19px] w-[110px] bg-t-grey-100 rounded"></div>
                </div>
                <div class="h-[21px] bg-t-grey-100 rounded w-full"></div>
              </div>
              <div class="hidden md:block">
                <div class="btn mx-auto my-auto h-[40px] w-[90px] bg-t-grey-100 rounded-full"></div>
              </div>
            </div>
          `)}
        </div>
              <div class="js-pagination-container mx-auto w-max py-[40px] md:py-[50px]"></div>
            </div>
          </div>
        </div>
      `
    })
  }

  let subtopicToggleTimeout = null

  const handleSubtopicToggle = (parentTopicName) => {
    if (subtopicToggleTimeout) {
      clearTimeout(subtopicToggleTimeout)
    }

    subtopicToggleTimeout = setTimeout(() => {
      executeSubtopicToggle(parentTopicName)
    }, 50)
  }

  const executeSubtopicToggle = (parentTopicName) => {
    if (!window.globalInstantSearchInstance || !window.globalInstantSearchInstance.helper) {
      return
    }

    const helper = window.globalInstantSearchInstance.helper
    const currentRefinements = helper.state.facetsRefinements['meta.custom.topic_subtopic'] || []
    const disjunctiveRefinements = helper.state.disjunctiveFacetsRefinements['meta.custom.topic_subtopic'] || []
    const allRefinements = [...currentRefinements, ...disjunctiveRefinements]

    const parentTopicSubtopics = allRefinements.filter(refinement =>
      refinement.startsWith(`${parentTopicName}: `) && refinement !== `${parentTopicName}: ${parentTopicName}`
    )

    const matchingSubtopicRefinement = `${parentTopicName}: ${parentTopicName}`
    const hasMatchingSubtopic = allRefinements.includes(matchingSubtopicRefinement)
    const parentTopicSelected = window.currentRefinedTopics?.has(parentTopicName) || false

    let needsSearch = false

    if (parentTopicSubtopics.length > 0) {
      if (hasMatchingSubtopic) {
        if (currentRefinements.includes(matchingSubtopicRefinement)) {
          helper.removeFacetRefinement('meta.custom.topic_subtopic', matchingSubtopicRefinement)
          needsSearch = true
        }
        if (disjunctiveRefinements.includes(matchingSubtopicRefinement)) {
          helper.removeDisjunctiveFacetRefinement('meta.custom.topic_subtopic', matchingSubtopicRefinement)
          needsSearch = true
        }
      }
    } else if (parentTopicSelected && !hasMatchingSubtopic) {
      if (helper.state.disjunctiveFacets.includes('meta.custom.topic_subtopic')) {
        helper.removeDisjunctiveFacetRefinement('meta.custom.topic_subtopic', matchingSubtopicRefinement)
        needsSearch = true
      } else {
        helper.removeFacetRefinement('meta.custom.topic_subtopic', matchingSubtopicRefinement)
        needsSearch = true
      }
    }

    if (needsSearch) {
      helper.search()
    }
  }

  const initializeTopicToggle = () => {
    window.currentRefinedTopics = new Set()

    document.addEventListener(
      'click',
      (e) => {
        if (e.target.classList.contains('ui-topic-checkbox')) {
          e.stopPropagation()

          const topicName = e.target.getAttribute('data-topic')
          const checkboxContainer = e.target.closest('.relative')
          const tickIcon = checkboxContainer.querySelector('span')
          const subtopics = document.querySelectorAll(`[data-parent-topic="${topicName}"]`)
          const wasChecked = checkboxContainer.classList.contains('bg-t-brand-primary')
          const willBeChecked = !wasChecked

          if (willBeChecked) {
            window.currentRefinedTopics.add(topicName)

            const subtopicsData = []
            subtopics.forEach((subtopic) => {
              const subtopicCheckbox = subtopic.querySelector('input[type="checkbox"]')
              const subtopicValue = subtopicCheckbox ? subtopicCheckbox.value : null
              if (subtopicValue) {
                subtopicsData.push(subtopicValue)
              }

              subtopic.classList.remove('hidden')

              if (subtopicCheckbox && !subtopicCheckbox.checked) {
                subtopicCheckbox.click()
              }
            })

            checkboxContainer.classList.add('bg-t-brand-primary')
            tickIcon.classList.remove('hidden')
            tickIcon.classList.add('flex', 'items-center', 'text-t-white')
          } else {
            window.currentRefinedTopics.delete(topicName)

            subtopics.forEach((subtopic) => {
              subtopic.classList.add('hidden')
            })

            const removeSubtopicRefinements = () => {
              if (window.globalInstantSearchInstance && window.globalInstantSearchInstance.helper) {
                const helper = window.globalInstantSearchInstance.helper
                const currentRefinements = helper.state.facetsRefinements['meta.custom.topic_subtopic'] || []
                const refinementsToRemove = currentRefinements.filter(refinement =>
                  refinement.startsWith(`${topicName}: `) || refinement === topicName
                )

                refinementsToRemove.forEach(refinement => {
                  helper.removeFacetRefinement('meta.custom.topic_subtopic', refinement)
                })

                const disjunctiveRefinements = helper.state.disjunctiveFacetsRefinements['meta.custom.topic_subtopic'] || []
                const disjunctiveRefinementsToRemove = disjunctiveRefinements.filter(refinement =>
                  refinement.startsWith(`${topicName}: `) || refinement === topicName
                )

                disjunctiveRefinementsToRemove.forEach(refinement => {
                  helper.removeDisjunctiveFacetRefinement('meta.custom.topic_subtopic', refinement)
                })

                const totalRemoved = refinementsToRemove.length + disjunctiveRefinementsToRemove.length
                if (totalRemoved > 0) {
                  helper.search()
                }

                return true
              }
              return false
            }

            if (!removeSubtopicRefinements()) {
              subtopics.forEach((subtopic) => {
                const subtopicCheckbox = subtopic.querySelector('input[type="checkbox"]')
                if (subtopicCheckbox && subtopicCheckbox.checked) {
                  const label = subtopic.querySelector('label')
                  if (label) {
                    label.click()
                  } else {
                    subtopicCheckbox.click()
                  }
                }
              })
            }

            checkboxContainer.classList.remove('bg-t-brand-primary')
            tickIcon.classList.add('hidden')
            tickIcon.classList.remove('flex', 'items-center', 'text-t-white')
          }
          return
        }

        const label = e.target.closest('label')
        if (!label) return

        const uiCheckbox = label.querySelector('.ui-topic-checkbox')
        if (uiCheckbox) {
          e.stopPropagation()
          return
        }

        const subtopicItem = label.closest('.subtopic-item')
        if (subtopicItem) {
          const parentTopic = subtopicItem.getAttribute('data-parent-topic')
          if (parentTopic) {
            requestAnimationFrame(() => {
              handleSubtopicToggle(parentTopic)
            })
          }
        }
      },
      true
    )
  }

  const blockHeaderClicks = () => {
    document.addEventListener('click', (e) => {
      const clickedElement = e.target
      const listItem = clickedElement.closest('li.ais-RefinementList-item')

      if (listItem && listItem.querySelector('.subheading')) {
        e.preventDefault()
        e.stopPropagation()
        e.stopImmediatePropagation()
        return false
      }
    }, true)
  }

  const customizeInstantSearchFacetParamsOptions = () => {
    const faceSliderRangeStyles = `
      [&_.rheostat-tooltip]:!block [&_.rheostat-tooltip]:caption [&_.rheostat-tooltip]:!text-t-brand-primary [&_.rheostat-tooltip]:!text-[14px] [&_.rheostat-tooltip]:!leading-[1.2] [&_.rheostat-tooltip]:!whitespace-nowrap
      [&_.rheostat-handle-lower_.rheostat-tooltip]:left-0 [&_.rheostat-handle-upper_.rheostat-tooltip]:left-[unset] [&_.rheostat-handle-upper_.rheostat-tooltip]:right-0
      [&_.rheostat-tooltip]:!translate-y-[100%] [&_.rheostat-progress]:!h-0.5 [&_.rheostat-handle]:top-[5px] [&_.rheostat-handle]:!size-[15px]
      [&_.rheostat-handle]:!border-t-foreground [&_.rheostat-handle]:!border-2 [&_.rheostat-background]:!bg-t-border-02 [&_.rheostat-background]:!h-0.5
      [&_.rheostat]:!mx-[8px]
    `

    const generalStyles = `
      [&_.ais-RefinementList-list]:space-y-[10px]
      [&_.ais-RefinementList-searchBox]:hidden
      [&_.subheading]:select-none
      [&_.subheading]:cursor-default
    `

    const showMoreStyles = `
      mt-xs text-t-brand-primary underline hover:no-underline text-body text-xs [&.ais-RefinementList-showMore--disabled]:hidden
    `

    algoliaShopify.hooks.registerHook('beforeInstantSearchFacetParamsOptions', (params, facet) => {
      if (facet.escapedName === 'options.size') return params

      if (
        facet.escapedName === 'named_tags.topic' ||
        facet.escapedName === 'named_tags.subtopic' ||
        facet.escapedName === 'meta.custom.credits_paralegal' ||
        facet.escapedName === 'meta.custom.credits_other'
      ) {
        return {
          ...params,
          showMore: true,
          showMoreLimit: 101,
          cssClasses: {
            ...(params.cssClasses || {}),
            root: generalStyles,
            showMore: showMoreStyles,
          },
          templates: {
            ...params.templates,
            item(data, { html }) {
              return html`
                <label class="flex cursor-pointer items-center gap-[10px]">
                  <div
                    class="${data.isRefined
                      ? 'bg-t-brand-primary'
                      : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                  >
                    <input class="hidden" type="checkbox" value="${data.value}" ${data.isRefined ? 'checked' : ''} />
                    <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                  </div>
                  <span class="ais-facet--label text-t-brand-primary">${data.label}</span>
                </label>
              `
            },
          },
        }
      }

      if (facet.escapedName === 'meta.custom.cle_state') {
        return {
          ...params,
          showMore: true,
          showMoreLimit: 1001,
          sortBy: ['name:asc'],
          cssClasses: {
            root: generalStyles,
            showMore: showMoreStyles,
          },
          templates: {
            ...params.templates,
            item(data, { html }) {
              const toggleInput = document.getElementById('stateToggle')
              const shouldHideItem = toggleInput && toggleInput.checked && !data.isRefined

              return html`
                <label class="flex cursor-pointer items-center gap-[10px]" style="${shouldHideItem ? 'display: none;' : ''}" data-cle-state-item="${data.value}">
                  <div
                    class="${data.isRefined
                      ? 'bg-t-brand-primary'
                      : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                  >
                    <input class="hidden" type="checkbox" value="${data.value}" ${data.isRefined ? 'checked' : ''} />
                    <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                  </div>
                  <span class="ais-facet--label text-t-brand-primary">${data.label}</span>
                </label>
              `
            },
          },
        }
      }

      // Handle credit classification - only show when credit type is selected
      if (facet.escapedName === 'meta.custom.credit_classification') {
        return {
          ...params,
          limit: 1000,
          showMoreLimit: 1001,
          cssClasses: {
            root: generalStyles,
          },
          transformItems(items) {
            // Get selected states
            const selectedStates = window.selectedCreditStates || []

            // Create memoization key
            const key = `${items.length}:${selectedStates.join(',')}`

            // Group items by state
            const grouped = {}
            items.forEach((item) => {
              // Skip items without state prefix
              if (!item.label.includes(': ')) return

              // Parse "State: classification" format
              const [state, classification] = item.label.split(': ')
              if (!grouped[state]) {
                grouped[state] = []
              }
              grouped[state].push({
                ...item,
                state,
                classification,
              })
            })

            // Filter by selected states
            const filteredGrouped = selectedStates.length > 0
              ? Object.fromEntries(Object.entries(grouped).filter(([state]) => selectedStates.includes(state)))
              : grouped

            // Flatten back to array with state headers
            const result = []
            Object.keys(filteredGrouped)
              .sort()
              .forEach((state) => {
                // Add state header item
                result.push({
                  label: state,
                  value: `header_${state}`,
                  count: 0,
                  isRefined: false,
                  isHeader: true,
                })
                // Add classification items for this state
                filteredGrouped[state]
                  .sort((a, b) => a.classification.localeCompare(b.classification))
                  .forEach((item) => {
                    result.push(item)
                  })
              })

            return result
          },
          templates: {
            ...params.templates,
            item(data, { html }) {
              // Render state headers differently
              if (data.isHeader) {
                return html`
                  <div class="subheading mb-2 mt-4 text-[14px] font-semibold text-t-brand-primary first:mt-0">
                    ${data.label}
                  </div>
                `
              }

              return html`
                <label class="ml-4 flex cursor-pointer items-center gap-[10px]">
                  <div
                    class="${data.isRefined
                      ? 'bg-t-brand-primary'
                      : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                  >
                    <input class="hidden" type="checkbox" value="${data.value}" ${data.isRefined ? 'checked' : ''} />
                    <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                  </div>
                  <span class="ais-facet--label text-t-brand-primary">${data.classification}</span>
                </label>
              `
            },
          },
        }
      }

      // Handle credit type - only show when credit type is selected
      if (facet.escapedName === 'meta.custom.credit_type') {
        return {
          ...params,
          limit: 1000,
          showMoreLimit: 1001,
          cssClasses: {
            root: generalStyles,
          },
          transformItems(items) {
            // Get selected states
            const selectedStates = window.selectedCreditStates || []

            // Create memoization key
            const key = `${items.length}:${selectedStates.join(',')}`

            // Group items by state
            const grouped = {}
            items.forEach((item) => {
              // Skip items without state prefix (e.g., "General", "Law Credits")
              if (!item.label.includes(': ')) return

              const [state, type] = item.label.split(': ')
              if (!grouped[state]) {
                grouped[state] = []
              }
              grouped[state].push({
                ...item,
                state,
                type,
              })
            })

            // Filter by selected states
            const filteredGrouped = selectedStates.length > 0
              ? Object.fromEntries(Object.entries(grouped).filter(([state]) => selectedStates.includes(state)))
              : grouped

            // Flatten back to array with state headers
            const result = []
            Object.keys(filteredGrouped)
              .sort()
              .forEach((state) => {
                // Add state header item
                result.push({
                  label: state,
                  value: `header_${state}`,
                  count: 0,
                  isRefined: false,
                  isHeader: true,
                })

                // Sort items for this state - General first, then alphabetically
                const sortedStateItems = filteredGrouped[state].sort((a, b) => {
                  if (a.type === 'General') return -1
                  if (b.type === 'General') return 1
                  return a.type.localeCompare(b.type)
                })

                // Add type items for this state
                sortedStateItems.forEach((item) => {
                  result.push(item)
                })
              })

            return result
          },
          templates: {
            item(data, { html }) {
              // Render state headers differently
              if (data.isHeader) {
                return html`
                  <div class="subheading mb-2 mt-4 text-[14px] font-semibold text-t-brand-primary first:mt-0">
                    ${data.label}
                  </div>
                `
              }

              return html`
                <label class="ml-4 flex cursor-pointer items-center gap-[10px]">
                  <div
                    class="${data.isRefined
                      ? 'bg-t-brand-primary'
                      : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                  >
                    <input class="hidden" type="checkbox" value="${data.value}" ${data.isRefined ? 'checked' : ''} />
                    <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                  </div>
                  <span class="ais-facet--label text-t-brand-primary">${data.type}</span>
                </label>
              `
            },
          },
        }
      }

      // Handle legal specialization - only show when credit type is selected
      if (facet.escapedName === 'meta.custom.legal_specialization') {
        return {
          ...params,
          limit: 1000,
          showMoreLimit: 1001,
          cssClasses: {
            root: generalStyles,
          },
          transformItems(items) {
            // Get selected states
            const selectedStates = window.selectedCreditStates || []

            // Create memoization key
            const key = `${items.length}:${selectedStates.join(',')}`

            // Group items by state
            const grouped = {}
            items.forEach((item) => {
              // Skip items without state prefix
              if (!item.label.includes(': ')) return

              // Parse "State: specialization" format
              const [state, specialization] = item.label.split(': ')
              if (!grouped[state]) {
                grouped[state] = []
              }
              grouped[state].push({
                ...item,
                state,
                specialization,
              })
            })

            // Filter by selected states
            const filteredGrouped = selectedStates.length > 0
              ? Object.fromEntries(Object.entries(grouped).filter(([state]) => selectedStates.includes(state)))
              : grouped

            // Flatten back to array with state headers
            const result = []
            Object.keys(filteredGrouped)
              .sort()
              .forEach((state) => {
                // Add state header item
                result.push({
                  label: state,
                  value: `header_${state}`,
                  count: 0,
                  isRefined: false,
                  isHeader: true,
                })
                // Add specialization items for this state
                filteredGrouped[state]
                  .sort((a, b) => a.specialization.localeCompare(b.specialization))
                  .forEach((item) => {
                    result.push(item)
                  })
              })

            return result
          },
          templates: {
            ...params.templates,
            item(data, { html }) {
              // Render state headers differently
              if (data.isHeader) {
                return html`
                  <div class="subheading mb-2 mt-4 text-[14px] font-semibold text-t-brand-primary first:mt-0">
                    ${data.label}
                  </div>
                `
              }

              return html`
                <label class="ml-4 flex cursor-pointer items-center gap-[10px]">
                  <div
                    class="${data.isRefined
                      ? 'bg-t-brand-primary'
                      : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                  >
                    <input class="hidden" type="checkbox" value="${data.value}" ${data.isRefined ? 'checked' : ''} />
                    <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                  </div>
                  <span class="ais-facet--label text-t-brand-primary">${data.specialization}</span>
                </label>
              `
            },
          },
        }
      }

      // Handle topic subtopic
      if (facet.escapedName === 'meta.custom.topic_subtopic') {
        return {
          ...params,
          showMore: true,
          showMoreLimit: 1001,
          cssClasses: {
            root: generalStyles + ' [&_.ais-RefinementList]:hidden',
            showMore: showMoreStyles,
          },
          transformItems(items) {
            const grouped = {}
            const plainItems = []
            const selectedSubtopics = new Set()

            window.topicsWithSelectedSubtopics = new Set()

            items.forEach((item) => {
              if (item.label.includes(': ')) {
                const [topic, subtopic] = item.label.split(': ')

                if (topic === subtopic) {
                  return
                }

                if (!grouped[topic]) {
                  grouped[topic] = []
                }
                grouped[topic].push({
                  ...item,
                  topic,
                  subtopic,
                  isSubtopic: true,
                })

                if (item.isRefined) {
                  selectedSubtopics.add(topic)
                  window.topicsWithSelectedSubtopics.add(topic)
                }
              } else {
                plainItems.push({
                  ...item,
                  isStandaloneTopic: true,
                })
              }
            })

            const result = []

            // Add grouped items with headers
            Object.keys(grouped)
              .sort()
              .forEach((topic) => {
                const hasSelectedSubtopic = selectedSubtopics.has(topic)

                result.push({
                  label: topic,
                  value: `ui_topic_${topic}`,
                  count: 0,
                  isRefined: hasSelectedSubtopic,
                  isTopic: true,
                  hasSubtopics: true,
                })

                grouped[topic]
                  .sort((a, b) => a.subtopic.localeCompare(b.subtopic))
                  .forEach((item) => {
                    result.push(item)
                  })
              })

            const groupedTopicNames = new Set(Object.keys(grouped))
            const filteredPlainItems = plainItems.filter((item) => !groupedTopicNames.has(item.label))

            filteredPlainItems
              .sort((a, b) => a.label.localeCompare(b.label))
              .forEach((item) => {
                result.push(item)
              })

            return result
          },
          templates: {
            ...params.templates,
            item(data, { html }) {
              if (data.isTopic && data.hasSubtopics) {
                return html`
                  <div class="mt-4 mb-2 topic-item first:mt-0">
                    <label class="flex cursor-pointer items-center gap-[10px]">
                      <div
                        class="${data.isRefined
                          ? 'bg-t-brand-primary'
                          : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                      >
                        <input
                          class="hidden ui-topic-checkbox"
                          type="checkbox"
                          data-topic="${data.label}"
                          ${data.isRefined ? 'checked' : ''}
                        />
                        <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                      </div>
                      <span class="ais-facet--label text-t-brand-primary">${data.label}</span>
                    </label>
                  </div>
                `
              }

              if (data.isSubtopic) {
                const thisTopicHasSelection = window.topicsWithSelectedSubtopics?.has(data.topic)
                const parentTopicIsRefined = window.currentRefinedTopics?.has(data.topic) || false
                const shouldShow = data.isRefined || thisTopicHasSelection || parentTopicIsRefined

                const isMatchingSubtopic = data.subtopic === data.topic

                return html`
                  <div class="subtopic-item ml-4 mb-2 ${shouldShow ? '' : 'hidden'}" data-parent-topic="${data.topic}" ${isMatchingSubtopic ? 'data-matching-subtopic="true"' : ''}>
                    <label class="flex cursor-pointer items-center gap-[10px]">
                      <div
                        class="${data.isRefined
                          ? 'bg-t-brand-primary'
                          : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                      >
                        <input
                          class="hidden"
                          type="checkbox"
                          value="${data.value}"
                          ${data.isRefined ? 'checked' : ''}
                        />
                        <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                      </div>
                      <span class="ais-facet--label text-t-brand-primary">${data.subtopic}</span>
                    </label>
                  </div>
                `
              }

              if (data.isStandaloneTopic) {
                return html`
                  <label class="flex cursor-pointer items-center gap-[10px]">
                    <div
                      class="${data.isRefined
                        ? 'bg-t-brand-primary'
                        : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                    >
                      <input class="hidden" type="checkbox" value="${data.value}" ${data.isRefined ? 'checked' : ''} />
                      <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                    </div>
                    <span class="ais-facet--label text-t-brand-primary">${data.label}</span>
                  </label>
                `
              }

              return html`
                <label class="flex cursor-pointer items-center gap-[10px]">
                  <div
                    class="${data.isRefined
                      ? 'bg-t-brand-primary'
                      : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                  >
                    <input class="hidden" type="checkbox" value="${data.value}" ${data.isRefined ? 'checked' : ''} />
                    <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                  </div>
                  <span class="ais-facet--label text-t-brand-primary">${data.label}</span>
                </label>
              `
            },
          },
        }
      }

      if (facet.type === 'slider') {
        if (facet.escapedName == 'price') {
          return {
            ...params,
            pips: false,
            tooltips: {
              format(value) {
                return `$${value.toLocaleString()}`
              },
            },
            cssClasses: {
              root: faceSliderRangeStyles,
            },
          }
        } else if (facet.escapedName == 'meta.course.hours') {
          return {
            ...params,
            pips: false,
            step: 0.1,
            precision: 2,
            cssClasses: {
              root: faceSliderRangeStyles,
            },
          }
        } else if (facet.escapedName === 'meta.course.event-date-timestamp') {
          return {
            ...params,
            pips: false,
            step: 86400,
            precision: 0,
            cssClasses: {
              root: `${faceSliderRangeStyles} !hidden`,
            },
          }
        }
      }

      // Handle named_tags.statespecific - hide all checkboxes, only show toggle
      if (facet.escapedName === 'named_tags.statespecific') {
        return {
          ...params,
          cssClasses: {
            root: generalStyles + ' [&_.ais-RefinementList]:hidden',
          },
          templates: {
            ...params.templates,
            item() {
              return ''
            },
          },
        }
      }

        if (facet.escapedName === 'named_tags.validinsub') {
          return {
            ...params,
            cssClasses: {
              root: generalStyles + ' [&_.ais-RefinementList]:!hidden',
              list: 'hidden',
            },
            templates: {
              ...params.templates,
              item() {
                return ''
              },
            },
          }
        }

      // Handle credit hours
      if (facet.escapedName === 'meta.custom.credit_hours') {
        return {
          ...params,
          limit: 1000,
          showMoreLimit: 1001,
          cssClasses: {
            root: generalStyles,
          },
          transformItems(items) {
            // Get selected states
            const selectedStates = window.selectedCreditStates || []

            // Create memoization key
            const key = `${items.length}:${selectedStates.join(',')}`

            // Group items by state
            const grouped = {}
            items.forEach((item) => {
              // Skip items without state prefix
              if (!item.label.includes(': ')) return

              // Parse "State: classification" format
              const [state, classification] = item.label.split(': ')
              if (!grouped[state]) {
                grouped[state] = []
              }
              grouped[state].push({
                ...item,
                state,
                classification,
              })
            })

            // Filter by selected states
            const filteredGrouped = selectedStates.length > 0
              ? Object.fromEntries(Object.entries(grouped).filter(([state]) => selectedStates.includes(state)))
              : grouped

            // Flatten back to array with state headers
            const result = []
            Object.keys(filteredGrouped)
              .sort()
              .forEach((state) => {
                // Add state header item
                result.push({
                  label: state,
                  value: `header_${state}`,
                  count: 0,
                  isRefined: false,
                  isHeader: true,
                })
                // Add classification items for this state
                filteredGrouped[state]
                  .sort((a, b) => a.classification.localeCompare(b.classification))
                  .forEach((item) => {
                    result.push(item)
                  })
              })

            return result
          },
          templates: {
            ...params.templates,
            item(data, { html }) {
              // Render state headers differently
              if (data.isHeader) {
                return html`
                  <div class="subheading mb-2 mt-4 text-[14px] font-semibold text-t-brand-primary first:mt-0">
                    ${data.label}
                  </div>
                `
              }

              return html`
                <label class="ml-4 flex cursor-pointer items-center gap-[10px]">
                  <div
                    class="${data.isRefined
                      ? 'bg-t-brand-primary'
                      : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                  >
                    <input class="hidden" type="checkbox" value="${data.value}" ${data.isRefined ? 'checked' : ''} />
                    <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                  </div>
                  <span class="ais-facet--label text-t-brand-primary">${data.classification}</span>
                </label>
              `
            },
          }
        }
      }

      return {
        ...params,
        cssClasses: {
          root: generalStyles,
        },
        templates: {
          ...params.templates,
          item(data, { html }) {
            return html`
              <label class="flex cursor-pointer items-center gap-[10px]">
                <div
                  class="${data.isRefined
                    ? 'bg-t-brand-primary'
                    : ''} relative flex size-[25px] items-center justify-center rounded-sm border border-t-brand-primary"
                >
                  <input class="hidden" type="checkbox" value="${data.value}" ${data.isRefined ? 'checked' : ''} />
                  <span class="${data.isRefined ? 'flex items-center text-t-white' : 'hidden'}">
<svg-icon
  src='icon-checkbox-tick'
  class=''

  
    style='--icon-size: 21px;'
  

  
  
></svg-icon>
</span>
                </div>
                <span class="ais-facet--label text-t-brand-primary">${data.label}</span>
              </label>
            `
          },
        },
      }
    })
  }

  const ensureCustomElementsLoaded = () => {
    return new Promise((resolve) => {
      if (customElements.get('dynamic-product-card')) {
        resolve();
        return;
      }

      const checkInterval = setInterval(() => {
        if (customElements.get('dynamic-product-card')) {
          clearInterval(checkInterval);
          resolve();
        }
      }, 50);

      setTimeout(() => {
        clearInterval(checkInterval);
        console.warn('Custom elements not loaded within timeout');
        resolve();
      }, 5000);
    });
  };

  document.addEventListener('algolia.hooks.initialize', async () => {
    await ensureCustomElementsLoaded();
    customizeInstantSearchMainTemplate()
    customizeISStartAddWidgetArray()
    customizeInstantSearchFacetParamsOptions()
    initializeTopicToggle()
    blockHeaderClicks()
  })
</script>

    <script>
  window.Shopify.loadFeatures(
    [
      {
        name: 'consent-tracking-api',
        version: '0.1',
      },
    ],
    function (error) {
      if (!error) {
        try {
          window.Osano.cm.ready('shopify')
        } catch (error) {
          console.error('Osano must be loaded before initializing the Shopify API.')
        }
      }
    }
  )
</script>

  <div id="shopify-block-AbmZNMkJoZTRRcUIvb__10830403595879607806" class="shopify-block shopify-app-block"><style>
  .rio-withoutBranding .FloatingWidget .R-Logo,
  .rio-withoutBranding .CarouselWidget .R-ReviewsioLogo,
  .rio-withoutBranding .ElementsWidget .footer__reviewsLogo-container,
  .rio-withoutBranding .QnaWidget .footer__reviewsLogo-container,
  .rio-withoutBranding .MediaGalleryWidget-prefix .R-ReviewsioLogo,
  .rio-withoutBranding .RatingBarWidget .R-PlatformIcon {
    display: none !important;
  }
</style>
<script>
  window.__REVIEWS_EDITOR__ = false;
  window.__REVIEWS_DEMO_CONFIG__ = {
    store: 'ecommerce-demo-store',
    sku: 'bunch_of_flowers_sku;blue_flowers_sku;white_flowers_sku;pastel_flowers_sku;summer_selection_sku',
    widgetIds: {
      nuggets: 'W10cpKyjl72VtHv6',
      ugc: '7sG9C5qNeKpvhykZ',
      floating: 'GBvqmKV1Zy9H4Mpd',
      ratingBar: 'pxNMXi7FTlODgr8Q',
      survey: 'uLJcD7bFpGMf1Z0C'
    },
    surveyCampaignId: '392'
  };

  
    var reviewsIoStore = 'national-business-institute';
  

  var reviewsIoEnableSyndication = false;

  
    
      
      var reviewsIoLang = 'en';
    
  
</script>

<script defer src="https://cdn.shopify.com/extensions/019cbd7a-6a78-77e3-9a40-3225650f6c06/reviews-co-uk-product-and-merchant-review-collection-53/assets/reviewsio-preview.js"></script>



</div><div id="shopify-block-AUmU0akhDazRra1h5V__9246707248847178381" class="shopify-block shopify-app-block">
  <script src="https://shopify.livechatinc.com/api/v1/script/shop/nbi-sems.myshopify.com/widget.js" defer></script>



</div><div id="shopify-block-AdDRwVHp0N1J4OFFja__13070091535480640111" class="shopify-block shopify-app-block"><input type="hidden" class="aph_bars_app_embed"  value=[{"id":"56561141_704993","type":"bar"},{"id":"97610334_842396","type":"bar"},{"id":"18051745_118995","type":"bar"},{"id":"67805735_589153","type":"bar"},{"id":"46761571_804562","type":"popup"},{"id":"99911622_739753","type":"popup"}] />
<input type="hidden" class="aph_shop_plan"  value=8118 />

<input type="hidden" class="aph_product_collection"  value="" />

</div><div id="shopify-block-ATzdJWHhyNmRuTEpFd__10312807297210203588" class="shopify-block shopify-app-block">


</div><div id="shopify-block-AQVRUbEQvdXlid0dWQ__11735689235857492391" class="shopify-block shopify-app-block">

<style>
  :root{--aa-search-input-height:44px;--aa-input-icon-size:20px;--aa-base-unit:16;--aa-spacing-factor:1;--aa-spacing:calc(var(--aa-base-unit)*var(--aa-spacing-factor)*1px);--aa-spacing-half:calc(var(--aa-spacing)/2);--aa-panel-max-height:650px;--aa-base-z-index:9999;--aa-font-size:calc(var(--aa-base-unit)*1px);--aa-font-family:inherit;--aa-font-weight-medium:500;--aa-font-weight-semibold:600;--aa-font-weight-bold:700;--aa-icon-size:20px;--aa-icon-stroke-width:1.6;--aa-icon-color-rgb:119,119,163;--aa-icon-color-alpha:1;--aa-action-icon-size:20px;--aa-text-color-rgb:38,38,39;--aa-text-color-alpha:1;--aa-primary-color-rgb:62,52,211;--aa-primary-color-alpha:0.2;--aa-muted-color-rgb:128,126,163;--aa-muted-color-alpha:0.6;--aa-highlight-color-rgb:62,52,211;--aa-panel-border-color-rgb:128,126,163;--aa-panel-border-color-alpha:0.3;--aa-input-border-color-rgb:128,126,163;--aa-input-border-color-alpha:0.8;--aa-background-color-rgb:255,255,255;--aa-background-color-alpha:1;--aa-input-background-color-rgb:255,255,255;--aa-input-background-color-alpha:1;--aa-selected-color-rgb:179,173,214;--aa-selected-color-alpha:0.205;--aa-description-highlight-background-color-rgb:245,223,77;--aa-description-highlight-background-color-alpha:0.5;--aa-detached-media-query:(max-width:680px);--aa-detached-modal-media-query:(min-width:680px);--aa-detached-modal-max-width:680px;--aa-detached-modal-max-height:500px;--aa-overlay-color-rgb:115,114,129;--aa-overlay-color-alpha:0.4;--aa-panel-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);--aa-scrollbar-width:13px;--aa-scrollbar-track-background-color-rgb:234,234,234;--aa-scrollbar-track-background-color-alpha:1;--aa-scrollbar-thumb-background-color-rgb:var(--aa-background-color-rgb);--aa-scrollbar-thumb-background-color-alpha:1}@media (hover:none) and (pointer:coarse){:root{--aa-spacing-factor:1.2;--aa-action-icon-size:22px}}body.dark,body[data-theme=dark]{--aa-text-color-rgb:183,192,199;--aa-primary-color-rgb:146,138,255;--aa-muted-color-rgb:146,138,255;--aa-input-background-color-rgb:0,3,9;--aa-background-color-rgb:21,24,42;--aa-selected-color-rgb:146,138,255;--aa-selected-color-alpha:0.25;--aa-description-highlight-background-color-rgb:0 255 255;--aa-description-highlight-background-color-alpha:0.25;--aa-icon-color-rgb:119,119,163;--aa-panel-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--aa-scrollbar-track-background-color-rgb:44,46,64;--aa-scrollbar-thumb-background-color-rgb:var(--aa-background-color-rgb)}.aa-Autocomplete *,.aa-DetachedFormContainer *,.aa-Panel *{box-sizing:border-box}.aa-Autocomplete,.aa-DetachedFormContainer,.aa-Panel{color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-family:var(--aa-font-family);font-size:var(--aa-font-size);font-weight:400;line-height:1em;margin:0;padding:0;text-align:left}.aa-MainContainer{min-width:650px}.aa-Form{align-items:center;background-color:rgba(var(--aa-input-background-color-rgb),var(--aa-input-background-color-alpha));border:1px solid rgba(var(--aa-input-border-color-rgb),var(--aa-input-border-color-alpha));border-radius:3px;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Form:focus-within{border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:medium none currentColor}.aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;height:var(--aa-search-input-height);order:1}.aa-Label,.aa-LoadingIndicator{cursor:auto;flex-shrink:0;height:100%;padding:0;text-align:left}.aa-Label svg,.aa-LoadingIndicator svg{color:rgba(var(--aa-primary-color-rgb),1);height:auto;max-height:var(--aa-input-icon-size);stroke-width:var(--aa-icon-stroke-width);width:var(--aa-input-icon-size)}.aa-LoadingIndicator,.aa-SubmitButton{height:100%;padding-left:calc(var(--aa-spacing)*.75 - 1px);padding-right:var(--aa-spacing-half);width:calc(var(--aa-spacing)*1.75 + var(--aa-icon-size) - 1px)}@media (hover:none) and (pointer:coarse){.aa-LoadingIndicator,.aa-SubmitButton{padding-left:calc(var(--aa-spacing-half)/2 - 1px);width:calc(var(--aa-icon-size) + var(--aa-spacing)*1.25 - 1px)}}.aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-LoadingIndicator[hidden]{display:none}.aa-InputWrapper{order:3;position:relative;width:100%}.aa-Input{appearance:none;background:none;border:0;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font:inherit;height:var(--aa-search-input-height);padding:0;width:100%}.aa-Input::placeholder{color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));opacity:1}.aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Input::-webkit-search-cancel-button,.aa-Input::-webkit-search-decoration,.aa-Input::-webkit-search-results-button,.aa-Input::-webkit-search-results-decoration{appearance:none}.aa-InputWrapperSuffix{align-items:center;display:flex;height:var(--aa-search-input-height);order:4}.aa-ClearButton{align-items:center;background:none;border:0;color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;height:100%;margin:0;padding:0 calc(var(--aa-spacing)*.83333 - .5px)}@media (hover:none) and (pointer:coarse){.aa-ClearButton{padding:0 calc(var(--aa-spacing)*.66667 - .5px)}}.aa-ClearButton:focus,.aa-ClearButton:hover{color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha))}.aa-ClearButton[hidden]{display:none}.aa-ClearButton svg{stroke-width:var(--aa-icon-stroke-width);width:var(--aa-icon-size)}.aa-Panel{background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));border-radius:calc(var(--aa-spacing)/4);box-shadow:var(--aa-panel-shadow);display:block;margin:16px 0 0;overflow:hidden;position:absolute;transition:opacity .2s ease-in,filter .2s ease-in;z-index:1200}@media screen and (prefers-reduced-motion){.aa-Panel{transition:none}}.aa-Panel button{appearance:none;background:none;border:0;margin:0;padding:0}.aa-PanelLayout{height:100%;margin:0;max-height:var(--aa-panel-max-height);overflow-y:auto;padding:0;position:relative;text-align:left}.aa-PanelLayoutColumns--twoGolden{display:grid;grid-template-columns:39.2% auto;overflow:hidden;padding:0}.aa-PanelLayoutColumns--two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden;padding:0}.aa-PanelLayoutColumns--three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;padding:0}.aa-Panel--stalled .aa-Source{filter:grayscale(1);opacity:.8}.aa-Panel--scrollable{margin:0;max-height:var(--aa-panel-max-height);overflow-x:hidden;overflow-y:auto;padding:var(--aa-spacing-half);scrollbar-color:rgba(var(--aa-scrollbar-thumb-background-color-rgb),var(--aa-scrollbar-thumb-background-color-alpha)) rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha));scrollbar-width:thin}.aa-Panel--scrollable::-webkit-scrollbar{width:var(--aa-scrollbar-width)}.aa-Panel--scrollable::-webkit-scrollbar-track{background-color:rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha))}.aa-Panel--scrollable::-webkit-scrollbar-thumb{background-color:rgba(var(--aa-scrollbar-thumb-background-color-rgb),var(--aa-scrollbar-thumb-background-color-alpha));border-color:rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha));border-radius:9999px;border-style:solid;border-width:3px 2px 3px 3px}.aa-Source{margin:0;padding:0;position:relative;width:100%}.aa-Source:empty{display:none}.aa-SourceNoResults{font-size:1em;margin:0;padding:var(--aa-spacing)}.aa-List{list-style:none;margin:0}.aa-List,.aa-SourceHeader{padding:0;position:relative}.aa-SourceHeader{margin:var(--aa-spacing-half) .5em var(--aa-spacing-half) 0}.aa-SourceHeader:empty{display:none}.aa-SourceHeaderTitle{background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));color:rgba(var(--aa-primary-color-rgb),1);display:inline-block;font-size:.9em;font-weight:var(--aa-font-weight-semibold);margin:0;padding:0 var(--aa-spacing-half) 0 0;position:relative;z-index:var(--aa-base-z-index)}.aa-SourceHeaderLine{border-bottom:1px solid rgba(var(--aa-primary-color-rgb),1);display:block!important;height:2px;left:0;margin:0;opacity:.3;padding:0;position:absolute;right:0;top:var(--aa-spacing-half);z-index:calc(var(--aa-base-z-index) - 1)}.aa-SourceFooterSeeAll{background:linear-gradient(180deg,rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha)),rgba(128,126,163,.14));border:1px solid rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));border-radius:5px;box-shadow:inset 0 0 2px #fff,0 2px 2px -1px rgba(76,69,88,.15);color:inherit;font-size:.95em;font-weight:var(--aa-font-weight-medium);padding:.475em 1em .6em;text-decoration:none}.aa-SourceFooterSeeAll:focus,.aa-SourceFooterSeeAll:hover{border:1px solid rgba(var(--aa-primary-color-rgb),1);color:rgba(var(--aa-primary-color-rgb),1)}.aa-Item{align-items:center;border-radius:3px;cursor:pointer;display:grid;min-height:calc(var(--aa-spacing)*2.5);padding:calc(var(--aa-spacing-half)/2)}.aa-Item[aria-selected=true]{background-color:rgba(var(--aa-selected-color-rgb),var(--aa-selected-color-alpha))}.aa-Item[aria-selected=true] .aa-ActiveOnly,.aa-Item[aria-selected=true] .aa-ItemActionButton{visibility:visible}.aa-ItemIcon{align-items:center;background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));border-radius:3px;box-shadow:inset 0 0 0 1px rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));color:rgba(var(--aa-icon-color-rgb),var(--aa-icon-color-alpha));display:flex;flex-shrink:0;font-size:.7em;height:calc(var(--aa-icon-size) + var(--aa-spacing-half));justify-content:center;overflow:hidden;stroke-width:var(--aa-icon-stroke-width);text-align:center;width:calc(var(--aa-icon-size) + var(--aa-spacing-half))}.aa-ItemIcon img{height:auto;max-height:calc(var(--aa-icon-size) + var(--aa-spacing-half) - 8px);max-width:calc(var(--aa-icon-size) + var(--aa-spacing-half) - 8px);width:auto}.aa-ItemIcon svg{height:var(--aa-icon-size);width:var(--aa-icon-size)}.aa-ItemIcon--alignTop{align-self:flex-start}.aa-ItemIcon--noBorder{background:none;box-shadow:none}.aa-ItemIcon--picture{height:96px;width:96px}.aa-ItemIcon--picture img{max-height:100%;max-width:100%;padding:var(--aa-spacing-half)}.aa-ItemContent{align-items:center;cursor:pointer;display:grid;gap:var(--aa-spacing-half);grid-auto-flow:column;line-height:1.25em;overflow:hidden}.aa-ItemContent:empty{display:none}.aa-ItemContent mark{background:none;color:rgba(var(--aa-highlight-color-rgb),1);font-style:normal;font-weight:var(--aa-font-weight-bold)}.aa-ItemContent--dual{display:flex;flex-direction:column;justify-content:space-between;text-align:left}.aa-ItemContent--dual .aa-ItemContentSubtitle,.aa-ItemContent--dual .aa-ItemContentTitle{display:block}.aa-ItemContent--indented{padding-left:calc(var(--aa-icon-size) + var(--aa-spacing))}.aa-ItemContentBody{display:grid;gap:calc(var(--aa-spacing-half)/2)}.aa-ItemContentTitle{display:inline-block;margin:0 .5em 0 0;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.aa-ItemContentSubtitle{font-size:.92em}.aa-ItemContentSubtitleIcon:before{border-color:rgba(var(--aa-muted-color-rgb),.64);border-style:solid;content:"";display:inline-block;left:1px;position:relative;top:-3px}.aa-ItemContentSubtitle--inline .aa-ItemContentSubtitleIcon:before{border-width:0 0 1.5px;margin-left:var(--aa-spacing-half);margin-right:calc(var(--aa-spacing-half)/2);width:calc(var(--aa-spacing-half) + 2px)}.aa-ItemContentSubtitle--standalone{align-items:center;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));display:grid;gap:var(--aa-spacing-half);grid-auto-flow:column;justify-content:start}.aa-ItemContentSubtitle--standalone .aa-ItemContentSubtitleIcon:before{border-radius:0 0 0 3px;border-width:0 0 1.5px 1.5px;height:var(--aa-spacing-half);width:var(--aa-spacing-half)}.aa-ItemContentSubtitleCategory{color:rgba(var(--aa-muted-color-rgb),1);font-weight:500}.aa-ItemContentDescription{color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-size:.85em;max-width:100%;overflow-x:hidden;text-overflow:ellipsis}.aa-ItemContentDescription:empty{display:none}.aa-ItemContentDescription mark{background:rgba(var(--aa-description-highlight-background-color-rgb),var(--aa-description-highlight-background-color-alpha));color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-style:normal;font-weight:var(--aa-font-weight-medium)}.aa-ItemContentDash{color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));display:none;opacity:.4}.aa-ItemContentTag{background-color:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha));border-radius:3px;margin:0 .4em 0 0;padding:.08em .3em}.aa-ItemLink,.aa-ItemWrapper{align-items:center;color:inherit;display:grid;gap:calc(var(--aa-spacing-half)/2);grid-auto-flow:column;justify-content:space-between;width:100%}.aa-ItemLink{color:inherit;text-decoration:none}.aa-ItemActions{display:grid;grid-auto-flow:column;height:100%;justify-self:end;margin:0 calc(var(--aa-spacing)/-3);padding:0 2px 0 0}.aa-ItemActionButton{align-items:center;background:none;border:0;color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;flex-shrink:0;padding:0}.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha))}@media (hover:none) and (pointer:coarse){.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:inherit}}.aa-ItemActionButton svg{color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));margin:0;margin:calc(var(--aa-spacing)/3);stroke-width:var(--aa-icon-stroke-width);width:var(--aa-action-icon-size)}.aa-ActiveOnly{visibility:hidden}.aa-PanelHeader{align-items:center;background:rgba(var(--aa-primary-color-rgb),1);color:#fff;display:grid;height:var(--aa-modal-header-height);margin:0;padding:var(--aa-spacing-half) var(--aa-spacing);position:relative}.aa-PanelHeader:after{background-image:linear-gradient(rgba(var(--aa-background-color-rgb),1),rgba(var(--aa-background-color-rgb),0));bottom:calc(var(--aa-spacing-half)*-1);content:"";height:var(--aa-spacing-half);left:0;pointer-events:none;position:absolute;right:0;z-index:var(--aa-base-z-index)}.aa-PanelFooter{background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));box-shadow:inset 0 1px 0 rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));display:flex;justify-content:space-between;margin:0;padding:var(--aa-spacing);position:relative;z-index:var(--aa-base-z-index)}.aa-PanelFooter:after{background-image:linear-gradient(rgba(var(--aa-background-color-rgb),0),rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha)));content:"";height:var(--aa-spacing);left:0;opacity:.12;pointer-events:none;position:absolute;right:0;top:calc(var(--aa-spacing)*-1);z-index:calc(var(--aa-base-z-index) - 1)}.aa-DetachedContainer{background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));bottom:0;box-shadow:var(--aa-panel-shadow);display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:var(--aa-base-z-index)}.aa-DetachedContainer:after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{border-bottom:1px solid rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:var(--aa-spacing-half)}.aa-DetachedCancelButton{background:none;border:0;border-radius:3px;color:inherit;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));cursor:pointer;font:inherit;margin:0 0 0 var(--aa-spacing-half);padding:0 var(--aa-spacing-half)}.aa-DetachedCancelButton:focus,.aa-DetachedCancelButton:hover{box-shadow:inset 0 0 0 1px rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha))}.aa-DetachedContainer--modal{border-radius:6px;bottom:inherit;height:auto;margin:0 auto;max-width:var(--aa-detached-modal-max-width);position:absolute;top:3%}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-DetachedSearchButton{align-items:center;background-color:rgba(var(--aa-input-background-color-rgb),var(--aa-input-background-color-alpha));border:1px solid rgba(var(--aa-input-border-color-rgb),var(--aa-input-border-color-alpha));border-radius:3px;color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;font:inherit;font-family:var(--aa-font-family);font-size:var(--aa-font-size);height:var(--aa-search-input-height);margin:0;padding:0 calc(var(--aa-search-input-height)/8);position:relative;text-align:left;width:100%}.aa-DetachedSearchButton:focus{border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 3px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:medium none currentColor}.aa-DetachedSearchButtonIcon{align-items:center;color:rgba(var(--aa-primary-color-rgb),1);cursor:auto;display:flex;height:100%;justify-content:center;width:calc(var(--aa-icon-size) + var(--aa-spacing))}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(var(--aa-overlay-color-rgb),var(--aa-overlay-color-alpha));height:100vh;left:0;margin:0;padding:0;position:fixed;right:0;top:0;z-index:calc(var(--aa-base-z-index) - 1)}.aa-GradientBottom,.aa-GradientTop{height:var(--aa-spacing-half);left:0;pointer-events:none;position:absolute;right:0;z-index:var(--aa-base-z-index)}.aa-GradientTop{background-image:linear-gradient(rgba(var(--aa-background-color-rgb),1),rgba(var(--aa-background-color-rgb),0));top:0}.aa-GradientBottom{background-image:linear-gradient(rgba(var(--aa-background-color-rgb),0),rgba(var(--aa-background-color-rgb),1));border-bottom-left-radius:calc(var(--aa-spacing)/4);border-bottom-right-radius:calc(var(--aa-spacing)/4);bottom:0}@media (hover:none) and (pointer:coarse){.aa-DesktopOnly{display:none}}@media (hover:hover){.aa-TouchOnly{display:none}}.aa-PanelSections{column-gap:var(--aa-spacing);display:flex}.aa-PanelSection{display:flex;flex-direction:column}.aa-PanelSection--left{width:30%}.aa-PanelSection--right{width:70%}.aa-ItemPicture{border-radius:3px;height:100%;overflow:hidden;width:100%}.aa-ItemPicture img{height:auto;max-height:150px;object-fit:scale-down;opacity:0;transition:opacity .2s ease-out;width:100%}.aa-ItemPicture--loaded img{opacity:1}.aa-NoResultsHeader{font-size:1.15em;line-height:1.3;margin-bottom:var(--aa-spacing)}.aa-NoResultsContent{font-size:.9em}.aa-NoResultsLink{color:rgba(var(--aa-primary-color-rgb),1);font-size:.8em;text-decoration:underline}.aa-Source[data-autocomplete-source-id=products] .aa-List{display:grid;grid-template-columns:repeat(3,1fr)}.aa-Source[data-autocomplete-source-id=products] .aa-Item{padding:var(--aa-spacing-half)}.aa-Source[data-autocomplete-source-id=products] .aa-ItemLink{height:100%;justify-content:stretch}.aa-Source[data-autocomplete-source-id=products] .aa-ItemContent{display:flex;flex-direction:column;height:100%}.aa-Source[data-autocomplete-source-id=products] .aa-ItemContent mark{color:rgb(var(--aa-highlight-color-rgb))}.aa-Source[data-autocomplete-source-id=products] .aa-ItemContentBody{display:flex;flex-direction:column;gap:var(--aa-spacing-half);justify-content:space-between;width:100%}.aa-Source[data-autocomplete-source-id=products] .aa-ItemContentBrand{color:rgb(var(--aa-muted-color-rgb));font-size:.7em;overflow:hidden;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.aa-Source[data-autocomplete-source-id=products] .aa-ItemContentBrand mark{font-weight:400}.aa-Source[data-autocomplete-source-id=products] .aa-ItemContentTitleWrapper{height:calc(var(--aa-spacing)*2.5)}.aa-Source[data-autocomplete-source-id=products] .aa-ItemContentTitle{display:-webkit-box;font-size:.9em;margin:0;-webkit-box-orient:vertical;-webkit-line-clamp:2;white-space:normal}.aa-Source[data-autocomplete-source-id=products] .aa-ItemContentPrice{column-gap:var(--aa-spacing-half);display:flex}.aa-Source[data-autocomplete-source-id=products] .aa-ItemContentPriceCurrent{font-weight:700}.aa-Source[data-autocomplete-source-id=products] .aa-ItemContentPriceDiscounted{color:rgb(var(--aa-muted-color-rgb));font-size:.9em;text-decoration:line-through}.aa-footer{text-align:center}.aa-SeeAllBtn,.aa-SeeAllLink{display:inline-block;font-size:.9em;font-weight:600;margin:var(--aa-spacing) auto 0 auto;text-decoration:none}.aa-SeeAllBtn{background-color:rgba(var(--aa-primary-color-rgb),.8);border-radius:calc(var(--aa-spacing-half)/2);color:#fff;padding:calc(var(--aa-spacing-half)*1.5) var(--aa-spacing);transition:background .2s ease-out}.aa-SeeAllLink{color:rgb(var(--aa-primary-color-rgb));margin-bottom:var(--aa-spacing-half);transition:opacity .2s ease-out}.aa-SeeAllBtn:hover{background-color:rgba(var(--aa-primary-color-rgb),1)}.aa-SeeAllLink:hover{opacity:.8}.aa-SeeAllBtn:not([disabled]):hover{color:#fff}@media screen and (max-width:680px){.aa-MainContainer{min-width:inherit}.aa-PanelSections{flex-direction:column;row-gap:var(--aa-spacing)}.aa-PanelSection--left,.aa-PanelSection--right{width:100%}.aa-Source[data-autocomplete-source-id=products] .aa-List{display:flex;flex-wrap:wrap;gap:var(--aa-spacing-half)}.aa-Source[data-autocomplete-source-id=products] .aa-Item{width:calc(50% - var(--aa-spacing-half)/2)}}
</style>

<div class="algolia-config-money-format" style="display: none;">${{amount}}</div>

<!-- BEGIN app snippet: algolia_config --><script>
  window.algoliaShopify = window.algoliaShopify || {};
  
    window.algoliaShopify.config = window.algoliaShopify.config || {};
    window.algoliaShopify.config = {"app_id":"9F1EFTW2FW","search_api_key":"700590744e574b95e8d7519864347a27","index_prefix":"nbi_shopify_","index_products":true,"index_collections":true,"index_articles":true,"index_pages":true,"autocomplete_see_all":false,"colors":{"main":"#000","secondary":"#888","muted":"#807EA3","highlight":"#000"},"autocomplete_enabled":true,"autocomplete_debug":false,"input_selector":"form[action=\"\/search\"]","products_autocomplete_hits_per_page":5,"collections_autocomplete_hits_per_page":2,"articles_autocomplete_hits_per_page":2,"pages_autocomplete_hits_per_page":2,"instant_search_enabled":true,"instant_search_enabled_on_collection":true,"results_selector":"#MainContent","products_full_results_hits_per_page":12,"collections_full_results_hits_per_page":20,"show_products":true,"analytics_enabled":true,"usertoken_with_cookies":"enabled","collection_id_indexing":true,"collection_id_query_rules":false,"collection_search_feature_enabled":true,"collection_css_selector":"#MainContent","stock_policy":"allow","billed_by_shopify":false,"billing_paused_at":null,"billing_paused_reason":null,"autocomplete_query_suggestions":true,"query_suggestions_index_name":"nbi_shopify_products_query_suggestions","suggestions_autocomplete_hits_per_page":7,"locations_inventory_enabled":false,"markets_indexing_enabled":false,"markets_mapping":[],"markets_available":[],"markets_webhooks":{"product_incremental_sync":"","product_feeds":[]},"dynamic_selector":false,"store_currency":"USD","restart_index_enabled":false,"app_block_analytics_disabled":true,"stream_translate_option_names_enabled":false,"app_block_translated_option_names_enabled":false,"default_facet_param_limit":10,"app_blocks_dynamic_widgets_beta_enabled":false,"app_block_inv_avail_replace_can_order":false,"app_block_version":"92521fc3cb"};
  
  
    window.algoliaShopify.config.sort_orders = [{"key":"price_ratio","title":"Price ratio","asc":{"active":false,"title":"Highest discount first"}},{"key":"vendor","title":"Vendor","desc":{"active":false,"title":"Vendor Z-A"}},{"key":"vendor","title":"Vendor","asc":{"active":false,"title":"Vendor"}},{"key":"inventory_quantity","title":"Inventory quantity","desc":{"active":false,"title":"Most available"}},{"key":"grams","title":"Weight","desc":{"active":false,"title":"Heaviest first"}},{"key":"grams","title":"Weight","asc":{"active":false,"title":"Lightest first"}},{"key":"title","title":"Name","desc":{"active":false,"title":"Name Z-A"}},{"key":"price","title":"Price","desc":{"active":false,"title":"Most expensive first"}},{"key":"published_at","title":"Publication date","asc":{"active":false,"title":"Oldest first"}},{"key":"price","title":"Price","asc":{"active":false,"title":"Cheapest first"}},{"key":"title","title":"Name","asc":{"active":false,"title":"Name"}},{"key":"published_at","title":"Publication date","desc":{"active":false,"title":"Newest"}},{"key":"recently_ordered_count","title":"Popularity","desc":{"active":false,"title":"Most popular"}}];
  
  
    window.algoliaShopify.config.facets = [{"enabled":false,"name":"price","title":"Price","type":"slider","available_types":["slider"],"forgettable":null,"searchable":false,"refined_first":false,"removeAble":null,"limit":null},{"enabled":false,"name":"price_range","title":"Price range","type":"disjunctive","available_types":["disjunctive"],"forgettable":null,"searchable":false,"refined_first":false,"removeAble":null,"limit":null},{"enabled":false,"name":"vendor","title":"Vendor","type":"conjunctive","available_types":["menu","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":false,"removeAble":null,"limit":null},{"enabled":false,"name":"product_type","title":"Type","type":"conjunctive","available_types":["menu","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":false,"removeAble":null,"limit":null},{"enabled":false,"name":"tags","title":"Tags","type":"conjunctive","available_types":["menu","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.cle_state","title":"CLE State","type":"conjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credit_type","title":"Credit Type","type":"conjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"named_tags.format","title":"Format","type":"disjunctive","available_types":["conjunctive","disjunctive","slider"],"forgettable":true,"searchable":true,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.topic_subtopic","title":"Topic","type":"disjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.course.duration_group","title":"Duration","type":"disjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.course.level","title":"Course Level","type":"disjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"named_tags.statespecific","title":"State-Specific Content Only","type":"conjunctive","available_types":["conjunctive","disjunctive","slider","hierarchical"],"forgettable":true,"searchable":true,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.legal_specialization","title":"Legal Specialization","type":"disjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credits_paralegal","title":"Paralegal Credit","type":"conjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credits_other","title":"Other Credits","type":"conjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.course.event-date-timestamp","title":"Event Date","type":"slider","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":false,"name":"meta.course.event-date","title":"Event Date Display","type":"conjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":false,"name":"meta.course.hours","title":"Duration (Hours)","type":"slider","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credit_type_hours","title":"Credit Type Hours","type":"hidden","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credit_classification","title":"Credit Classification","type":"hidden","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credit_hours","title":"Credit Hours","type":"hidden","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"named_tags.badge-grey","title":"Badge-grey","type":"hidden","available_types":["conjunctive","disjunctive","slider","hierarchical"],"forgettable":true,"searchable":true,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.event_classification","title":"Event Classification","type":"hidden","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"named_tags.topic","title":"Topic","type":"hidden","available_types":["conjunctive","disjunctive","slider","hierarchical"],"forgettable":true,"searchable":true,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"named_tags.subtopic","title":"Subtopic","type":"hidden","available_types":["conjunctive","disjunctive","slider","hierarchical"],"forgettable":true,"searchable":true,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"collections","title":"collections","type":"hidden","available_types":["slider","conjunctive","disjunctive","menu","hierarchical"],"forgettable":null,"searchable":true,"refined_first":false,"removeAble":true,"limit":null}];
  

  

  
  
    window.algoliaShopify.config.collection_sort_orders = null
   

  
  
    window.algoliaShopify.config.collection_facets = null
  
</script>
<!-- END app snippet -->
<!-- BEGIN app snippet: algolia_config_markets --><script>
  window.algoliaShopify = window.algoliaShopify || {};
  window.algoliaShopify.shopify = window.algoliaShopify.shopify || {}
  window.algoliaShopify.shopify.routes = window.algoliaShopify.shopify.routes || {};
  
  window.algoliaShopify.shopify.routes.search_url = window.algoliaShopify.shopify.routes.search_url || "/search";
  window.algoliaShopify.shopify.market = window.algoliaShopify.shopify.market || {
    "id": 42015555902,
    "language": {"shop_locale":{"locale":"en","enabled":true,"primary":true,"published":true}},
    "currency": null,
    "multicurrency_default_format": "USD:${{amount}}",
  }
  
  window.algoliaShopify.shopify.market.translations = window.algoliaShopify.shopify.market.translations || {
    facets: [{"enabled":false,"name":"price","title":"Price","type":"slider","available_types":["slider"],"forgettable":null,"searchable":false,"refined_first":false,"removeAble":null,"limit":null},{"enabled":false,"name":"price_range","title":"Price range","type":"disjunctive","available_types":["disjunctive"],"forgettable":null,"searchable":false,"refined_first":false,"removeAble":null,"limit":null},{"enabled":false,"name":"vendor","title":"Vendor","type":"conjunctive","available_types":["menu","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":false,"removeAble":null,"limit":null},{"enabled":false,"name":"product_type","title":"Type","type":"conjunctive","available_types":["menu","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":false,"removeAble":null,"limit":null},{"enabled":false,"name":"tags","title":"Tags","type":"conjunctive","available_types":["menu","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.cle_state","title":"CLE State","type":"conjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credit_type","title":"Credit Type","type":"conjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"named_tags.format","title":"Format","type":"disjunctive","available_types":["conjunctive","disjunctive","slider"],"forgettable":true,"searchable":true,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.topic_subtopic","title":"Topic","type":"disjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.course.duration_group","title":"Duration","type":"disjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.course.level","title":"Course Level","type":"disjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"named_tags.statespecific","title":"State-Specific Content Only","type":"conjunctive","available_types":["conjunctive","disjunctive","slider","hierarchical"],"forgettable":true,"searchable":true,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.legal_specialization","title":"Legal Specialization","type":"disjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credits_paralegal","title":"Paralegal Credit","type":"conjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credits_other","title":"Other Credits","type":"conjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.course.event-date-timestamp","title":"Event Date","type":"slider","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":false,"name":"meta.course.event-date","title":"Event Date Display","type":"conjunctive","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":false,"name":"meta.course.hours","title":"Duration (Hours)","type":"slider","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credit_type_hours","title":"Credit Type Hours","type":"hidden","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credit_classification","title":"Credit Classification","type":"hidden","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.credit_hours","title":"Credit Hours","type":"hidden","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"named_tags.badge-grey","title":"Badge-grey","type":"hidden","available_types":["conjunctive","disjunctive","slider","hierarchical"],"forgettable":true,"searchable":true,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"meta.custom.event_classification","title":"Event Classification","type":"hidden","available_types":["menu","slider","conjunctive","disjunctive"],"forgettable":null,"searchable":false,"refined_first":true,"removeAble":null,"limit":null},{"enabled":true,"name":"named_tags.topic","title":"Topic","type":"hidden","available_types":["conjunctive","disjunctive","slider","hierarchical"],"forgettable":true,"searchable":true,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"named_tags.subtopic","title":"Subtopic","type":"hidden","available_types":["conjunctive","disjunctive","slider","hierarchical"],"forgettable":true,"searchable":true,"refined_first":false,"removeAble":null,"limit":null},{"enabled":true,"name":"collections","title":"collections","type":"hidden","available_types":["slider","conjunctive","disjunctive","menu","hierarchical"],"forgettable":null,"searchable":true,"refined_first":false,"removeAble":true,"limit":null}],
    sort_orders: [{"key":"price_ratio","title":"Price ratio","asc":{"active":false,"title":"Highest discount first"}},{"key":"vendor","title":"Vendor","desc":{"active":false,"title":"Vendor Z-A"}},{"key":"vendor","title":"Vendor","asc":{"active":false,"title":"Vendor"}},{"key":"inventory_quantity","title":"Inventory quantity","desc":{"active":false,"title":"Most available"}},{"key":"grams","title":"Weight","desc":{"active":false,"title":"Heaviest first"}},{"key":"grams","title":"Weight","asc":{"active":false,"title":"Lightest first"}},{"key":"title","title":"Name","desc":{"active":false,"title":"Name Z-A"}},{"key":"price","title":"Price","desc":{"active":false,"title":"Most expensive first"}},{"key":"published_at","title":"Publication date","asc":{"active":false,"title":"Oldest first"}},{"key":"price","title":"Price","asc":{"active":false,"title":"Cheapest first"}},{"key":"title","title":"Name","asc":{"active":false,"title":"Name"}},{"key":"published_at","title":"Publication date","desc":{"active":false,"title":"Newest"}},{"key":"recently_ordered_count","title":"Popularity","desc":{"active":false,"title":"Most popular"}}],
    addToCart: "Add to cart",
    allProducts: "See all products ",
    articles: "Articles",
    by: "by",
    changeInput: "changing your input",
    clearAll: "Clear all",
    clearFilters: "clearing the filters",
    collections: "Collections",
    in: "in",
    matching: "matching",
    noResultFor: "No results for ",
    noResultFound: "No result found",
    oneResultFound: "1 result found",
    or: "or",
    outOf: "out of",
    outOfStock: "Out of stock",
    pages: "Pages",
    products: "Products",
    relevance: "Relevance",
    resultsFound: "results found",
    search: "Current search",
    searchForProduct: "Search for products",
    searchTitle: "Search result",
    selectedFilter: "Selected filters",
    showLess: "Show less",
    showMore: "Show more",
    showFilters: "Show filters",
    sortBy: "Sorted by",
    suggestions: "Suggestions",
    taxFree: "Tax free",
    try: "Try",
  }
</script>
<!-- END app snippet -->


</div><div id="shopify-block-Ad0FhOHIyREJodGlQb__18134635481486484319" class="shopify-block shopify-app-block">















<style>
  @media (max-width: 768px) {
    .recommenda-quiz-frame {
      width: 80vw !important;
    }
  }
</style>

<div class="recommenda-quiz-frame" style="position: relative; padding: 0; width: 80vw;height: 65dvh" data-hide-after-close="false">
  <div class="recommenda-close" >
    <span style="color: #838383;">&times;</span>
  </div>
  <iframe
    src="https://quiz-builder-24wuu.ondigitalocean.app/quiz/nbi-sems.myshopify.com/0?cid=&t=popup"
    allow="clipboard-write"
    width="100%"
    height="100%"
    frameborder="0"></iframe>
</div>

<script>
  const pagePath = "/";
  const rawShowInPages = ``;

  const showInPages = rawShowInPages.split(/\r?\n/).map(p => p.trim()).filter(p => p);

  const matchesPath = (pathPattern) => {
    if (pathPattern.endsWith('/*')) {
      const base = pathPattern.slice(0, -1);
      return pagePath.startsWith(base);
    } else {
      return pathPattern === pagePath;
    }
  };

  const quizId = 0;

  if (
    +quizId > 0 &&
    !window.location.pathname.includes('/password') &&
    (showInPages.length === 0 || showInPages.some(matchesPath))
  ) {
    const hideAfterOne = false;
    const hideAfterClose = false;
    const shownFlag = localStorage.getItem('recommendaPopupShown');

    if ((hideAfterOne || hideAfterClose) && shownFlag === null) {
      localStorage.setItem('recommendaPopupShown', 'false');
    }

    const isHidden = localStorage.getItem('recommendaPopupShown') === 'true';
    if (!((hideAfterOne || hideAfterClose) && isHidden)) {
      const delay = Math.max(500, 1000);
      setTimeout(() => showPopupFrame(), delay);
    }
  }
</script>

</div><!-- Failed to render app block "5918445685253060206": app block path "shopify://apps/bundler/blocks/bundler-script-append/7a6ae1b8-3b16-449b-8429-8bb89a62c664" does not exist --><div id="shopify-block-AY2E2bmk5c2dKUnB5a__5733569959556273306" class="shopify-block shopify-app-block">






<div class="recommenda-quiz-link" style="width: 100vw; height: 100dvh" data-quiz-width="80" data-quiz-height="80" data-restart-on-button-click="false">
  <div class="recommenda-close" >
    <span style="color: #838383;">&times;</span>
  </div>
  <input type="hidden" class="recommenda-quiz-cid-input" value="">
  <iframe
    allow="clipboard-write"
    width="100%"
    height="100%"
    frameborder="0"></iframe>
</div>


</div><div id="shopify-block-AQm9TRHFSWXVWZkxWc__15316669992541710076" class="shopify-block shopify-app-block"><script defer src="https://widget.reviews.io/rating-snippet/dist.js"></script>
<link rel="stylesheet" href="https://widget.reviews.io/rating-snippet/dist.css" />
<script>
    (function () {
      function initRatingSnippet() {
        var hasStore = typeof reviewsIoStore !== 'undefined' && !!reviewsIoStore;
        if (!hasStore) return;

        if (typeof ratingSnippet !== 'function') return;

        // Ensure the target element exists (rating-output block may render after this app embed).
        if (!document.querySelector('.ruk_rating_snippet')) return;

        var storeOverride = window.__REVIEWSIO_RATING_SNIPPET_STORE_OVERRIDE__;
        var storeForSnippet = storeOverride || reviewsIoStore;

        ratingSnippet("ruk_rating_snippet",{
            store: storeForSnippet,
            color: '#092254',
            
              textClr: '#092254',
            
            linebreak: false,
            
            usePolaris: true,
            
            
            
            
            
              text: 'Reviews',
            
            lang: (typeof reviewsIoLang !== 'undefined' && reviewsIoLang) ? reviewsIoLang : 'en',
            mode: 'default',
            showEmptyStars: true,
            
            enableSyndication: (typeof reviewsIoEnableSyndication !== 'undefined') ? reviewsIoEnableSyndication : false
        });

        const reviewsIoModal = document.getElementById('reviews_fade');
        if (reviewsIoModal) {
          reviewsIoModal.classList.add('rio-withoutBranding');
        }
      }

      // Retry to survive slow network/script timing.
      var attempts = 0;
      var MAX_RATING_SNIPPET_INIT_ATTEMPTS = 20;
      var MAX_TIMEOUT_RETRY = 200;
      
      function tick() {
        attempts += 1;
        initRatingSnippet();
        if (attempts < MAX_RATING_SNIPPET_INIT_ATTEMPTS && (typeof ratingSnippet !== 'function' || !document.querySelector('.ruk_rating_snippet'))) {
          window.setTimeout(tick, MAX_TIMEOUT_RETRY);
        }
      }

      // Use window load to maximize chance that the external script executed.
      window.addEventListener('load', tick);
    })();
</script>


</div></body>
</html>
