diff --git a/dist/pathfora.css b/dist/pathfora.css index d4bf720..0b16835 100644 --- a/dist/pathfora.css +++ b/dist/pathfora.css @@ -29,6 +29,19 @@ background-color: #f1f1f1; color: #888; font-size: 15px; + /* The live region an inline widget announces its form state through. It has + to stay rendered to stay in the accessibility tree, so it is clipped + rather than hidden with display: none or visibility: hidden. */ + /* Load-bearing, not cosmetic: a revealed state moves focus to the container + so a screen reader reads the state out, and when script moves focus while + the element losing it matches :focus-visible - a keyboard user pressing + Enter on Confirm - the element receiving it matches too. Without this rule + Chrome draws outline: auto around the whole full-viewport gate or modal + container. Do not remove. */ + /* NOTE no transition here: nothing about the state swap changes opacity, and + declaring one on the widget root overrides .slide-transition(), which + costs slideouts and bars their slide-out animation when the state's delay + closes the widget a few seconds later. */ } .pf-widget .pf-widget-body { color: #888; @@ -220,8 +233,19 @@ .pf-widget .error-state { display: none; } -.pf-widget.success { - transition: opacity 0.3s; +.pf-widget .pf-widget-announcement { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} +.pf-widget .pf-widget-container:focus { + outline: none; } .pf-widget.success .pf-widget-headline, .pf-widget.success .pf-widget-message, @@ -236,9 +260,6 @@ .pf-widget.success .success-state form { display: block; } -.pf-widget.error { - transition: opacity 0.3s; -} .pf-widget.error .pf-widget-headline, .pf-widget.error .pf-widget-message, .pf-widget.error form { diff --git a/dist/pathfora.js b/dist/pathfora.js index 71815af..4a72dca 100644 --- a/dist/pathfora.js +++ b/dist/pathfora.js @@ -264,29 +264,29 @@ /* eslint-disable quotes */ var templates = { 'subscription': { - 'bar': '

', - 'gate': '

', + 'bar': '

', + 'gate': '

', 'inline': '

', - 'modal': '

', - 'slideout': '

' + 'modal': '

', + 'slideout': '

' }, 'sitegate': { - 'gate': '

' + 'gate': '

' }, 'message': { - 'bar': '

', + 'bar': '

', 'button': '', - 'gate': '

', - 'inline': '

', - 'modal': '

', - 'slideout': '

' + 'gate': '

', + 'inline': '

', + 'modal': '

', + 'slideout': '

' }, 'includes': {}, 'form': { - 'gate': '

', + 'gate': '

', 'inline': '

', - 'modal': '

', - 'slideout': '

' + 'modal': '

', + 'slideout': '

' }, 'assets': { 'lytics': 'lytics' @@ -1768,6 +1768,149 @@ }, 500); } + /** @module pathfora/widgets/describe-widget-container */ + + /** + * Point a widget container's aria-labelledby/aria-describedby at the headline + * and message elements it should be named and described by, giving each one an + * id to be referenced by. + * + * Ids are namespaced under the widget id, which pathfora already guarantees to + * be unique, so several widgets open at once cannot collide. A widget holding + * more than one headline and message - a form and the success or error state + * that replaces it - passes a distinct namespace per set. + * + * Callers pass null for an element that holds no text: a reference to an empty + * or absent element leaves the container unnamed just as surely as no reference + * at all, so the reference is cleared instead. + * + * @exports describeWidgetContainer + * @params {object} container + * @params {object} headline + * @params {object} message + * @params {string} namespace + */ + function describeWidgetContainer( + container, + headline, + message, + namespace, + ) { + if (headline) { + headline.id = namespace + '-pf-widget-headline'; + } + + if (message) { + message.id = namespace + '-pf-widget-message'; + } + + // NOTE bar layouts have no headline element at all, so the message is the + // only text available to name the container with + var name = headline || message, + description = headline ? message : null; + + if (name) { + container.setAttribute('aria-labelledby', name.id); + } else { + container.removeAttribute('aria-labelledby'); + } + + if (description) { + container.setAttribute('aria-describedby', description.id); + } else { + container.removeAttribute('aria-describedby'); + } + } + + /** @module pathfora/form/announce-form-state */ + + + /** + * Read the text out of a state element's headline or message. + * + * @params {object} state + * @params {string} selector + * @returns {string} + */ + function stateText(state, selector) { + var el = state.querySelector(selector); + + return el ? el.textContent || el.innerText || '' : ''; + } + + /** + * Make a revealed form success or error state perceivable to assistive + * technology. + * + * The state is revealed by CSS alone, which is silent, and the same rules hide + * the button the user just activated - so a dialog is renamed after its new + * contents and handed focus, which is what gets it read out and keeps a + * keyboard user from being dropped back to the top of the page. An inline + * widget sits in the page's own flow and should not steal focus, so its text + * is copied into the live region built alongside the states instead. + * + * @exports announceFormState + * @params {object} widget + * @params {string} name + */ + function announceFormState(widget, name) { + var state = widget.querySelector('.' + name + '-state'), + container = widget.querySelector('.pf-widget-container'); + + if (!state || !container) { + return; + } + + if (container.getAttribute('role') !== 'dialog') { + var region = widget.querySelector('.pf-widget-announcement'); + + if (!region) { + return; + } + + // NOTE the headline and message only, never the state's own buttons: the + // implicit aria-atomic on role=status means everything in here is read as + // one message, and "Thank You. We have received your submission." should + // not end in "Confirm Cancel" + var announcement = [ + stateText(state, '.pf-widget-headline'), + stateText(state, '.pf-widget-message'), + ] + .filter(function (text) { + return text.length > 0; + }) + .join('. '); + + if (!announcement.length) { + return; + } + + // NOTE written a tick late, after the class that reveals the state has + // been applied and styles have settled: Safari and VoiceOver are the + // least forgiving about text that arrives in the same tick as the change + // around it + setTimeout(function () { + while (region.firstChild) { + region.removeChild(region.firstChild); + } + + region.appendChild(document$1.createTextNode(announcement)); + }, 0); + + return; + } + + describeWidgetContainer( + container, + state.querySelector('.pf-widget-headline'), + state.querySelector('.pf-widget-message'), + widget.id + '-' + name, + ); + + container.setAttribute('tabindex', '-1'); + container.focus(); + } + /** @module pathfora/form/handle-form-states */ @@ -1785,9 +1928,11 @@ if (successful) { addClass(widget, 'success'); + announceFormState(widget, 'success'); delay = config.formStates.success && typeof config.formStates.success.delay !== 'undefined' ? config.formStates.success.delay * 1000 : 3000; } else { addClass(widget, 'error'); + announceFormState(widget, 'error'); delay = config.formStates.error && typeof config.formStates.error.delay !== 'undefined' ? config.formStates.error.delay * 1000 : 3000; } @@ -2755,6 +2900,35 @@ return elem; } + /** @module pathfora/form/construct-state-live-region */ + + + /** + * Build the empty live region an inline widget announces its form state + * through. + * + * A live region is only reliably announced when it is already rendered and + * empty at the moment its text arrives - a region that enters the + * accessibility tree with its text already inside is the classic case screen + * readers skip. So the region is built with the state elements, well before + * either state is revealed, and announceFormState writes into it. + * + * It is visually hidden rather than display: none, which would take it out of + * the accessibility tree along with its announcement, and it holds only the + * state's headline and message - role=status carries an implicit aria-atomic, + * so anything else in here would be read out with them. + * + * @exports constructStateLiveRegion + */ + function constructStateLiveRegion() { + var region = document$1.createElement('div'); + + region.className = 'pf-widget-announcement'; + region.setAttribute('role', 'status'); + + return region; + } + /** @module pathfora/widgets/actions/form-state-actions */ @@ -2862,6 +3036,15 @@ formStateActions(config, widget, 'error'); } + // NOTE an inline widget sits in the page's own flow and must not + // steal focus, so it announces its state through a live region + // instead - which has to be in the document before the state is + // revealed to be announced at all. Every other layout is a dialog + // that gets renamed and focused instead, and needs no region. + if (config.layout === 'inline') { + widgetContent.appendChild(constructStateLiveRegion()); + } + break; } break; @@ -3107,6 +3290,32 @@ } } + /** @module pathfora/widgets/setup-widget-aria */ + + + /** + * Give the widget container an accessible name and description by pointing + * aria-labelledby/aria-describedby at the widget's own headline and message. + * + * @exports setupWidgetAria + * @params {object} widget + * @params {object} config + */ + function setupWidgetAria(widget, config) { + var container = widget.querySelector('.pf-widget-container'); + + if (!container) { + return; + } + + describeWidgetContainer( + container, + config.headline ? widget.querySelector('.pf-widget-headline') : null, + config.msg ? widget.querySelector('.pf-widget-message') : null, + config.id, + ); + } + /** @module pathfora/widgets/colors/set-custom-colors */ @@ -3351,6 +3560,10 @@ throw new Error('Could not get pathfora template based on type and layout.'); } + // NOTE must run against the untouched template, before the form state + // elements duplicate the headline and message classes + setupWidgetAria(widget, config); + setupWidgetPosition(widget, config); constructWidgetActions(widget, config); setupWidgetContentUnit(widget, config); @@ -3395,7 +3608,7 @@ */ function showWidget(w) { - var openWidget = function (widget) { + var openWidget = function (widget, onOpened) { // FIXME Change to Array#filter and Array#length for (var i = 0; i < widgetTracker.openedWidgets.length; i++) { if (widgetTracker.openedWidgets[i] === widget) { @@ -3429,29 +3642,58 @@ document$1.body.appendChild(node); if (widget.layout === 'modal' || widget.layout === 'gate') { - // ensure that we set focus the the modal for accessibility reasons - var focusable = node.querySelectorAll( - 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])' - ); + // NOTE the set is recomputed on every tab rather than captured here: + // form widgets swap their form out for a success or error state, so a + // set captured at open time would send focus to elements that are + // display: none by the time the user tabs. getClientRects is the check + // rather than offsetParent, which is null for the position: fixed + // widget content of a modal + var focusableInWidget = function () { + return Array.prototype.filter.call( + node.querySelectorAll( + 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])' + ), + function (el) { + return el.getClientRects().length > 0; + } + ); + }; - if (focusable.length) { - widget.listeners.tabindex = { - type: 'keydown', - target: document$1, - fn: function (ev) { - // for modal and sitegate widgets we need to limit tab cycle focus to the widget - if (ev.keyCode === 9) { - if (!node.contains(event.target)) { - ev.preventDefault(); - focusable[0].focus(); - } else if (ev.target === focusable[focusable.length - 1]) { - ev.preventDefault(); - focusable[0].focus(); - } + widget.listeners.tabindex = { + type: 'keydown', + target: document$1, + fn: function (ev) { + // for modal and sitegate widgets we need to limit tab cycle focus to the widget + if (ev.keyCode !== 9) { + return; + } + + var focusable = focusableInWidget(); + + if (!focusable.length) { + return; + } + + // NOTE both directions: a trap that only corrects forward Tab + // leaks out of the top of the dialog on the first Shift+Tab + if (ev.shiftKey) { + if (!node.contains(ev.target) || ev.target === focusable[0]) { + ev.preventDefault(); + focusable[focusable.length - 1].focus(); } - }, - }; - } + + return; + } + + if ( + !node.contains(ev.target) || + ev.target === focusable[focusable.length - 1] + ) { + ev.preventDefault(); + focusable[0].focus(); + } + }, + }; } } else { // support legacy inline layout used position as selector. @@ -3476,6 +3718,10 @@ addClass(node, 'opened'); + if (typeof onOpened === 'function') { + onOpened(node); + } + if (typeof widgetLoadCallback === 'function') { widgetLoadCallback(callbackTypes.LOAD, { config: widget, @@ -3529,8 +3775,22 @@ // account for showDelay condition if (w.displayConditions && w.displayConditions.showDelay) { widgetTracker.delayedWidgets[w.id] = setTimeout(function () { - openWidget(w); - document$1.querySelector('.pf-widget-ok').focus(); + // NOTE the focus waits for the `opened` class rather than running as + // soon as the widget is appended: until then the widget is + // visibility: hidden, and nothing in a hidden subtree can take focus, + // so focusing here was silently doing nothing. + // + // The lookup is scoped to this widget's own node, and optional: with + // several widgets open an unscoped one focuses whichever comes first in + // the document, and a widget configured with okShow: false has no such + // button at all + openWidget(w, function (node) { + var ok = node.querySelector('.pf-widget-ok'); + + if (ok) { + ok.focus(); + } + }); }, w.displayConditions.showDelay * 1000); } else { openWidget(w); diff --git a/dist/pathfora.min.css b/dist/pathfora.min.css index a49f0cb..2ae0cf6 100644 --- a/dist/pathfora.min.css +++ b/dist/pathfora.min.css @@ -1 +1 @@ -.pf-widget,.pf-widget *{box-sizing:border-box;-webkit-sizing:border-box}.pf-widget,.pf-widget .pf-widget-body{color:#888}.pf-widget .pf-widget-btn,.pf-widget .pf-widget-close,.pf-widget a{text-decoration:none;cursor:pointer}.pf-hidden,.pf-widget .pf-content-unit,.pf-widget .pf-widget-img{display:none}.pf-widget.error,.pf-widget.success{transition:opacity .3s}.pf-box-shadow{box-shadow:0 4px 4px -4px rgba(0,0,0,.5)}.pf-widget{z-index:9999;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;visibility:hidden;opacity:0;text-align:left;-moz-box-sizing:border-box;background-color:#f1f1f1;font-size:15px}.pf-widget .pf-widget-footer{font-size:12px;margin-top:10px}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget.pf-mobile-hide{display:none}}.pf-widget *{-moz-box-sizing:border-box;text-shadow:none}.pf-widget a,.pf-widget h2,.pf-widget input,.pf-widget p,.pf-widget select,.pf-widget textarea{margin:0;padding:0;border:0;background:0 0}.pf-widget .pf-widget-headline{margin:0 0 10px;color:#444;font-weight:500}.pf-widget input[type=text],.pf-widget input[type=email],.pf-widget input[type=date],.pf-widget select,.pf-widget textarea{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;border-radius:3px;font-size:14px;width:100%;padding:10px 15px;background:#fff;box-shadow:inset 0 1px 1px rgba(0,0,0,.2);position:relative;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-sizing:border-box}.pf-widget input[type=text]::-webkit-input-placeholder,.pf-widget input[type=email]::-webkit-input-placeholder,.pf-widget input[type=date]::-webkit-input-placeholder,.pf-widget select::-webkit-input-placeholder,.pf-widget textarea::-webkit-input-placeholder{color:#a9a9a9}.pf-widget input[type=text]:-moz-placeholder,.pf-widget input[type=email]:-moz-placeholder,.pf-widget input[type=date]:-moz-placeholder,.pf-widget select:-moz-placeholder,.pf-widget textarea:-moz-placeholder{color:#a9a9a9}.pf-widget input[type=text]::-moz-placeholder,.pf-widget input[type=email]::-moz-placeholder,.pf-widget input[type=date]::-moz-placeholder,.pf-widget select::-moz-placeholder,.pf-widget textarea::-moz-placeholder{color:#a9a9a9}.pf-widget input[type=text]:-ms-input-placeholder,.pf-widget input[type=email]:-ms-input-placeholder,.pf-widget input[type=date]:-ms-input-placeholder,.pf-widget select:-ms-input-placeholder,.pf-widget textarea:-ms-input-placeholder{color:#a9a9a9}.pf-widget select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.pf-widget select::-ms-expand{display:none}.pf-widget select.default{color:#a9a9a9}.pf-widget form:not(.pf-custom-form) input[type=text],.pf-widget form:not(.pf-custom-form) input[type=email],.pf-widget form:not(.pf-custom-form) select,.pf-widget form:not(.pf-custom-form) textarea{margin-bottom:10px}.pf-widget form:not(.pf-custom-form) [data-required=true].bad-validation,.pf-widget form:not(.pf-custom-form) [data-required=true].invalid,.pf-widget form:not(.pf-custom-form) [data-validate=true].bad-validation,.pf-widget form:not(.pf-custom-form) [data-validate=true].invalid{border:1px solid #f12626}.pf-widget input[type=text],.pf-widget input[type=email],.pf-widget input[type=date],.pf-widget select{clear:both}.pf-widget textarea{resize:none}.pf-widget .pf-widget-img{border-radius:50%}.pf-widget .pf-widget-message{line-height:1.5;font-size:15px}.pf-widget .pf-widget-btn{display:inline-block;padding:0 26px;line-height:35px;font-size:14px;border-radius:5px;border:0;margin-bottom:2px}.pf-widget .error-state,.pf-widget .success-state,.pf-widget.success .pf-widget-headline,.pf-widget.success .pf-widget-message,.pf-widget.success form{display:none}.pf-widget .pf-widget-btn.pf-widget-ok{box-shadow:0 1px 1px rgba(0,0,0,.2);color:#444;background-color:#fff}.pf-widget .pf-widget-btn.pf-widget-cancel{color:#bbb;background-color:#f1f1f1}.pf-widget .pf-widget-btn+.pf-widget-btn{margin-left:5px;margin-right:5px}.pf-widget .pf-widget-close{font-size:24px;position:absolute;top:4px;line-height:1;right:0;margin-right:12px;color:#bbb;padding:0;background-color:transparent;border:0}.pf-widget.opened{visibility:visible;opacity:1}.pf-widget .branding{position:relative}.pf-widget .branding svg{position:absolute;bottom:-25px;right:-25px;fill:#888;opacity:.25;width:120px}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget .branding svg{right:-8px}}.pf-widget.success .success-state,.pf-widget.success .success-state .pf-widget-headline,.pf-widget.success .success-state .pf-widget-message,.pf-widget.success .success-state form{display:block}.pf-widget.error .pf-widget-headline,.pf-widget.error .pf-widget-message,.pf-widget.error form{display:none}.pf-widget-has-image .pf-widget-img,.pf-widget-variant-2 .pf-widget-img,.pf-widget.error .error-state,.pf-widget.error .error-state .pf-widget-headline,.pf-widget.error .error-state .pf-widget-message,.pf-widget.error .error-state form{display:block}.pf-widget-has-recommend .pf-content-unit,.pf-widget-variant-3 .pf-content-unit{display:block;text-align:left;margin-bottom:20px;position:relative;background-color:#fff}.pf-widget-has-recommend .pf-content-unit .pf-content-unit-meta,.pf-widget-variant-3 .pf-content-unit .pf-content-unit-meta{padding:10px 15px}.pf-widget-has-recommend .pf-content-unit .pf-content-unit-meta span.pf-content-unit-info,.pf-widget-variant-3 .pf-content-unit .pf-content-unit-meta span.pf-content-unit-info{font-size:12px;display:block;margin-bottom:5px;color:#444}.pf-widget-has-recommend .pf-content-unit .pf-content-unit-meta h4,.pf-widget-variant-3 .pf-content-unit .pf-content-unit-meta h4{font-weight:500;margin:0 0 5px;line-height:1.4;color:#444}.pf-widget-has-recommend .pf-content-unit .pf-content-unit-meta p,.pf-widget-variant-3 .pf-content-unit .pf-content-unit-meta p{line-height:1.3;color:#888}.pf-widget-has-recommend .pf-content-unit .pf-content-unit-img,.pf-widget-variant-3 .pf-content-unit .pf-content-unit-img{background-size:cover;background-position:center center;background-repeat:no-repeat}.pf-widget-has-recommend .pf-content-unit:not(.stack),.pf-widget-variant-3 .pf-content-unit:not(.stack){width:95%;margin:0 auto 30px}.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-img,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-img{position:absolute;display:block;height:100%;width:40%}.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-img+.pf-content-unit-meta,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-img+.pf-content-unit-meta{width:60%;min-height:135px}.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-meta,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-meta{padding:15px;display:block;margin:0 0 0 auto}.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-meta span.pf-content-unit-info,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-meta span.pf-content-unit-info{font-size:13px}.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-meta h4,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-meta h4{font-size:18px}.pf-widget-has-recommend .pf-content-unit.stack .pf-content-unit-meta h4,.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-meta p,.pf-widget-variant-3 .pf-content-unit.stack .pf-content-unit-meta h4,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-meta p{font-size:14px}.pf-widget-has-recommend .pf-content-unit.stack,.pf-widget-variant-3 .pf-content-unit.stack{width:100%;display:block;text-align:left}.pf-widget-has-recommend .pf-content-unit.stack .pf-content-unit-meta p,.pf-widget-variant-3 .pf-content-unit.stack .pf-content-unit-meta p{font-size:13px}.pf-widget-has-recommend .pf-content-unit.stack .pf-content-unit-img,.pf-widget-variant-3 .pf-content-unit.stack .pf-content-unit-img{width:100%;height:135px}.pf-subscription form{width:100%;display:block;margin:0 auto}.pf-subscription form input[type=text],.pf-subscription form input[type=email]{width:100%;margin-bottom:1px}.pf-subscription form .pf-widget-btn{float:right;margin-left:5px;padding:0 16px}.pf-subscription form span{display:block;padding:2px;overflow:hidden}.pf-widget-gate .pf-widget-content,.pf-widget-modal .pf-widget-content,.pf-widget-slideout{max-height:100%;overflow-x:hidden;overflow-y:auto;box-shadow:0 4px 4px -4px rgba(0,0,0,.5)}.pf-form input.pf-field-half-width,.pf-form select.pf-field-half-width,.pf-sitegate input.pf-field-half-width,.pf-sitegate select.pf-field-half-width{width:49%;display:block;clear:none;float:left}.pf-form input.pf-field-half-width.right,.pf-form select.pf-field-half-width.right,.pf-sitegate input.pf-field-half-width.right,.pf-sitegate select.pf-field-half-width.right{float:right}.pf-form .pf-widget-btn,.pf-sitegate .pf-widget-btn{clear:both;margin-top:5px}.pf-form form.pf-custom-form>div,.pf-sitegate form.pf-custom-form>div{text-align:left;margin-bottom:10px}.pf-form .pf-form-label,.pf-sitegate .pf-form-label{font-weight:700}.pf-form .pf-widget-checkbox,.pf-form .pf-widget-radio,.pf-sitegate .pf-widget-checkbox,.pf-sitegate .pf-widget-radio{display:block;padding:4px}.pf-form .pf-widget-checkbox input,.pf-form .pf-widget-radio input,.pf-sitegate .pf-widget-checkbox input,.pf-sitegate .pf-widget-radio input{margin-right:10px}.pf-form .pf-has-label,.pf-sitegate .pf-has-label{margin-top:7px}.pf-form div.pf-form-required,.pf-form div.pf-form-required-validation,.pf-sitegate div.pf-form-required,.pf-sitegate div.pf-form-required-validation{position:relative}.pf-form div.pf-form-required-validation.bad-validation [data-required=true]:not(.pf-has-label),.pf-form div.pf-form-required-validation.bad-validation [data-validate=true]:not(.pf-has-label),.pf-form div.pf-form-required-validation.invalid [data-required=true]:not(.pf-has-label),.pf-form div.pf-form-required-validation.invalid [data-validate=true]:not(.pf-has-label),.pf-form div.pf-form-required.bad-validation [data-required=true]:not(.pf-has-label),.pf-form div.pf-form-required.bad-validation [data-validate=true]:not(.pf-has-label),.pf-form div.pf-form-required.invalid [data-required=true]:not(.pf-has-label),.pf-form div.pf-form-required.invalid [data-validate=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required-validation.bad-validation [data-required=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required-validation.bad-validation [data-validate=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required-validation.invalid [data-required=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required-validation.invalid [data-validate=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required.bad-validation [data-required=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required.bad-validation [data-validate=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required.invalid [data-required=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required.invalid [data-validate=true]:not(.pf-has-label){border:1px solid #f12626;margin:-1px}.pf-form div.pf-form-required-validation.pf-widget-checkbox-group [data-required=true],.pf-form div.pf-form-required-validation.pf-widget-radio-group,.pf-form div.pf-form-required.pf-widget-checkbox-group [data-required=true],.pf-form div.pf-form-required.pf-widget-radio-group,.pf-sitegate div.pf-form-required-validation.pf-widget-checkbox-group [data-required=true],.pf-sitegate div.pf-form-required-validation.pf-widget-radio-group,.pf-sitegate div.pf-form-required.pf-widget-checkbox-group [data-required=true],.pf-sitegate div.pf-form-required.pf-widget-radio-group{border-radius:3px}.pf-form div.pf-form-required-validation.bad-validation div.pf-invalid-flag,.pf-form div.pf-form-required-validation.invalid div.pf-required-flag,.pf-form div.pf-form-required.bad-validation div.pf-invalid-flag,.pf-form div.pf-form-required.invalid div.pf-required-flag,.pf-sitegate div.pf-form-required-validation.bad-validation div.pf-invalid-flag,.pf-sitegate div.pf-form-required-validation.invalid div.pf-required-flag,.pf-sitegate div.pf-form-required.bad-validation div.pf-invalid-flag,.pf-sitegate div.pf-form-required.invalid div.pf-required-flag{opacity:1;margin-left:10px}.pf-form div.pf-form-required div.pf-invalid-flag,.pf-form div.pf-form-required div.pf-required-flag,.pf-form div.pf-form-required-validation div.pf-invalid-flag,.pf-form div.pf-form-required-validation div.pf-required-flag,.pf-sitegate div.pf-form-required div.pf-invalid-flag,.pf-sitegate div.pf-form-required div.pf-required-flag,.pf-sitegate div.pf-form-required-validation div.pf-invalid-flag,.pf-sitegate div.pf-form-required-validation div.pf-required-flag{font-size:12px;font-weight:700;position:absolute;padding:3px 7px;display:inline;width:auto;color:#fff;background-color:#f12626;box-shadow:0 4px 4px -4px rgba(0,0,0,.5);margin-left:5px;opacity:0}.pf-form div.pf-form-required div.pf-invalid-flag span,.pf-form div.pf-form-required div.pf-required-flag span,.pf-form div.pf-form-required-validation div.pf-invalid-flag span,.pf-form div.pf-form-required-validation div.pf-required-flag span,.pf-sitegate div.pf-form-required div.pf-invalid-flag span,.pf-sitegate div.pf-form-required div.pf-required-flag span,.pf-sitegate div.pf-form-required-validation div.pf-invalid-flag span,.pf-sitegate div.pf-form-required-validation div.pf-required-flag span{position:absolute;width:0;height:0;top:6px;left:-6px;border-top:4px solid transparent;border-bottom:4px solid transparent;content:'';border-right:6px solid #f12626}.pf-form div.pf-form-required span.required,.pf-form div.pf-form-required-validation span.required,.pf-sitegate div.pf-form-required span.required,.pf-sitegate div.pf-form-required-validation span.required{color:#f12626}.pf-form.pf-widget-slideout input.pf-field-half-width,.pf-form.pf-widget-slideout select.pf-field-half-width,.pf-sitegate.pf-widget-slideout input.pf-field-half-width,.pf-sitegate.pf-widget-slideout select.pf-field-half-width{width:48%}.pf-widget-gate,.pf-widget-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.5);z-index:9999;text-align:center}.pf-widget-gate .pf-va-middle,.pf-widget-modal .pf-va-middle{display:table-cell;vertical-align:middle}.pf-widget-gate .pf-widget-btn,.pf-widget-modal .pf-widget-btn{font-size:16px;line-height:45px}.pf-widget-gate .pf-widget-footer,.pf-widget-modal .pf-widget-footer{text-align:center}.pf-widget-slideout .pf-widget-footer,.pf-widget-slideout.pf-widget-variant-1 .pf-widget-content .pf-widget-headline,.pf-widget-slideout.pf-widget-variant-1 .pf-widget-content .pf-widget-message,.pf-widget-slideout:not(.pf-widget-has-image) .pf-widget-content .pf-widget-headline,.pf-widget-slideout:not(.pf-widget-has-image) .pf-widget-content .pf-widget-message,.pf-widget-slideout:not(.pf-widget-has-recommend) .pf-widget-content .pf-widget-headline,.pf-widget-slideout:not(.pf-widget-has-recommend) .pf-widget-content .pf-widget-message{text-align:left}.pf-widget-gate .pf-widget-container,.pf-widget-modal .pf-widget-container{display:table;width:100%;height:100%;position:relative;top:-100vh}.pf-widget-gate .pf-widget-content,.pf-widget-modal .pf-widget-content{background-color:#f1f1f1;color:#888;width:100%;position:fixed;max-width:780px;margin:0 auto;padding:40px;border-radius:5px;top:50%;left:50%;transform:translate(-50%,-50%)}.pf-widget-gate .pf-widget-headline,.pf-widget-modal .pf-widget-headline{font-size:28px}.pf-widget-gate .pf-widget-message,.pf-widget-modal .pf-widget-message{font-size:18px;margin:0 0 30px}.pf-widget-gate.pf-subscription.pf-widget-has-branding span,.pf-widget-modal.pf-subscription.pf-widget-has-branding span,.pf-widget-slideout.pf-subscription.pf-widget-has-branding span{margin-bottom:13px}.pf-widget-gate .pf-widget-body,.pf-widget-modal .pf-widget-body{display:table;width:100%}.pf-widget-gate form input[type=text],.pf-widget-gate form input[type=email],.pf-widget-gate form input[type=date],.pf-widget-gate form select,.pf-widget-gate form textarea,.pf-widget-modal form input[type=text],.pf-widget-modal form input[type=email],.pf-widget-modal form input[type=date],.pf-widget-modal form select,.pf-widget-modal form textarea{font-size:16px}.pf-widget-gate form input[type=text],.pf-widget-gate form input[type=email],.pf-widget-gate form input[type=date],.pf-widget-gate form select,.pf-widget-modal form input[type=text],.pf-widget-modal form input[type=email],.pf-widget-modal form input[type=date],.pf-widget-modal form select{height:45px}.pf-widget-gate.opened .pf-widget-container,.pf-widget-modal.opened .pf-widget-container{top:0}.pf-widget-gate.pf-widget-has-image .pf-widget-headline,.pf-widget-gate.pf-widget-variant-2 .pf-widget-headline,.pf-widget-modal.pf-widget-has-image .pf-widget-headline,.pf-widget-modal.pf-widget-variant-2 .pf-widget-headline{margin-top:140px}.pf-widget-gate.pf-widget-has-image .pf-widget-img,.pf-widget-gate.pf-widget-variant-2 .pf-widget-img,.pf-widget-modal.pf-widget-has-image .pf-widget-img,.pf-widget-modal.pf-widget-variant-2 .pf-widget-img{float:none;position:absolute;top:20px;left:50%;margin-left:-70px;width:140px;height:140px}.pf-widget-gate.pf-subscription .pf-widget-btn,.pf-widget-modal.pf-subscription .pf-widget-btn{margin-top:2px}.pf-widget-slideout{bottom:50px;width:350px;border-radius:4px;top:auto;position:fixed;transition:translate .3s ease-in-out,opacity .3s,visibility .3s}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-gate .pf-widget-content,.pf-widget-modal .pf-widget-content{padding:40px 20px}.pf-widget-slideout{width:100%;max-width:350px}}.pf-widget-slideout .pf-widget-message{margin:0 0 20px}.pf-widget-slideout .pf-widget-btn{line-height:40px}.pf-widget-slideout .pf-widget-content{padding:30px;width:100%}.pf-widget-slideout .pf-widget-headline{font-size:20px}.pf-widget-slideout.pf-position-bottom-left,.pf-widget-slideout.pf-position-left,.pf-widget-slideout.pf-position-top-left{left:50px;translate:calc(-100% - 50px)}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-slideout.pf-position-bottom-left,.pf-widget-slideout.pf-position-left,.pf-widget-slideout.pf-position-top-left{bottom:0;left:0;translate:-100%}}.pf-widget-slideout.pf-position-bottom-right,.pf-widget-slideout.pf-position-right,.pf-widget-slideout.pf-position-top-right{left:auto;right:50px;translate:calc(100% + 50px)}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-slideout.pf-position-bottom-right,.pf-widget-slideout.pf-position-right,.pf-widget-slideout.pf-position-top-right{bottom:0;right:0;translate:100%}}.pf-widget-slideout.pf-position-left,.pf-widget-slideout.pf-position-right{bottom:auto;top:50%;transform:translateY(-50%);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%)}.pf-widget-slideout.pf-position-top-left,.pf-widget-slideout.pf-position-top-right{bottom:auto;top:50px}.pf-widget-slideout.pf-origin-bottom{bottom:50px;translate:0 calc(100% + 50px)}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-slideout.pf-position-top-left,.pf-widget-slideout.pf-position-top-right{top:0}.pf-widget-slideout.pf-origin-bottom{bottom:0;translate:0 100%}}.pf-widget-slideout.opened{translate:0}.pf-widget-slideout .branding svg{bottom:-22px;right:-20px;width:100px}.pf-widget-bar .pf-bar-content,.pf-widget-inline.pf-widget-has-image .pf-widget-content,.pf-widget-inline.pf-widget-variant-2 .pf-widget-content,.pf-widget-slideout.pf-widget-has-image .pf-widget-content,.pf-widget-slideout.pf-widget-variant-2 .pf-widget-content{text-align:center}.pf-widget-slideout.pf-widget-has-image .pf-widget-content .pf-widget-headline,.pf-widget-slideout.pf-widget-variant-2 .pf-widget-content .pf-widget-headline{margin-top:110px}.pf-widget-slideout.pf-widget-has-image .pf-widget-img,.pf-widget-slideout.pf-widget-variant-2 .pf-widget-img{width:100px;height:100px;float:none;position:absolute;top:20px;left:50%;margin-left:-50px}.pf-widget-slideout.pf-form{width:370px}.pf-widget-slideout form:not(.pf-custom-form) input[type=email].invalid,.pf-widget-slideout form:not(.pf-custom-form) input[type=text].invalid{margin:-1px -1px 9px}.pf-push-down.opened{margin-top:59px}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-slideout.pf-form{width:100%;max-width:370px}.pf-push-down.opened{margin-top:0}}.pf-widget-bar{height:auto;padding:10px 0;min-height:59px;left:0;right:0;box-shadow:0 4px 4px -4px rgba(0,0,0,.5);transition:translate .3s ease-in-out,opacity .3s,visibility .3s}.pf-widget-bar .pf-widget-body{margin:0 20px;float:left}.pf-widget-bar .pf-widget-close{top:50%;position:absolute;margin-top:-16px;right:20px;line-height:1;margin-right:0}.pf-widget-bar .pf-widget-btn{line-height:35px}.pf-widget-bar .pf-bar-content{padding:0 40px}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-bar .pf-bar-content{padding:0 40px 0 20px}}.pf-widget-bar .pf-bar-content .pf-widget-message{text-overflow:ellipsis;max-width:100%;overflow:hidden;display:inline-block;white-space:normal;margin:6px 16px}.pf-widget-bar .pf-bar-content input[type=email],.pf-widget-bar .pf-bar-content input[type=text]{margin:0 1px;max-width:200px}.pf-widget-bar .pf-bar-content form:not(.pf-custom-form) input[type=email],.pf-widget-bar .pf-bar-content form:not(.pf-custom-form) input[type=text]{margin-bottom:0}.pf-widget-bar .pf-bar-content form:not(.pf-custom-form) input[type=email].invalid,.pf-widget-bar .pf-bar-content form:not(.pf-custom-form) input[type=text].invalid{margin:0}.pf-widget-bar .pf-bar-content>*{display:inline-block;vertical-align:middle}.pf-widget-bar.pf-position-bottom-absolute,.pf-widget-bar.pf-position-top-absolute{position:absolute}.pf-widget-bar.pf-position-top-absolute,.pf-widget-bar.pf-position-top-fixed{top:0;translate:0 -100%}.pf-widget-bar.pf-position-top-absolute .pf-bar-content,.pf-widget-bar.pf-position-top-fixed .pf-bar-content{padding-top:0}.pf-widget-bar.pf-position-bottom-fixed{bottom:0;translate:0 100%}.pf-widget-bar.pf-position-bottom-fixed,.pf-widget-bar.pf-position-top-fixed{position:fixed}.pf-widget-bar.opened.pf-position-bottom-fixed,.pf-widget-bar.opened.pf-position-top-absolute,.pf-widget-bar.opened.pf-position-top-fixed{translate:0}.pf-widget-bar.pf-widget-has-image .pf-widget-img,.pf-widget-bar.pf-widget-variant-2 .pf-widget-img{height:35px;width:35px;top:50%;margin-top:-17.5px;position:absolute}.pf-widget-bar.pf-message .pf-widget-btn,.pf-widget-bar.pf-subscription form .pf-widget-btn{margin-top:2px}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-bar.pf-widget-has-image .pf-widget-img,.pf-widget-bar.pf-widget-variant-2 .pf-widget-img{display:none}}.pf-widget-bar.pf-subscription form{width:auto}.pf-widget-bar.pf-subscription form input[type=email]{height:35px}.pf-widget-button{position:fixed;box-shadow:1px 0 4px 0 rgba(0,0,0,.5);border-radius:2px}.pf-widget-button .pf-widget-message{border:0;background-color:transparent;line-height:42px;padding:0 16px 5px;margin:0;font-weight:700;display:block;cursor:pointer;overflow:hidden;max-width:150px;white-space:nowrap;text-overflow:ellipsis;color:#888}.pf-widget-button.pf-position-left{transform-origin:left bottom;transform:rotate(90deg);left:-50px}.pf-widget-button.pf-position-right{box-shadow:-1px 0 4px 0 rgba(0,0,0,.5);transform-origin:right bottom;transform:rotate(-90deg);right:-50px}.pf-widget-button.pf-position-left,.pf-widget-button.pf-position-right{top:10%}.pf-widget-button.pf-position-bottom-left,.pf-widget-button.pf-position-top-left{left:42px}.pf-widget-button.pf-position-bottom-right,.pf-widget-button.pf-position-top-right{right:42px}.pf-widget-button.pf-position-bottom-left,.pf-widget-button.pf-position-bottom-right{bottom:-50px}.pf-widget-button.pf-position-top-left,.pf-widget-button.pf-position-top-right{top:-50px}.pf-widget-button.pf-position-top-left .pf-widget-message,.pf-widget-button.pf-position-top-right .pf-widget-message{padding:5px 16px 0}.pf-widget-button.opened.pf-position-left{left:-6px}.pf-widget-button.opened.pf-position-left:hover{left:-1px}.pf-widget-button.opened.pf-position-right{right:-6px}.pf-widget-button.opened.pf-position-right:hover{right:-1px}.pf-widget-button.opened.pf-position-bottom-left,.pf-widget-button.opened.pf-position-bottom-right{bottom:-6px;box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.pf-widget-button.opened.pf-position-bottom-left:hover,.pf-widget-button.opened.pf-position-bottom-right:hover{bottom:-1px}.pf-widget-button.opened.pf-position-top-left,.pf-widget-button.opened.pf-position-top-right{top:-6px;box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.pf-widget-button.opened.pf-position-top-left:hover,.pf-widget-button.opened.pf-position-top-right:hover{top:-1px}.pf-widget-inline{padding:20px;border-radius:2px;box-shadow:0 4px 4px -4px rgba(0,0,0,.5);transition:all 0s;position:relative}.pf-widget-inline .pf-widget-message{margin:0 0 20px}.pf-widget-inline .pf-widget-btn{transition:all 0s}.pf-widget-inline.pf-widget-has-image .pf-widget-content .pf-widget-headline,.pf-widget-inline.pf-widget-variant-2 .pf-widget-content .pf-widget-headline{margin-top:110px}.pf-widget-inline.pf-widget-has-image .pf-widget-img,.pf-widget-inline.pf-widget-variant-2 .pf-widget-img{width:100px;height:100px;float:none;position:absolute;top:20px;left:50%;margin-left:-50px}.pf-widget-inline.pf-subscription .pf-widget-btn{line-height:39px}.pf-widget-inline.pf-subscription.pf-widget-has-branding span{margin-bottom:35px}.pf-widget-inline.pf-widget-has-recommend .pf-content-unit,.pf-widget-inline.pf-widget-variant-3 .pf-content-unit{max-width:650px}.pf-widget-inline.pf-widget-has-recommend .pf-content-unit.stack,.pf-widget-inline.pf-widget-variant-3 .pf-content-unit.stack{margin:0 auto;max-width:400px}.pf-widget-inline .branding{position:relative}.pf-widget-inline .branding svg{position:absolute;bottom:-10px;right:-10px}.pf-widget-inline form:not(.pf-custom-form) input[type=email].invalid,.pf-widget-inline form:not(.pf-custom-form) input[type=text].invalid{margin:-1px -1px 9px} \ No newline at end of file +.pf-widget,.pf-widget *{box-sizing:border-box;-webkit-sizing:border-box}.pf-widget,.pf-widget .pf-widget-body{color:#888}.pf-widget .pf-widget-btn,.pf-widget .pf-widget-close,.pf-widget a{text-decoration:none;cursor:pointer}.pf-hidden,.pf-widget .pf-content-unit,.pf-widget .pf-widget-img{display:none}.pf-box-shadow{box-shadow:0 4px 4px -4px rgba(0,0,0,.5)}.pf-widget{z-index:9999;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;visibility:hidden;opacity:0;text-align:left;-moz-box-sizing:border-box;background-color:#f1f1f1;font-size:15px}.pf-widget .pf-widget-footer{font-size:12px;margin-top:10px}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget.pf-mobile-hide{display:none}}.pf-widget *{-moz-box-sizing:border-box;text-shadow:none}.pf-widget a,.pf-widget h2,.pf-widget input,.pf-widget p,.pf-widget select,.pf-widget textarea{margin:0;padding:0;border:0;background:0 0}.pf-widget .pf-widget-headline{margin:0 0 10px;color:#444;font-weight:500}.pf-widget input[type=text],.pf-widget input[type=email],.pf-widget input[type=date],.pf-widget select,.pf-widget textarea{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;border-radius:3px;font-size:14px;width:100%;padding:10px 15px;background:#fff;box-shadow:inset 0 1px 1px rgba(0,0,0,.2);position:relative;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-sizing:border-box}.pf-widget input[type=text]::-webkit-input-placeholder,.pf-widget input[type=email]::-webkit-input-placeholder,.pf-widget input[type=date]::-webkit-input-placeholder,.pf-widget select::-webkit-input-placeholder,.pf-widget textarea::-webkit-input-placeholder{color:#a9a9a9}.pf-widget input[type=text]:-moz-placeholder,.pf-widget input[type=email]:-moz-placeholder,.pf-widget input[type=date]:-moz-placeholder,.pf-widget select:-moz-placeholder,.pf-widget textarea:-moz-placeholder{color:#a9a9a9}.pf-widget input[type=text]::-moz-placeholder,.pf-widget input[type=email]::-moz-placeholder,.pf-widget input[type=date]::-moz-placeholder,.pf-widget select::-moz-placeholder,.pf-widget textarea::-moz-placeholder{color:#a9a9a9}.pf-widget input[type=text]:-ms-input-placeholder,.pf-widget input[type=email]:-ms-input-placeholder,.pf-widget input[type=date]:-ms-input-placeholder,.pf-widget select:-ms-input-placeholder,.pf-widget textarea:-ms-input-placeholder{color:#a9a9a9}.pf-widget select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.pf-widget select::-ms-expand{display:none}.pf-widget select.default{color:#a9a9a9}.pf-widget form:not(.pf-custom-form) input[type=text],.pf-widget form:not(.pf-custom-form) input[type=email],.pf-widget form:not(.pf-custom-form) select,.pf-widget form:not(.pf-custom-form) textarea{margin-bottom:10px}.pf-widget form:not(.pf-custom-form) [data-required=true].bad-validation,.pf-widget form:not(.pf-custom-form) [data-required=true].invalid,.pf-widget form:not(.pf-custom-form) [data-validate=true].bad-validation,.pf-widget form:not(.pf-custom-form) [data-validate=true].invalid{border:1px solid #f12626}.pf-widget input[type=text],.pf-widget input[type=email],.pf-widget input[type=date],.pf-widget select{clear:both}.pf-widget textarea{resize:none}.pf-widget .pf-widget-img{border-radius:50%}.pf-widget .pf-widget-message{line-height:1.5;font-size:15px}.pf-widget .pf-widget-btn{display:inline-block;padding:0 26px;line-height:35px;font-size:14px;border-radius:5px;border:0;margin-bottom:2px}.pf-widget .error-state,.pf-widget .success-state,.pf-widget.success .pf-widget-headline,.pf-widget.success .pf-widget-message,.pf-widget.success form{display:none}.pf-widget .pf-widget-btn.pf-widget-ok{box-shadow:0 1px 1px rgba(0,0,0,.2);color:#444;background-color:#fff}.pf-widget .pf-widget-btn.pf-widget-cancel{color:#bbb;background-color:#f1f1f1}.pf-widget .pf-widget-btn+.pf-widget-btn{margin-left:5px;margin-right:5px}.pf-widget .pf-widget-close{font-size:24px;position:absolute;top:4px;line-height:1;right:0;margin-right:12px;color:#bbb;padding:0;background-color:transparent;border:0}.pf-widget.opened{visibility:visible;opacity:1}.pf-widget .branding{position:relative}.pf-widget .branding svg{position:absolute;bottom:-25px;right:-25px;fill:#888;opacity:.25;width:120px}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget .branding svg{right:-8px}}.pf-widget .pf-widget-announcement{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pf-widget .pf-widget-container:focus{outline:0}.pf-widget.success .success-state,.pf-widget.success .success-state .pf-widget-headline,.pf-widget.success .success-state .pf-widget-message,.pf-widget.success .success-state form{display:block}.pf-widget.error .pf-widget-headline,.pf-widget.error .pf-widget-message,.pf-widget.error form{display:none}.pf-widget-has-image .pf-widget-img,.pf-widget-variant-2 .pf-widget-img,.pf-widget.error .error-state,.pf-widget.error .error-state .pf-widget-headline,.pf-widget.error .error-state .pf-widget-message,.pf-widget.error .error-state form{display:block}.pf-widget-has-recommend .pf-content-unit,.pf-widget-variant-3 .pf-content-unit{display:block;text-align:left;margin-bottom:20px;position:relative;background-color:#fff}.pf-widget-has-recommend .pf-content-unit .pf-content-unit-meta,.pf-widget-variant-3 .pf-content-unit .pf-content-unit-meta{padding:10px 15px}.pf-widget-has-recommend .pf-content-unit .pf-content-unit-meta span.pf-content-unit-info,.pf-widget-variant-3 .pf-content-unit .pf-content-unit-meta span.pf-content-unit-info{font-size:12px;display:block;margin-bottom:5px;color:#444}.pf-widget-has-recommend .pf-content-unit .pf-content-unit-meta h4,.pf-widget-variant-3 .pf-content-unit .pf-content-unit-meta h4{font-weight:500;margin:0 0 5px;line-height:1.4;color:#444}.pf-widget-has-recommend .pf-content-unit .pf-content-unit-meta p,.pf-widget-variant-3 .pf-content-unit .pf-content-unit-meta p{line-height:1.3;color:#888}.pf-widget-has-recommend .pf-content-unit .pf-content-unit-img,.pf-widget-variant-3 .pf-content-unit .pf-content-unit-img{background-size:cover;background-position:center center;background-repeat:no-repeat}.pf-widget-has-recommend .pf-content-unit:not(.stack),.pf-widget-variant-3 .pf-content-unit:not(.stack){width:95%;margin:0 auto 30px}.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-img,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-img{position:absolute;display:block;height:100%;width:40%}.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-img+.pf-content-unit-meta,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-img+.pf-content-unit-meta{width:60%;min-height:135px}.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-meta,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-meta{padding:15px;display:block;margin:0 0 0 auto}.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-meta span.pf-content-unit-info,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-meta span.pf-content-unit-info{font-size:13px}.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-meta h4,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-meta h4{font-size:18px}.pf-widget-has-recommend .pf-content-unit.stack .pf-content-unit-meta h4,.pf-widget-has-recommend .pf-content-unit:not(.stack) .pf-content-unit-meta p,.pf-widget-variant-3 .pf-content-unit.stack .pf-content-unit-meta h4,.pf-widget-variant-3 .pf-content-unit:not(.stack) .pf-content-unit-meta p{font-size:14px}.pf-widget-has-recommend .pf-content-unit.stack,.pf-widget-variant-3 .pf-content-unit.stack{width:100%;display:block;text-align:left}.pf-widget-has-recommend .pf-content-unit.stack .pf-content-unit-meta p,.pf-widget-variant-3 .pf-content-unit.stack .pf-content-unit-meta p{font-size:13px}.pf-widget-has-recommend .pf-content-unit.stack .pf-content-unit-img,.pf-widget-variant-3 .pf-content-unit.stack .pf-content-unit-img{width:100%;height:135px}.pf-subscription form{width:100%;display:block;margin:0 auto}.pf-subscription form input[type=text],.pf-subscription form input[type=email]{width:100%;margin-bottom:1px}.pf-subscription form .pf-widget-btn{float:right;margin-left:5px;padding:0 16px}.pf-subscription form span{display:block;padding:2px;overflow:hidden}.pf-widget-gate .pf-widget-content,.pf-widget-modal .pf-widget-content,.pf-widget-slideout{max-height:100%;overflow-x:hidden;overflow-y:auto;box-shadow:0 4px 4px -4px rgba(0,0,0,.5)}.pf-form input.pf-field-half-width,.pf-form select.pf-field-half-width,.pf-sitegate input.pf-field-half-width,.pf-sitegate select.pf-field-half-width{width:49%;display:block;clear:none;float:left}.pf-form input.pf-field-half-width.right,.pf-form select.pf-field-half-width.right,.pf-sitegate input.pf-field-half-width.right,.pf-sitegate select.pf-field-half-width.right{float:right}.pf-form .pf-widget-btn,.pf-sitegate .pf-widget-btn{clear:both;margin-top:5px}.pf-form form.pf-custom-form>div,.pf-sitegate form.pf-custom-form>div{text-align:left;margin-bottom:10px}.pf-form .pf-form-label,.pf-sitegate .pf-form-label{font-weight:700}.pf-form .pf-widget-checkbox,.pf-form .pf-widget-radio,.pf-sitegate .pf-widget-checkbox,.pf-sitegate .pf-widget-radio{display:block;padding:4px}.pf-form .pf-widget-checkbox input,.pf-form .pf-widget-radio input,.pf-sitegate .pf-widget-checkbox input,.pf-sitegate .pf-widget-radio input{margin-right:10px}.pf-form .pf-has-label,.pf-sitegate .pf-has-label{margin-top:7px}.pf-form div.pf-form-required,.pf-form div.pf-form-required-validation,.pf-sitegate div.pf-form-required,.pf-sitegate div.pf-form-required-validation{position:relative}.pf-form div.pf-form-required-validation.bad-validation [data-required=true]:not(.pf-has-label),.pf-form div.pf-form-required-validation.bad-validation [data-validate=true]:not(.pf-has-label),.pf-form div.pf-form-required-validation.invalid [data-required=true]:not(.pf-has-label),.pf-form div.pf-form-required-validation.invalid [data-validate=true]:not(.pf-has-label),.pf-form div.pf-form-required.bad-validation [data-required=true]:not(.pf-has-label),.pf-form div.pf-form-required.bad-validation [data-validate=true]:not(.pf-has-label),.pf-form div.pf-form-required.invalid [data-required=true]:not(.pf-has-label),.pf-form div.pf-form-required.invalid [data-validate=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required-validation.bad-validation [data-required=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required-validation.bad-validation [data-validate=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required-validation.invalid [data-required=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required-validation.invalid [data-validate=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required.bad-validation [data-required=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required.bad-validation [data-validate=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required.invalid [data-required=true]:not(.pf-has-label),.pf-sitegate div.pf-form-required.invalid [data-validate=true]:not(.pf-has-label){border:1px solid #f12626;margin:-1px}.pf-form div.pf-form-required-validation.pf-widget-checkbox-group [data-required=true],.pf-form div.pf-form-required-validation.pf-widget-radio-group,.pf-form div.pf-form-required.pf-widget-checkbox-group [data-required=true],.pf-form div.pf-form-required.pf-widget-radio-group,.pf-sitegate div.pf-form-required-validation.pf-widget-checkbox-group [data-required=true],.pf-sitegate div.pf-form-required-validation.pf-widget-radio-group,.pf-sitegate div.pf-form-required.pf-widget-checkbox-group [data-required=true],.pf-sitegate div.pf-form-required.pf-widget-radio-group{border-radius:3px}.pf-form div.pf-form-required-validation.bad-validation div.pf-invalid-flag,.pf-form div.pf-form-required-validation.invalid div.pf-required-flag,.pf-form div.pf-form-required.bad-validation div.pf-invalid-flag,.pf-form div.pf-form-required.invalid div.pf-required-flag,.pf-sitegate div.pf-form-required-validation.bad-validation div.pf-invalid-flag,.pf-sitegate div.pf-form-required-validation.invalid div.pf-required-flag,.pf-sitegate div.pf-form-required.bad-validation div.pf-invalid-flag,.pf-sitegate div.pf-form-required.invalid div.pf-required-flag{opacity:1;margin-left:10px}.pf-form div.pf-form-required div.pf-invalid-flag,.pf-form div.pf-form-required div.pf-required-flag,.pf-form div.pf-form-required-validation div.pf-invalid-flag,.pf-form div.pf-form-required-validation div.pf-required-flag,.pf-sitegate div.pf-form-required div.pf-invalid-flag,.pf-sitegate div.pf-form-required div.pf-required-flag,.pf-sitegate div.pf-form-required-validation div.pf-invalid-flag,.pf-sitegate div.pf-form-required-validation div.pf-required-flag{font-size:12px;font-weight:700;position:absolute;padding:3px 7px;display:inline;width:auto;color:#fff;background-color:#f12626;box-shadow:0 4px 4px -4px rgba(0,0,0,.5);margin-left:5px;opacity:0}.pf-form div.pf-form-required div.pf-invalid-flag span,.pf-form div.pf-form-required div.pf-required-flag span,.pf-form div.pf-form-required-validation div.pf-invalid-flag span,.pf-form div.pf-form-required-validation div.pf-required-flag span,.pf-sitegate div.pf-form-required div.pf-invalid-flag span,.pf-sitegate div.pf-form-required div.pf-required-flag span,.pf-sitegate div.pf-form-required-validation div.pf-invalid-flag span,.pf-sitegate div.pf-form-required-validation div.pf-required-flag span{position:absolute;width:0;height:0;top:6px;left:-6px;border-top:4px solid transparent;border-bottom:4px solid transparent;content:'';border-right:6px solid #f12626}.pf-form div.pf-form-required span.required,.pf-form div.pf-form-required-validation span.required,.pf-sitegate div.pf-form-required span.required,.pf-sitegate div.pf-form-required-validation span.required{color:#f12626}.pf-form.pf-widget-slideout input.pf-field-half-width,.pf-form.pf-widget-slideout select.pf-field-half-width,.pf-sitegate.pf-widget-slideout input.pf-field-half-width,.pf-sitegate.pf-widget-slideout select.pf-field-half-width{width:48%}.pf-widget-gate,.pf-widget-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.5);z-index:9999;text-align:center}.pf-widget-gate .pf-va-middle,.pf-widget-modal .pf-va-middle{display:table-cell;vertical-align:middle}.pf-widget-gate .pf-widget-btn,.pf-widget-modal .pf-widget-btn{font-size:16px;line-height:45px}.pf-widget-gate .pf-widget-footer,.pf-widget-modal .pf-widget-footer{text-align:center}.pf-widget-slideout .pf-widget-footer,.pf-widget-slideout.pf-widget-variant-1 .pf-widget-content .pf-widget-headline,.pf-widget-slideout.pf-widget-variant-1 .pf-widget-content .pf-widget-message,.pf-widget-slideout:not(.pf-widget-has-image) .pf-widget-content .pf-widget-headline,.pf-widget-slideout:not(.pf-widget-has-image) .pf-widget-content .pf-widget-message,.pf-widget-slideout:not(.pf-widget-has-recommend) .pf-widget-content .pf-widget-headline,.pf-widget-slideout:not(.pf-widget-has-recommend) .pf-widget-content .pf-widget-message{text-align:left}.pf-widget-gate .pf-widget-container,.pf-widget-modal .pf-widget-container{display:table;width:100%;height:100%;position:relative;top:-100vh}.pf-widget-gate .pf-widget-content,.pf-widget-modal .pf-widget-content{background-color:#f1f1f1;color:#888;width:100%;position:fixed;max-width:780px;margin:0 auto;padding:40px;border-radius:5px;top:50%;left:50%;transform:translate(-50%,-50%)}.pf-widget-gate .pf-widget-headline,.pf-widget-modal .pf-widget-headline{font-size:28px}.pf-widget-gate .pf-widget-message,.pf-widget-modal .pf-widget-message{font-size:18px;margin:0 0 30px}.pf-widget-gate.pf-subscription.pf-widget-has-branding span,.pf-widget-modal.pf-subscription.pf-widget-has-branding span,.pf-widget-slideout.pf-subscription.pf-widget-has-branding span{margin-bottom:13px}.pf-widget-gate .pf-widget-body,.pf-widget-modal .pf-widget-body{display:table;width:100%}.pf-widget-gate form input[type=text],.pf-widget-gate form input[type=email],.pf-widget-gate form input[type=date],.pf-widget-gate form select,.pf-widget-gate form textarea,.pf-widget-modal form input[type=text],.pf-widget-modal form input[type=email],.pf-widget-modal form input[type=date],.pf-widget-modal form select,.pf-widget-modal form textarea{font-size:16px}.pf-widget-gate form input[type=text],.pf-widget-gate form input[type=email],.pf-widget-gate form input[type=date],.pf-widget-gate form select,.pf-widget-modal form input[type=text],.pf-widget-modal form input[type=email],.pf-widget-modal form input[type=date],.pf-widget-modal form select{height:45px}.pf-widget-gate.opened .pf-widget-container,.pf-widget-modal.opened .pf-widget-container{top:0}.pf-widget-gate.pf-widget-has-image .pf-widget-headline,.pf-widget-gate.pf-widget-variant-2 .pf-widget-headline,.pf-widget-modal.pf-widget-has-image .pf-widget-headline,.pf-widget-modal.pf-widget-variant-2 .pf-widget-headline{margin-top:140px}.pf-widget-gate.pf-widget-has-image .pf-widget-img,.pf-widget-gate.pf-widget-variant-2 .pf-widget-img,.pf-widget-modal.pf-widget-has-image .pf-widget-img,.pf-widget-modal.pf-widget-variant-2 .pf-widget-img{float:none;position:absolute;top:20px;left:50%;margin-left:-70px;width:140px;height:140px}.pf-widget-gate.pf-subscription .pf-widget-btn,.pf-widget-modal.pf-subscription .pf-widget-btn{margin-top:2px}.pf-widget-slideout{bottom:50px;width:350px;border-radius:4px;top:auto;position:fixed;transition:translate .3s ease-in-out,opacity .3s,visibility .3s}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-gate .pf-widget-content,.pf-widget-modal .pf-widget-content{padding:40px 20px}.pf-widget-slideout{width:100%;max-width:350px}}.pf-widget-slideout .pf-widget-message{margin:0 0 20px}.pf-widget-slideout .pf-widget-btn{line-height:40px}.pf-widget-slideout .pf-widget-content{padding:30px;width:100%}.pf-widget-slideout .pf-widget-headline{font-size:20px}.pf-widget-slideout.pf-position-bottom-left,.pf-widget-slideout.pf-position-left,.pf-widget-slideout.pf-position-top-left{left:50px;translate:calc(-100% - 50px)}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-slideout.pf-position-bottom-left,.pf-widget-slideout.pf-position-left,.pf-widget-slideout.pf-position-top-left{bottom:0;left:0;translate:-100%}}.pf-widget-slideout.pf-position-bottom-right,.pf-widget-slideout.pf-position-right,.pf-widget-slideout.pf-position-top-right{left:auto;right:50px;translate:calc(100% + 50px)}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-slideout.pf-position-bottom-right,.pf-widget-slideout.pf-position-right,.pf-widget-slideout.pf-position-top-right{bottom:0;right:0;translate:100%}}.pf-widget-slideout.pf-position-left,.pf-widget-slideout.pf-position-right{bottom:auto;top:50%;transform:translateY(-50%);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%)}.pf-widget-slideout.pf-position-top-left,.pf-widget-slideout.pf-position-top-right{bottom:auto;top:50px}.pf-widget-slideout.pf-origin-bottom{bottom:50px;translate:0 calc(100% + 50px)}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-slideout.pf-position-top-left,.pf-widget-slideout.pf-position-top-right{top:0}.pf-widget-slideout.pf-origin-bottom{bottom:0;translate:0 100%}}.pf-widget-slideout.opened{translate:0}.pf-widget-slideout .branding svg{bottom:-22px;right:-20px;width:100px}.pf-widget-bar .pf-bar-content,.pf-widget-inline.pf-widget-has-image .pf-widget-content,.pf-widget-inline.pf-widget-variant-2 .pf-widget-content,.pf-widget-slideout.pf-widget-has-image .pf-widget-content,.pf-widget-slideout.pf-widget-variant-2 .pf-widget-content{text-align:center}.pf-widget-slideout.pf-widget-has-image .pf-widget-content .pf-widget-headline,.pf-widget-slideout.pf-widget-variant-2 .pf-widget-content .pf-widget-headline{margin-top:110px}.pf-widget-slideout.pf-widget-has-image .pf-widget-img,.pf-widget-slideout.pf-widget-variant-2 .pf-widget-img{width:100px;height:100px;float:none;position:absolute;top:20px;left:50%;margin-left:-50px}.pf-widget-slideout.pf-form{width:370px}.pf-widget-slideout form:not(.pf-custom-form) input[type=email].invalid,.pf-widget-slideout form:not(.pf-custom-form) input[type=text].invalid{margin:-1px -1px 9px}.pf-push-down.opened{margin-top:59px}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-slideout.pf-form{width:100%;max-width:370px}.pf-push-down.opened{margin-top:0}}.pf-widget-bar{height:auto;padding:10px 0;min-height:59px;left:0;right:0;box-shadow:0 4px 4px -4px rgba(0,0,0,.5);transition:translate .3s ease-in-out,opacity .3s,visibility .3s}.pf-widget-bar .pf-widget-body{margin:0 20px;float:left}.pf-widget-bar .pf-widget-close{top:50%;position:absolute;margin-top:-16px;right:20px;line-height:1;margin-right:0}.pf-widget-bar .pf-widget-btn{line-height:35px}.pf-widget-bar .pf-bar-content{padding:0 40px}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-bar .pf-bar-content{padding:0 40px 0 20px}}.pf-widget-bar .pf-bar-content .pf-widget-message{text-overflow:ellipsis;max-width:100%;overflow:hidden;display:inline-block;white-space:normal;margin:6px 16px}.pf-widget-bar .pf-bar-content input[type=email],.pf-widget-bar .pf-bar-content input[type=text]{margin:0 1px;max-width:200px}.pf-widget-bar .pf-bar-content form:not(.pf-custom-form) input[type=email],.pf-widget-bar .pf-bar-content form:not(.pf-custom-form) input[type=text]{margin-bottom:0}.pf-widget-bar .pf-bar-content form:not(.pf-custom-form) input[type=email].invalid,.pf-widget-bar .pf-bar-content form:not(.pf-custom-form) input[type=text].invalid{margin:0}.pf-widget-bar .pf-bar-content>*{display:inline-block;vertical-align:middle}.pf-widget-bar.pf-position-bottom-absolute,.pf-widget-bar.pf-position-top-absolute{position:absolute}.pf-widget-bar.pf-position-top-absolute,.pf-widget-bar.pf-position-top-fixed{top:0;translate:0 -100%}.pf-widget-bar.pf-position-top-absolute .pf-bar-content,.pf-widget-bar.pf-position-top-fixed .pf-bar-content{padding-top:0}.pf-widget-bar.pf-position-bottom-fixed{bottom:0;translate:0 100%}.pf-widget-bar.pf-position-bottom-fixed,.pf-widget-bar.pf-position-top-fixed{position:fixed}.pf-widget-bar.opened.pf-position-bottom-fixed,.pf-widget-bar.opened.pf-position-top-absolute,.pf-widget-bar.opened.pf-position-top-fixed{translate:0}.pf-widget-bar.pf-widget-has-image .pf-widget-img,.pf-widget-bar.pf-widget-variant-2 .pf-widget-img{height:35px;width:35px;top:50%;margin-top:-17.5px;position:absolute}.pf-widget-bar.pf-message .pf-widget-btn,.pf-widget-bar.pf-subscription form .pf-widget-btn{margin-top:2px}@media screen and (max-width:736px),screen and (max-height:640px){.pf-widget-bar.pf-widget-has-image .pf-widget-img,.pf-widget-bar.pf-widget-variant-2 .pf-widget-img{display:none}}.pf-widget-bar.pf-subscription form{width:auto}.pf-widget-bar.pf-subscription form input[type=email]{height:35px}.pf-widget-button{position:fixed;box-shadow:1px 0 4px 0 rgba(0,0,0,.5);border-radius:2px}.pf-widget-button .pf-widget-message{border:0;background-color:transparent;line-height:42px;padding:0 16px 5px;margin:0;font-weight:700;display:block;cursor:pointer;overflow:hidden;max-width:150px;white-space:nowrap;text-overflow:ellipsis;color:#888}.pf-widget-button.pf-position-left{transform-origin:left bottom;transform:rotate(90deg);left:-50px}.pf-widget-button.pf-position-right{box-shadow:-1px 0 4px 0 rgba(0,0,0,.5);transform-origin:right bottom;transform:rotate(-90deg);right:-50px}.pf-widget-button.pf-position-left,.pf-widget-button.pf-position-right{top:10%}.pf-widget-button.pf-position-bottom-left,.pf-widget-button.pf-position-top-left{left:42px}.pf-widget-button.pf-position-bottom-right,.pf-widget-button.pf-position-top-right{right:42px}.pf-widget-button.pf-position-bottom-left,.pf-widget-button.pf-position-bottom-right{bottom:-50px}.pf-widget-button.pf-position-top-left,.pf-widget-button.pf-position-top-right{top:-50px}.pf-widget-button.pf-position-top-left .pf-widget-message,.pf-widget-button.pf-position-top-right .pf-widget-message{padding:5px 16px 0}.pf-widget-button.opened.pf-position-left{left:-6px}.pf-widget-button.opened.pf-position-left:hover{left:-1px}.pf-widget-button.opened.pf-position-right{right:-6px}.pf-widget-button.opened.pf-position-right:hover{right:-1px}.pf-widget-button.opened.pf-position-bottom-left,.pf-widget-button.opened.pf-position-bottom-right{bottom:-6px;box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.pf-widget-button.opened.pf-position-bottom-left:hover,.pf-widget-button.opened.pf-position-bottom-right:hover{bottom:-1px}.pf-widget-button.opened.pf-position-top-left,.pf-widget-button.opened.pf-position-top-right{top:-6px;box-shadow:0 1px 4px 0 rgba(0,0,0,.5)}.pf-widget-button.opened.pf-position-top-left:hover,.pf-widget-button.opened.pf-position-top-right:hover{top:-1px}.pf-widget-inline{padding:20px;border-radius:2px;box-shadow:0 4px 4px -4px rgba(0,0,0,.5);transition:all 0s;position:relative}.pf-widget-inline .pf-widget-message{margin:0 0 20px}.pf-widget-inline .pf-widget-btn{transition:all 0s}.pf-widget-inline.pf-widget-has-image .pf-widget-content .pf-widget-headline,.pf-widget-inline.pf-widget-variant-2 .pf-widget-content .pf-widget-headline{margin-top:110px}.pf-widget-inline.pf-widget-has-image .pf-widget-img,.pf-widget-inline.pf-widget-variant-2 .pf-widget-img{width:100px;height:100px;float:none;position:absolute;top:20px;left:50%;margin-left:-50px}.pf-widget-inline.pf-subscription .pf-widget-btn{line-height:39px}.pf-widget-inline.pf-subscription.pf-widget-has-branding span{margin-bottom:35px}.pf-widget-inline.pf-widget-has-recommend .pf-content-unit,.pf-widget-inline.pf-widget-variant-3 .pf-content-unit{max-width:650px}.pf-widget-inline.pf-widget-has-recommend .pf-content-unit.stack,.pf-widget-inline.pf-widget-variant-3 .pf-content-unit.stack{margin:0 auto;max-width:400px}.pf-widget-inline .branding{position:relative}.pf-widget-inline .branding svg{position:absolute;bottom:-10px;right:-10px}.pf-widget-inline form:not(.pf-custom-form) input[type=email].invalid,.pf-widget-inline form:not(.pf-custom-form) input[type=text].invalid{margin:-1px -1px 9px} \ No newline at end of file diff --git a/dist/pathfora.min.js b/dist/pathfora.min.js index 04afc56..8f81822 100644 --- a/dist/pathfora.min.js +++ b/dist/pathfora.min.js @@ -1 +1 @@ -!function(){"use strict";function o(o){return o.generic={className:"pathfora",branding:!1,responsive:!0,headline:"",themes:{dark:{background:"#333",headline:"#fefefe",text:"#aaa",close:"#888",actionText:"#fff",actionBackground:"#444",cancelText:"#888",cancelBackground:"#333"},light:{background:"#f1f1f1",headline:"#444",text:"#888",close:"#bbb",actionText:"#444",actionBackground:"#fff",cancelText:"#bbb",cancelBackground:"#f1f1f1"}},displayConditions:{showOnInit:!0,showOnExitIntent:!1,showDelay:0,hideAfter:0,displayWhenElementVisible:"",scrollPercentageToDisplay:0}},o.message={layout:"modal",position:"",okMessage:"Confirm",cancelMessage:"Cancel",okShow:!0,cancelShow:!0},o.subscription={layout:"modal",position:"",placeholders:{email:"Email"},okMessage:"Confirm",cancelMessage:"Cancel",okShow:!0,cancelShow:!0},o.form={layout:"modal",position:"",placeholders:{name:"Name",title:"Title",email:"Email",message:"Message",company:"Company",phone:"Phone Number",country:"Country",referralEmail:"Referral Email"},required:{name:!0,email:!0},fields:{company:!1,phone:!1,country:!1,referralEmail:!1},okMessage:"Send",okShow:!0,cancelMessage:"Cancel",cancelShow:!0},o.sitegate={layout:"gate",position:"",placeholders:{name:"Name",title:"Title",email:"Email",message:"Message",company:"Company",phone:"Phone Number",country:"Country",referralEmail:"Referral Email"},required:{name:!0,email:!0},fields:{message:!1,phone:!1,country:!1,referralEmail:!1},okMessage:"Submit",okShow:!0,cancelShow:!1,showForm:!0},o}function t(o){return o.delayedWidgets={},o.openedWidgets=[],o.initializedWidgets=[],o.prioritizedWidgets=[],o.readyWidgets=[],o.triggeredWidgets={},o.dependentDataWidgets=[],o}function e(o){return o.pageViews=0,o.timeSpentOnPage=0,o.closedWidgets=[],o.completedActions=[],o.cancelledActions=[],o.displayedWidgets=[],o.abTestingGroups=[],o}function i(){for(var o=[],t=0;t1){var i=1/e;o=o.map(function(o){return o*i})}return{groups:o,groupsNumber:o.length}}var n="1.2.21",a="en-US",p={},l="PathforaRecommend_",r="PathforaUnlocked_",u="PathforaImpressions_",s="PathforaTotalImpressionsSince_",d="PathforaConfirm_",c="PathforaCancel_",v="PathforaClosed_",f="PathforaTest_",g="PathforaPageView",m="\\{{2}.*?\\}{2}",h=["msg","headline","image","confirmAction.callback"],y="ordered",b="entityField",w="segment",S={modal:"",slideout:"bottom-left",button:"top-left",bar:"top-absolute"},C="widgetInitialized",A="widgetLoaded",M="buttonClicked",E="formSubmitted",T="modalOpened",I="modalClosed",k="modalConfirm",B=t({}),N=o({}),G=e({}),P={100:i(100),"50/50":i(50,50),"80/20":i(80,20)},L={subscription:{bar:"

",gate:"",inline:"

",modal:"",slideout:"

"},sitegate:{gate:""},message:{bar:"",button:"",gate:"",inline:"

",modal:"",slideout:""},includes:{},form:{gate:"",inline:"

",modal:"",slideout:"

"},assets:{lytics:"lytics"}},x=window,R=x.document;function D(o){var t,e=this,i=R.documentElement.doScroll,n="DOMContentLoaded";(i?/^loaded|^c/:/^loaded|^i|^c/).test(R.readyState)?(e.DOMLoaded=!0,o()):R.addEventListener(n,t=function(){R.removeEventListener(n,t),e.DOMLoaded=!0,o()})}function W(o){return String(o).replace(/[\\^$*+?.()|[\]{}]/g,"\\$&")}function O(o,t){var e=new RegExp(["(^|\\b)",W(t.split(" ").join("|")),"(\\b|$)"].join(""),"gi");o.className=o.className.replace(e," ")}function H(o,t){O(o,t),o.className=[o.className,t].join(" ")}function K(o,t){return new RegExp("(^| )"+W(t)+"( |$)","gi").test(o.className)}function U(o){try{return decodeURIComponent(o)}catch{return o}}function q(o){var t=R.cookie,e=t.match("(^|;)\\s*"+encodeURIComponent(W(o))+"\\s*=\\s*([^;]+)");return null==e&&(e=t.match("(^|;)\\s*"+W(o)+"\\s*=\\s*([^;]+)")),null!=e?U(e.pop()):null}function z(o,t,e){var i;i=e?"; expires="+e.toUTCString():"; expires=0",R.cookie=[encodeURIComponent(o),"=",encodeURIComponent(t),i,"; path = /"].join("")}function F(o){z(o,"",new Date("Thu, 01 Jan 1970 00:00:01 GMT"))}var V="$",Z="@",j="PATHFORA";function J(o){try{return JSON.parse(o)}catch(o){}}function Y(o){return Boolean(o[Z])&&Date.parse(o[Z])0&&e.push("&"),e.push(i+"[]="+o[i][n]));else e.push(i+"="+o[i]);t++}return e.join("")}function eo(o,t){t||(t={});var e=o.length,i=[],n=t.usePlus||!1,a=t.keepEscaped||!1;function p(o){return/[0-9A-Fa-f]/.test(o)}function l(o){return"0123456789ABCDEF"[o]}function r(o){return!(-1!==["#",":",";","/","?","$","&","+",",","@","="].indexOf(o))&&function(o,t){return!!(o[t>>5]&1<<(31&t))}([4294967295,4160751869,2013265921,3087007745,4294967295,4294967295,4294967295,4294967295],o.charCodeAt(0))}for(var u=0;u=u+2&&p(o[u+1])&&p(o[u+2])?i.push("%"):r(s)?i.push("%",l(d>>4),l(15&d)):i.push(s)}return i.join("")}function io(o,t){for(var e in t)t.hasOwnProperty(e)&&"object"==typeof t[e]&&null!==t[e]&&!Array.isArray(t[e])?t.hasOwnProperty(e)&&(void 0===o[e]&&(o[e]={}),io(o[e],t[e])):t.hasOwnProperty(e)&&(o[e]=t[e])}function no(o,t,e){for(var i=o,n=t.split("."),a=0;a()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/g.test(o)}var ro={addClass:H,hasClass:K,removeClass:O,readCookie:q,saveCookie:z,deleteCookie:F,updateLegacyCookies:function(){var o=[l,r,u,d,c,v,f,g],t=0,e=function(e){return 0===e.trim().indexOf(o[t])},i=function(o){var t=o.trim().split("=");if(2===t.length){var e=t[0],i=t[1];F(e),$(e,U(i))}},n=function(o){var t=sessionStorage.getItem(o);X(t)&&(sessionStorage.removeItem(o),sessionStorage.setItem(encodeURIComponent(o),encodeURIComponent(t)))};for(t=0;tt}},gte:function(o,t){return function(e){return parseInt(e[o],10)>=t}},lt:function(o,t){return function(e){return parseInt(e[o],10)0&&o.global.duration>0){var g=function(){$(p,"0|"+f,t.expiration)};(n=oo(p))?void 0!==(e=n.split("|"))[1]&&Math.abs(e[1]-f)/1e3>=o.global.duration&&g():g()}if(l||(l=0),l>=o.widget.session)return!1;if(v){if(e=v.split("|"),i=parseInt(e[0],10),void 0!==e[1]){if(o.widget.buffer>0&&Math.abs(e[1]-f)/1e30&&i%o.widget.total===0&&Math.abs(e[1]-f)/1e3=o.widget.total&&void 0===o.widget.duration)return!1;if(o.global.session>0)for(var m=0;m<~~sessionStorage.length;m++){var h=sessionStorage.key(m);void 0!==h&&h.includes(u)&&(r+=~~sessionStorage.getItem(h))}if(r>=o.global.session)return!1;if(o.global.total>0||o.global.buffer>0){for(var y=0;y<~~localStorage.length;y++){var b=localStorage.key(y);void 0!==b&&b.includes(u)&&(e=oo(b).split("|"),d+=i=parseInt(e[0],10),void 0!==e[1]&&(c=Math.max(e[1],c)))}if(c>0&&o.global.buffer>0&&Math.abs(c-f)/1e30&&(e=(n=oo(p)).split("|"))[0]>=o.global.total)&&!(d>=o.global.total&&void 0===o.global.duration)}function go(o,t){var e,i;if("object"==typeof jstag&&x.jstag.send(t.censorTrackingKeys?function(o,t){return Object.keys(o).filter(function(o){return!t.some(function(t){return"string"==typeof t?o===t:t.test(o)})}).reduce(function(t,e){return t[e]=o[e],t},{})}(o,t.censorTrackingKeys):o),!0===x.pathfora.enableGA&&"function"==typeof x.ga&&"function"==typeof x.ga.getAll){e=o["pf-widget-action"]||o["pf-widget-event"],i=x.ga.getAll();for(var n=0;n0&&(p["pf-widget-content"]=t.content[0]),o){case"show":G.displayedWidgets.push(p);break;case"close":p["pf-widget-action"]=!!t.closeAction&&t.closeAction.name||"close",G.closedWidgets.push(p);break;case"confirm":e&&K(e,"pf-content-unit")?p["pf-widget-action"]="content recommendation":(p["pf-widget-action"]=!!t.confirmAction&&t.confirmAction.name||"default confirm",G.completedActions.push(p));break;case"cancel":p["pf-widget-action"]=!!t.cancelAction&&t.cancelAction.name||"default cancel",G.cancelledActions.push(p);break;case"success.confirm":p["pf-widget-action"]=!!t.formStates&&!!t.formStates.success&&!!t.formStates.success.confirmAction&&t.formStates.success.confirmAction.name||"success confirm",G.completedActions.push(p);break;case"success.cancel":p["pf-widget-action"]=!!t.formStates&&!!t.formStates.success&&!!t.formStates.success.cancelAction&&t.formStates.success.cancelAction.name||"success cancel",G.cancelledActions.push(p);break;case"error.confirm":p["pf-widget-action"]=!!t.formStates&&!!t.formStates.error&&!!t.formStates.error.confirmAction&&t.formStates.error.confirmAction.name||"error confirm",G.completedActions.push(p);break;case"error.cancel":p["pf-widget-action"]=!!t.formStates&&!!t.formStates.error&&!!t.formStates.error.cancelAction&&t.formStates.error.cancelAction.name||"error cancel",G.cancelledActions.push(p);break;case"submit":case"unlock":for(n in K(e,"pf-custom-form")&&(p["pf-custom-form"]={}),e.children)if(e.children.hasOwnProperty(n))if(K(i=e.children[n],"pf-widget-radio-group")||K(i,"pf-widget-checkbox-group")){var l=[],u="",s=i.querySelectorAll("input");for(a=0;an)&&!(e&&i0&&setTimeout(function(){bo(t.id,!0)},i)}}function So(o,t,e){"function"==typeof t.onModalClose&&t.onModalClose(I,{widget:o,config:t,event:e})}function Co(o,t){var e,i=oo(o),n=Date.now();i?(i=i.split("|"),e=Math.min(parseInt(i[0],10),9998)+1):e=1,$(o,e+"|"+n,t)}function Ao(o,t,e,i){var n,a,p,l;switch(t){case"close":n=v,a=I,p=e.closeAction,l=!0;break;case"cancel":case"success.cancel":case"error.cancel":n=c,p=e.cancelAction,l="inline"!==e.layout,"success.cancel"===t&&(p=e.formStates.success.cancelAction),"error.cancel"===t&&(p=e.formStates.error.cancelAction);break;case"confirm":case"success.confirm":case"error.confirm":n=d,l="inline"!==e.layout,"success.confirm"===t&&(p=e.formStates.success.confirmAction),"error.confirm"===t&&(p=e.formStates.error.confirmAction)}o.onmouseenter=function(o){mo("hover",e,o.target)},o.onclick=function(o){mo(t,e),Co(n+i.id,e.expiration),"object"==typeof p&&(!1===p.close&&(l=!1),"function"==typeof p.callback&&p.callback(a,{widget:i,config:e,event:o})),l&&(bo(i.id,!0),So(i,e,o))}}function Mo(o,t){var e,i,n,a,p,l,r=R.createElement("div"),u=o.hasOwnProperty("groupType");if(u)r.className="pf-widget-"+o.type,e=R.createElement("div");else{switch(o.type){case"email":(e=R.createElement("input")).setAttribute("type","email");break;case"us-postal-code":(e=R.createElement("input")).setAttribute("type","text"),o.pattern||(o.pattern="^[0-9]{5}$");break;case"text":case"input":(e=R.createElement("input")).setAttribute("type","text");break;case"date":(e=R.createElement("input")).setAttribute("type","date");break;default:e=R.createElement(o.type)}if(o.pattern&&e.setAttribute("enforcePattern",o.pattern),e.setAttribute("name",o.name),e.setAttribute("id",o.name),"textarea"===o.type&&e.setAttribute("rows",5),"date"===o.type){var s=new Date,d=s.getTimezoneOffset(),c=new Date(s.getTime()-60*d*1e3),v=o.maxDate?"today"===o.maxDate?c:new Date(o.maxDate):null,f=o.minDate?"today"===o.minDate?c:new Date(o.minDate):null;null!=v&&e.setAttribute("max",v.toISOString().split("T")[0]),null!=f&&e.setAttribute("min",f.toISOString().split("T")[0])}}if(o.label&&(u?((a=R.createElement("span")).id=o.name,e.setAttribute("aria-labelledby",o.name)):(a=R.createElement("label")).setAttribute("for",o.name),a.innerHTML=o.label,a.className="pf-form-label",H(e,"pf-has-label"),!0===o.required&&(a.innerHTML+=' *'),r.appendChild(a)),!0===o.required&&(H(r,"pf-form-required"),e.setAttribute("data-required","true"),o.label&&((p=R.createElement("div")).className="pf-required-flag",p.innerHTML="required",l=R.createElement("span"),p.appendChild(l),r.appendChild(p))),o.pattern&&(e.setAttribute("data-validate","true"),H(r,"pf-form-required-validation")),"date"!==o.type&&"email"!==o.type||(H(r,"pf-form-required"),e.setAttribute("data-validate","true"),o.label&&((p=R.createElement("div")).className="pf-invalid-flag",p.innerHTML="invalid",l=R.createElement("span"),p.appendChild(l),r.appendChild(p))),o.placeholder){if("select"===o.type){var g=R.createElement("option");g.setAttribute("value",""),g.innerHTML=o.placeholder,e.appendChild(g)}else e.placeholder=o.placeholder;o.label||e.setAttribute("aria-label",o.placeholder)}if(o.values)for(i=0;i=0;n--)r[n].innerHTML=t.headline;if(t.image){var g=R.createElement("img");g.src=t.image,g.className="pf-widget-img",g.alt="","button"===t.layout||("modal"===t.layout||"inline"===t.layout?a.appendChild(g):u.appendChild(g))}switch(t.type){case"sitegate":case"form":if(t.formElements&&t.formElements.length){var m=o.querySelector("form");H(m,"pf-custom-form");for(var h=m.children,y=0;y0&&mo("form_start",t,o.target)},s=function(o){mo("focus",t,o.target)};for(var c in n.childNodes)if(n.children.hasOwnProperty(c)){var f=n.children[c];void 0!==f.getAttribute&&null!==f.getAttribute("name")&&(f.onfocus=s,f.onchange=u)}i=function(o){o.preventDefault();var t,e,i,a=!0,p=Array.prototype.slice.call(n.querySelectorAll("[data-required=true]")),l=Array.prototype.slice.call(n.querySelectorAll("[data-validate=true]"));for(t=0;t0&&(new RegExp(c).test(e.value)||(a=!1,d=!1)),d||(H(i,"bad-validation"),e&&0===t&&e.focus())}}else e.hasAttribute("data-validate")&&(O(e,"bad-validation"),"email"!==e.getAttribute("type")||lo(e.value)||""===e.value||(a=!1,H(e,"bad-validation"),e&&0===t&&e.focus()))}return a}}switch(t.layout){case"button":"function"==typeof t.onClick&&(e=function(e){t.onClick(M,{widget:o,config:t,event:e})});break;case"modal":t.listeners.escape={type:"keydown",target:document,fn:function(e){27===(e=e||window.event).keyCode&&(mo("close",t),Co(v+o.id,t.expiration),bo(o.id,!0),So(o,t,e))}}}l&&Ao(l,"close",t,o),p&&Ao(p,"cancel",t,o),a&&(a.onmouseenter=function(o){mo("hover",t,o.target)},a.onclick=function(a){var p,l,r=!0;if("function"==typeof i){switch(t.type){case"form":l="gate"===t.layout?"unlock":"submit";break;case"subscription":l="subscribe"}if(!l||!i(a))return;n&&(mo(l,t,n),p=Array.prototype.slice.call(n.querySelectorAll("input, textarea, select")).filter(function(o){return!o.type||"checkbox"!==o.type&&"radio"!==o.type||o.checked}).map(function(o){return{name:o.name||o.id,value:o.value}}),"function"==typeof t.onSubmit&&t.onSubmit(E,{widget:o,config:t,event:a,data:p}))}if(mo("confirm",t),Co(d+o.id,t.expiration),"function"==typeof e&&e(a),"object"==typeof t.confirmAction&&(!1===t.confirmAction.close&&(r=!1),"function"==typeof t.confirmAction.callback)){var u={widget:o,config:t,event:a};if(p&&(u.data=p),!0===t.confirmAction.waitForAsyncResponse)return void t.confirmAction.callback(k,u,function(e){wo(e,o,t)});t.confirmAction.callback(k,u)}r&&("inline"===t.layout||t.formStates&&t.formStates.success?wo(!0,o,t):(bo(o.id,!0),So(o,t,a)))}),r&&(r.onmouseenter=function(o){mo("hover",t,o.target)},r.onclick=function(e){mo("confirm",t,e.target),Co(d+o.id,t.expiration)})}(t,o),function(o,t){var e=o.querySelector(".pf-content-unit"),i=t.recommend;if(t.recommend&&t.content&&Object.keys(t.content).length>0){var n=t.content[0],l=R.createElement("div"),r=R.createElement("div"),u=R.createElement("h4"),s=R.createElement("p"),d=R.createElement("span");if(e.href=n.url,!n.image||i.display&&!1===i.display.image||(l.className="pf-content-unit-img",l.style.backgroundImage="url('"+n.image+"')",e.appendChild(l)),r.className="pf-content-unit-meta",!n.title||i.display&&!1===i.display.title||(u.innerHTML=n.title,r.appendChild(u)),n.author&&i.display&&!0===i.display.author&&(d.innerHTML="by "+n.author),n.date&&i.display&&!0===i.display.date){var c=new Date(n.date),v=i.display.locale,f=i.display.dateOptions;!v&&x.pathfora&&x.pathfora.locale?v=x.pathfora.locale:v||(v=a),!f&&x.pathfora&&x.pathfora.dateOptions?f=x.pathfora.dateOptions:f||(f=p),c=c.toLocaleDateString(v,f),d.innerHTML?d.innerHTML+=" | "+c:d.innerHTML=c}if(d.innerHTML&&(d.className="pf-content-unit-info",r.appendChild(d)),n.description&&(!i.display||!1!==i.display.description)){var g=n.description,m="modal"===t.layout?220:160;i.display?i.display.descriptionLimit||(i.display.descriptionLimit=m):i.display={descriptionLimit:m},g.length>i.display.descriptionLimit&&-1!==i.display.descriptionLimit&&(g=(g=g.substring(0,i.display.descriptionLimit)).substring(0,g.lastIndexOf(" "))+"..."),s.innerHTML=g,r.appendChild(s)}e.appendChild(r)}}(t,o),function(o,t){o.className=["pf-widget ","pf-"+t.type," pf-widget-"+t.layout,t.position?" pf-position-"+t.position:"",t.pushDown?" pf-has-push-down":"",t.origin?" pf-origin-"+t.origin:"",t.image?" pf-widget-has-image pf-widget-variant-2":"",t.recommend?" pf-widget-has-recommend pf-widget-variant-3":"",t.image||t.recommend?"":" pf-widget-variant-1"," pf-widget-layout-"+t.layout,t.theme?" pf-theme-"+t.theme:"",t.className?" "+t.className:"",t.branding?" pf-widget-has-branding":"",t.responsive?"":" pf-mobile-hide"].join("")}(t,o),Io(t,o),function(o,t){switch(t.theme){case"custom":t.colors&&ko(o,t.colors);break;case"none":break;default:t.theme&&ko(o,N.generic.themes[t.theme])}}(t,o),t}function No(o,t){if("inline"===o.layout||"modal"===o.layout&&o.recommend){var e=t.querySelector(".pf-content-unit");e&&(t.offsetWidth<650&&!K(e,"stack")?H(e,"stack"):t.offsetWidth>=650&&O(e,"stack"))}}function Go(o){var t=function(o){for(var t=0;t0))throw new Error("Could not get account id from Lytics Javascript tag.");t=x.jstag.config.cid[0]}if(!t)throw new Error("Lytics Javascript tag returned an empty account id.");o.acctid=t}}function Wo(o,t){var e,i=this;!function(o){if(o.target){o.common=o.common||[];for(var t=0;t0&&(e[n.id][w]?e[n.id][w].concat(t):e[n.id][w]=t)}B.dependentDataWidgets=e},n=function(o,t){var e=B.dependentDataWidgets,i=0;for(i=0;i0&&(sessionStorage.setItem(l+e,encodeURIComponent(JSON.stringify(a.data))),i(a.data)))}var p,r="seerid",u="_uids";window.jstag&&window.jstag.config&&""!==window.jstag.config.cookie&&(r=window.jstag.config.cookie),p=q(r),window.liosetup&&window.liosetup.field&&""!==window.liosetup.field&&window.liosetup.value&&""!==window.liosetup.value&&(u=window.liosetup.field,p=window.liosetup.value),u||p||(console.warn("Could not determine BY field and value from config"),i([]));var s=["https://c.lytics.io","api","content","recommend",o,"user",u,p],d=t.ql,c=t.ast,v=t.display;delete t.ql,delete t.ast,delete t.display;var f=to(t);if(t.display=v,!t.contentsegment&&(d&&d.raw||c))if(f.length>0?f+="&":f+="?",d&&d.raw)f+="ql="+d.raw;else{var g={table:"content",ast:c};f+="contentsegments=["+encodeURIComponent(JSON.stringify(g))+"]"}var m,h,y,b,w=s.join("/")+f;m=w,h=function(o){var t;try{t=JSON.parse(o)}catch(o){return console.warn("Could not parse json response:"+o),void i([])}if(t.data&&t.data.length>0){for(var n=0;n1&&(t.data[n].url="http://"+a)}sessionStorage.setItem(l+e,encodeURIComponent(JSON.stringify(t))),i(t.data)}else i([])},y=function(){i([])},(b=new XMLHttpRequest).onreadystatechange=function(){4===b.readyState&&200===b.status?h(b.responseText):4===b.readyState&&y(b.responseText)},b.open("GET",m),b.send()}else console.warn("Could not make recommendation - missing callback function.")}function qo(o,t,e){Ho(o)?(function(o){if("message"!==o.type)throw new Error("Unsupported widget type for content recommendation");if("slideout"!==o.layout&&"modal"!==o.layout&&"inline"!==o.layout)throw new Error("Unsupported layout for content recommendation");if(o.content&&o.content[0]&&!o.content[0].default)throw new Error("Cannot define recommended content unless it is a default")}(o),function(o,t,e){var i=t.recommend;i&&i.collection&&(i.contentsegment=t.recommend.collection,delete i.collection),Uo(o,i,t.id,function(o){if(o[0]){var i=o[0];t.content=[{title:i.title,description:i.description,url:i.url,image:i.primary_image,date:i.created,author:i.author}]}if(!t.content)throw new Error("Could not get recommendation and no default defined");e()})}(t.acctid,o,e)):e()}function zo(o,t){var e=this;B.prioritizedWidgets=[];var i=function(o,t,n){if(!(t>=o.length)){var a=o[t],p=N[a.type],l=N.generic;if(io(a,l),io(a,p),io(a,a.config),!(B.initializedWidgets.indexOf(a.id)<0))throw new Error("Cannot add two widgets with the same id");B.initializedWidgets.push(a.id),a.success&&(a.formStates||(a.formStates={}),a.formStates.success||(a.formStates.success=a.success)),Ko(a,e,function(){qo(a,e,function(){if(e.initializeWidget(a,n),n&&n.priority===y){if(B.prioritizedWidgets.length&&B.prioritizedWidgets[0].id===a.id)return;i(o,t+1,n)}})}),n&&n.priority===y||i(o,t+1,n)}};i(o,0,t)}function Fo(o,t,e,i){if(!e||!e.length)return!0;var n,a,p,l=ao(o,t),r=!1;"function"==typeof l&&(p=l.toString(),l=p.substring(p.indexOf("{")+1,p.lastIndexOf("}")),""!==(a=p.match(/function[^(]*\(([^)]*)\)/)[1])&&(n=a.split(/\W+/)),r=!0);for(var u=0;u1&&(d=s[1].trim());var c,v,f,g=s[0].trim().split(".");if(x.lio&&x.lio.data)c=x.lio.data;else if(x.jstag&&"function"==typeof x.jstag.getEntity){var m=x.jstag.getEntity();m&&m.data&&m.data.user&&(c=m.data.user)}for(v=0;v1){e=e[1].split("&");for(var i=0;i1&&"lytics_variation_preview_id"!==n[0]&&(t[n[0]]=n[1])}}return t}function Zo(o,t,e){if("exact"===e)if(Object.keys(t).length!==Object.keys(o).length)return!1;for(var i in t)if(t.hasOwnProperty(i)&&t[i]!==o[i])return!1;return!0}function jo(o,t,e,i){var n=!1;switch(typeof o){case"string":-1!==t.indexOf(eo(o.split("?")[0],{keepEscaped:!0}))&&(n=Zo(i,Vo(o),"substring"));break;case"object":if(o.match&&o.value){var a=eo(o.value,{keepEscaped:!0}),p=Vo(a);switch(o.match){case"simple":"/"===e.slice(-1)&&(e=e.slice(0,-1)),"/"===o.value.slice(-1)&&(o.value=o.value.slice(0,-1)),e===o.value&&(n=!0);break;case"exact":n=Object.keys(p).length>0&&t.split("?")[0].replace(/\/$/,"")===a.split("?")[0].replace(/\/$/,"")?Zo(i,p,o.match):t.replace(/\/$/,"")===a.replace(/\/$/,"");break;case"regex":new RegExp(o.value).test(t)&&(n=!0);break;default:n=Object.keys(p).length>0&&-1!==t.indexOf(a.split("?")[0])?Zo(i,p,o.match):-1!==t.indexOf(a)}}else console.log("invalid display conditions");break;default:console.log("invalid display conditions")}return n}var Jo=[],Yo={add:function(o,t,e){o.addEventListener(t,e),Jo.push({target:o,type:t,listener:e})},remove:function(o,t,e){o.removeEventListener(t,e)},removeAll:function(){var o=this;Jo.forEach(function(t){o.remove(t.target,t.type,t.listener)}),Jo.length=0}};function _o(o){return o.scrollListener=function(){Po(o,function(){"function"==typeof x.addEventListener?Yo.remove(x,"scroll",o.scrollListener):x.onscroll=null})},"function"==typeof x.addEventListener?Yo.add(x,"scroll",o.scrollListener):x.onscroll=o.scrollListener,!0}var Qo=null;function $o(o){return{check:function(){var t=R.scrollingElement||function(){if(Qo)return Qo;if(document.body.scrollTop)return Qo=document.body;var o=document.createElement("iframe");o.style.height="1px",document.documentElement.appendChild(o);var t=o.contentWindow.document;t.write('
x
'),t.close();var e=t.documentElement.scrollHeight>t.body.scrollHeight;return o.parentNode.removeChild(o),Qo=e?document.documentElement:document.body}();return t.scrollTop/(t.scrollHeight-t.clientHeight)*100>=o}}}function Xo(o,t){var e,i=o.displayConditions;if(o.watchers=[],o.listeners=[],o.expiration=new Date,o.expiration.setDate(o.expiration.getDate()+365),("gate"!==o.layout||"true"!==oo(r+o.id))&&!0!==o.hiddenViaABTests){if(o.pushDown){if("bar"!==o.layout||"top-fixed"!==o.position&&"top-absolute"!==o.position)throw new Error("Only top positioned bar widgets may have a pushDown property");H(R.querySelector(o.pushDown),"pf-push-down")}var n,a,p,l;o.valid=o.valid&&function(o,t){for(var e,i=!0,n=[],a=0;a0){for(var r=0;r0&&(B.dependentDataWidgets[o.id]||(B.dependentDataWidgets[o.id]={}),B.dependentDataWidgets[o.id][b]=n),i}(o,this.customData),i.date&&(o.valid=o.valid&&(n=i.date,a=!0,p=Date.now(),n.start_at&&pnew Date(n.end_at).getTime()&&(a=!1),a)),i.pageVisits&&(o.valid=o.valid&&(l=i.pageVisits,oo(g)>=l)),i.hideAfterAction&&(o.valid=o.valid&&function(o,t){var e,i=!0,n=Date.now(),a=oo(d+t.id),p=oo(c+t.id),l=oo(v+t.id);return o.confirm&&a&&(e=a.split("|"),parseInt(e[0],10)>=o.confirm.hideCount&&(i=!1),void 0!==e[1]&&Math.abs(e[1]-n)/1e3=o.cancel.hideCount&&(i=!1),void 0!==e[1]&&Math.abs(e[1]-n)/1e3=o.closed.hideCount&&(i=!1),void 0!==e[1]&&Math.abs(e[1]-n)/1e31&&(!e||"HTML"===e.nodeName)){var i=o.positions[o.positions.length-1].y,n=o.positions[o.positions.length-2].y,a=Math.abs(i-n);if(o.positions=[],i-a<=50&&i30&&t.positions.shift()},o.exitIntentTrigger=function(t){Po(o,function(){"function"==typeof R.removeEventListener?(Yo.remove(R,"mousemove",o.exitIntentListener),Yo.remove(R,"mouseout",o.exitIntentTrigger)):(R.onmousemove=null,R.onmouseout=null)},t)},"function"==typeof R.addEventListener?(Yo.add(R,"mousemove",o.exitIntentListener),Yo.add(R,"mouseout",o.exitIntentTrigger)):(R.onmousemove=o.exitIntentListener,R.onmouseout=o.exitIntentTrigger))}(o,e)),i.displayWhenElementVisible&&(e=function(o){var t={elem:R.querySelector(o),check:function(){var o=R.body.scrollTop||R.documentElement.scrollTop,e=x.innerHeight+o>=R.body.offsetHeight;return!!(t.elem.offsetTop-x.innerHeight/2<=o||e)}};return t}(i.displayWhenElementVisible),o.watchers.push(e),_o(o)),i.scrollPercentageToDisplay&&(e=$o(i.scrollPercentageToDisplay),o.watchers.push(e),_o(o)),i.manualTrigger&&(e=function(o,t){return{check:function(){return!!(o&&B.triggeredWidgets[t.id]||B.triggeredWidgets["*"])}}}(i.manualTrigger,o),o.watchers.push(e),B.readyWidgets.push(o),Lo(o)),0!==o.watchers.length||i.showOnExitIntent||o.valid&&Go(o)}}function ot(o){return o.id=po(),Bo(o)}function tt(o){if(Array.isArray(o)){var t=B.openedWidgets,e=[];t.forEach(function(t,i){-1!==o.indexOf(t)&&e.push({widget:t,index:i})}),e.forEach(function(o){var t=o.widget,e=R.getElementById(t.id);for(var i in e&&(O(e,"opened"),e.parentNode&&e.parentNode.removeChild(e)),t.listeners)if(t.listeners.hasOwnProperty(i)){var n=t.listeners[i];n.target.removeEventListener(n.type,n.fn)}}),e.sort(function(o,t){return t.index-o.index}).forEach(function(o){t.splice(o.index,1)})}else console.warn("clearWidget: widgets must be an array")}function et(o){if(Array.isArray(o)){var t=B.delayedWidgets;o.forEach(function(o){var e,i;t.hasOwnProperty(o)&&(e=o,(i=B.delayedWidgets[e])&&(clearTimeout(i),delete B.delayedWidgets[e]))})}else console.warn("cancelDelayedWidgets: widgetIds must be an array")}function it(){var i=B.openedWidgets,n=B.delayedWidgets;tt(i),et(Object.keys(n)),Yo.removeAll(),t(B),e(G),o(N),this.callbacks=[],this.acctid=""}function nt(o){if(Array.isArray(o)){var t=B.openedWidgets,e=[];t.forEach(function(t){-1!==o.indexOf(t.id)&&e.push(t)}),tt(e),et(o),o.forEach(function(o){var t=B.initializedWidgets.indexOf(o);-1!==t&&B.initializedWidgets.splice(t,1);for(var e=B.prioritizedWidgets.length-1;e>=0;e--)B.prioritizedWidgets[e].id===o&&B.prioritizedWidgets.splice(e,1);for(var i=B.readyWidgets.length-1;i>=0;i--)B.readyWidgets[i].id===o&&B.readyWidgets.splice(i,1);B.triggeredWidgets.hasOwnProperty(o)&&delete B.triggeredWidgets[o],B.dependentDataWidgets.hasOwnProperty(o)&&delete B.dependentDataWidgets[o]})}else console.warn("clearById: widgetIds must be an array")}function at(o,t){var e={valid:!0,type:o};if(!t)throw new Error("Config object is missing");if(e.config=t,!t.id)throw new Error("All widgets must have an id value");return e.id=t.id,e}function pt(o){return at("message",o)}function lt(o){return at("subscription",o)}function rt(o){return at("form",o)}function ut(o){return at("sitegate",o)}function st(){return B.dependentDataWidgets}function dt(o){o.forEach(function(o){var t=o.type,e=oo(o.cookieId),i=0,n=new Date;e||(e=Math.random()),n.setDate(n.getDate()+365),$(o.cookieId,e,n);for(var a=0;a<1&&!(e<=(a+=t.groups[i]));)i++;if(o.groups.forEach(function(o,t){o.forEach(function(o){if(void 0!==o.abTestingGroup)throw new Error("Widget #"+o.config.id+" is defined in more than one AB test.");o.abTestingGroup=t,o.hiddenViaABTests=i===t})}),void 0!==G.abTestingGroups[o.id])throw new Error("AB test with ID="+o.id+" has been already defined.");G.abTestingGroups[o.id]=i})}function ct(o){return function(o){var t={};if(!o)throw new Error("Config object is missing");if(t.id=o.id,t.cookieId=f+o.id,t.groups=o.groups,!P[o.type])throw new Error("Unknown AB testing type: "+o.type);return t.type=P[o.type],t}(o)}function vt(o){var t={},e=R.querySelectorAll("["+o+"]");this.elements=this.elements.concat(e);for(var i=0;i1){var i=1/e;o=o.map(function(o){return o*i})}return{groups:o,groupsNumber:o.length}}var n="1.2.21",a="en-US",p={},l="PathforaRecommend_",r="PathforaUnlocked_",u="PathforaImpressions_",s="PathforaTotalImpressionsSince_",d="PathforaConfirm_",c="PathforaCancel_",v="PathforaClosed_",f="PathforaTest_",g="PathforaPageView",m="\\{{2}.*?\\}{2}",h=["msg","headline","image","confirmAction.callback"],y="ordered",b="entityField",w="segment",S={modal:"",slideout:"bottom-left",button:"top-left",bar:"top-absolute"},C="widgetInitialized",A="widgetLoaded",M="buttonClicked",E="formSubmitted",T="modalOpened",I="modalClosed",k="modalConfirm",B=t({}),N=o({}),G=e({}),P={100:i(100),"50/50":i(50,50),"80/20":i(80,20)},L={subscription:{bar:"

",gate:"",inline:"

",modal:"",slideout:""},sitegate:{gate:""},message:{bar:"

",button:"",gate:"",inline:"

",modal:"",slideout:""},includes:{},form:{gate:"",inline:"

",modal:"",slideout:""},assets:{lytics:"lytics"}},x=window,R=x.document;function D(o){var t,e=this,i=R.documentElement.doScroll,n="DOMContentLoaded";(i?/^loaded|^c/:/^loaded|^i|^c/).test(R.readyState)?(e.DOMLoaded=!0,o()):R.addEventListener(n,t=function(){R.removeEventListener(n,t),e.DOMLoaded=!0,o()})}function W(o){return String(o).replace(/[\\^$*+?.()|[\]{}]/g,"\\$&")}function O(o,t){var e=new RegExp(["(^|\\b)",W(t.split(" ").join("|")),"(\\b|$)"].join(""),"gi");o.className=o.className.replace(e," ")}function H(o,t){O(o,t),o.className=[o.className,t].join(" ")}function K(o,t){return new RegExp("(^| )"+W(t)+"( |$)","gi").test(o.className)}function q(o){try{return decodeURIComponent(o)}catch{return o}}function U(o){var t=R.cookie,e=t.match("(^|;)\\s*"+encodeURIComponent(W(o))+"\\s*=\\s*([^;]+)");return null==e&&(e=t.match("(^|;)\\s*"+W(o)+"\\s*=\\s*([^;]+)")),null!=e?q(e.pop()):null}function z(o,t,e){var i;i=e?"; expires="+e.toUTCString():"; expires=0",R.cookie=[encodeURIComponent(o),"=",encodeURIComponent(t),i,"; path = /"].join("")}function F(o){z(o,"",new Date("Thu, 01 Jan 1970 00:00:01 GMT"))}var V="$",Z="@",j="PATHFORA";function J(o){try{return JSON.parse(o)}catch(o){}}function Y(o){return Boolean(o[Z])&&Date.parse(o[Z])0&&e.push("&"),e.push(i+"[]="+o[i][n]));else e.push(i+"="+o[i]);t++}return e.join("")}function eo(o,t){t||(t={});var e=o.length,i=[],n=t.usePlus||!1,a=t.keepEscaped||!1;function p(o){return/[0-9A-Fa-f]/.test(o)}function l(o){return"0123456789ABCDEF"[o]}function r(o){return!(-1!==["#",":",";","/","?","$","&","+",",","@","="].indexOf(o))&&function(o,t){return!!(o[t>>5]&1<<(31&t))}([4294967295,4160751869,2013265921,3087007745,4294967295,4294967295,4294967295,4294967295],o.charCodeAt(0))}for(var u=0;u=u+2&&p(o[u+1])&&p(o[u+2])?i.push("%"):r(s)?i.push("%",l(d>>4),l(15&d)):i.push(s)}return i.join("")}function io(o,t){for(var e in t)t.hasOwnProperty(e)&&"object"==typeof t[e]&&null!==t[e]&&!Array.isArray(t[e])?t.hasOwnProperty(e)&&(void 0===o[e]&&(o[e]={}),io(o[e],t[e])):t.hasOwnProperty(e)&&(o[e]=t[e])}function no(o,t,e){for(var i=o,n=t.split("."),a=0;a()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/g.test(o)}var ro={addClass:H,hasClass:K,removeClass:O,readCookie:U,saveCookie:z,deleteCookie:F,updateLegacyCookies:function(){var o=[l,r,u,d,c,v,f,g],t=0,e=function(e){return 0===e.trim().indexOf(o[t])},i=function(o){var t=o.trim().split("=");if(2===t.length){var e=t[0],i=t[1];F(e),$(e,q(i))}},n=function(o){var t=sessionStorage.getItem(o);X(t)&&(sessionStorage.removeItem(o),sessionStorage.setItem(encodeURIComponent(o),encodeURIComponent(t)))};for(t=0;tt}},gte:function(o,t){return function(e){return parseInt(e[o],10)>=t}},lt:function(o,t){return function(e){return parseInt(e[o],10)0&&o.global.duration>0){var g=function(){$(p,"0|"+f,t.expiration)};(n=oo(p))?void 0!==(e=n.split("|"))[1]&&Math.abs(e[1]-f)/1e3>=o.global.duration&&g():g()}if(l||(l=0),l>=o.widget.session)return!1;if(v){if(e=v.split("|"),i=parseInt(e[0],10),void 0!==e[1]){if(o.widget.buffer>0&&Math.abs(e[1]-f)/1e30&&i%o.widget.total===0&&Math.abs(e[1]-f)/1e3=o.widget.total&&void 0===o.widget.duration)return!1;if(o.global.session>0)for(var m=0;m<~~sessionStorage.length;m++){var h=sessionStorage.key(m);void 0!==h&&h.includes(u)&&(r+=~~sessionStorage.getItem(h))}if(r>=o.global.session)return!1;if(o.global.total>0||o.global.buffer>0){for(var y=0;y<~~localStorage.length;y++){var b=localStorage.key(y);void 0!==b&&b.includes(u)&&(e=oo(b).split("|"),d+=i=parseInt(e[0],10),void 0!==e[1]&&(c=Math.max(e[1],c)))}if(c>0&&o.global.buffer>0&&Math.abs(c-f)/1e30&&(e=(n=oo(p)).split("|"))[0]>=o.global.total)&&!(d>=o.global.total&&void 0===o.global.duration)}function go(o,t){var e,i;if("object"==typeof jstag&&x.jstag.send(t.censorTrackingKeys?function(o,t){return Object.keys(o).filter(function(o){return!t.some(function(t){return"string"==typeof t?o===t:t.test(o)})}).reduce(function(t,e){return t[e]=o[e],t},{})}(o,t.censorTrackingKeys):o),!0===x.pathfora.enableGA&&"function"==typeof x.ga&&"function"==typeof x.ga.getAll){e=o["pf-widget-action"]||o["pf-widget-event"],i=x.ga.getAll();for(var n=0;n0&&(p["pf-widget-content"]=t.content[0]),o){case"show":G.displayedWidgets.push(p);break;case"close":p["pf-widget-action"]=!!t.closeAction&&t.closeAction.name||"close",G.closedWidgets.push(p);break;case"confirm":e&&K(e,"pf-content-unit")?p["pf-widget-action"]="content recommendation":(p["pf-widget-action"]=!!t.confirmAction&&t.confirmAction.name||"default confirm",G.completedActions.push(p));break;case"cancel":p["pf-widget-action"]=!!t.cancelAction&&t.cancelAction.name||"default cancel",G.cancelledActions.push(p);break;case"success.confirm":p["pf-widget-action"]=!!t.formStates&&!!t.formStates.success&&!!t.formStates.success.confirmAction&&t.formStates.success.confirmAction.name||"success confirm",G.completedActions.push(p);break;case"success.cancel":p["pf-widget-action"]=!!t.formStates&&!!t.formStates.success&&!!t.formStates.success.cancelAction&&t.formStates.success.cancelAction.name||"success cancel",G.cancelledActions.push(p);break;case"error.confirm":p["pf-widget-action"]=!!t.formStates&&!!t.formStates.error&&!!t.formStates.error.confirmAction&&t.formStates.error.confirmAction.name||"error confirm",G.completedActions.push(p);break;case"error.cancel":p["pf-widget-action"]=!!t.formStates&&!!t.formStates.error&&!!t.formStates.error.cancelAction&&t.formStates.error.cancelAction.name||"error cancel",G.cancelledActions.push(p);break;case"submit":case"unlock":for(n in K(e,"pf-custom-form")&&(p["pf-custom-form"]={}),e.children)if(e.children.hasOwnProperty(n))if(K(i=e.children[n],"pf-widget-radio-group")||K(i,"pf-widget-checkbox-group")){var l=[],u="",s=i.querySelectorAll("input");for(a=0;an)&&!(e&&i0}).join(". ");if(!a.length)return;setTimeout(function(){for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(R.createTextNode(a))},0)}}function Ao(o,t,e){if(e.formStates){var i=0;o?(H(t,"success"),Co(t,"success"),i=e.formStates.success&&void 0!==e.formStates.success.delay?1e3*e.formStates.success.delay:3e3):(H(t,"error"),Co(t,"error"),i=e.formStates.error&&void 0!==e.formStates.error.delay?1e3*e.formStates.error.delay:3e3),i>0&&setTimeout(function(){bo(t.id,!0)},i)}}function Mo(o,t,e){"function"==typeof t.onModalClose&&t.onModalClose(I,{widget:o,config:t,event:e})}function Eo(o,t){var e,i=oo(o),n=Date.now();i?(i=i.split("|"),e=Math.min(parseInt(i[0],10),9998)+1):e=1,$(o,e+"|"+n,t)}function To(o,t,e,i){var n,a,p,l;switch(t){case"close":n=v,a=I,p=e.closeAction,l=!0;break;case"cancel":case"success.cancel":case"error.cancel":n=c,p=e.cancelAction,l="inline"!==e.layout,"success.cancel"===t&&(p=e.formStates.success.cancelAction),"error.cancel"===t&&(p=e.formStates.error.cancelAction);break;case"confirm":case"success.confirm":case"error.confirm":n=d,l="inline"!==e.layout,"success.confirm"===t&&(p=e.formStates.success.confirmAction),"error.confirm"===t&&(p=e.formStates.error.confirmAction)}o.onmouseenter=function(o){mo("hover",e,o.target)},o.onclick=function(o){mo(t,e),Eo(n+i.id,e.expiration),"object"==typeof p&&(!1===p.close&&(l=!1),"function"==typeof p.callback&&p.callback(a,{widget:i,config:e,event:o})),l&&(bo(i.id,!0),Mo(i,e,o))}}function Io(o,t){var e,i,n,a,p,l,r=R.createElement("div"),u=o.hasOwnProperty("groupType");if(u)r.className="pf-widget-"+o.type,e=R.createElement("div");else{switch(o.type){case"email":(e=R.createElement("input")).setAttribute("type","email");break;case"us-postal-code":(e=R.createElement("input")).setAttribute("type","text"),o.pattern||(o.pattern="^[0-9]{5}$");break;case"text":case"input":(e=R.createElement("input")).setAttribute("type","text");break;case"date":(e=R.createElement("input")).setAttribute("type","date");break;default:e=R.createElement(o.type)}if(o.pattern&&e.setAttribute("enforcePattern",o.pattern),e.setAttribute("name",o.name),e.setAttribute("id",o.name),"textarea"===o.type&&e.setAttribute("rows",5),"date"===o.type){var s=new Date,d=s.getTimezoneOffset(),c=new Date(s.getTime()-60*d*1e3),v=o.maxDate?"today"===o.maxDate?c:new Date(o.maxDate):null,f=o.minDate?"today"===o.minDate?c:new Date(o.minDate):null;null!=v&&e.setAttribute("max",v.toISOString().split("T")[0]),null!=f&&e.setAttribute("min",f.toISOString().split("T")[0])}}if(o.label&&(u?((a=R.createElement("span")).id=o.name,e.setAttribute("aria-labelledby",o.name)):(a=R.createElement("label")).setAttribute("for",o.name),a.innerHTML=o.label,a.className="pf-form-label",H(e,"pf-has-label"),!0===o.required&&(a.innerHTML+=' *'),r.appendChild(a)),!0===o.required&&(H(r,"pf-form-required"),e.setAttribute("data-required","true"),o.label&&((p=R.createElement("div")).className="pf-required-flag",p.innerHTML="required",l=R.createElement("span"),p.appendChild(l),r.appendChild(p))),o.pattern&&(e.setAttribute("data-validate","true"),H(r,"pf-form-required-validation")),"date"!==o.type&&"email"!==o.type||(H(r,"pf-form-required"),e.setAttribute("data-validate","true"),o.label&&((p=R.createElement("div")).className="pf-invalid-flag",p.innerHTML="invalid",l=R.createElement("span"),p.appendChild(l),r.appendChild(p))),o.placeholder){if("select"===o.type){var g=R.createElement("option");g.setAttribute("value",""),g.innerHTML=o.placeholder,e.appendChild(g)}else e.placeholder=o.placeholder;o.label||e.setAttribute("aria-label",o.placeholder)}if(o.values)for(i=0;i=0;n--)u[n].innerHTML=t.headline;if(t.image){var m=R.createElement("img");m.src=t.image,m.className="pf-widget-img",m.alt="","button"===t.layout||("modal"===t.layout||"inline"===t.layout?p.appendChild(m):s.appendChild(m))}switch(t.type){case"sitegate":case"form":if(t.formElements&&t.formElements.length){var h=o.querySelector("form");H(h,"pf-custom-form");for(var y=h.children,b=0;b0&&mo("form_start",t,o.target)},s=function(o){mo("focus",t,o.target)};for(var c in n.childNodes)if(n.children.hasOwnProperty(c)){var f=n.children[c];void 0!==f.getAttribute&&null!==f.getAttribute("name")&&(f.onfocus=s,f.onchange=u)}i=function(o){o.preventDefault();var t,e,i,a=!0,p=Array.prototype.slice.call(n.querySelectorAll("[data-required=true]")),l=Array.prototype.slice.call(n.querySelectorAll("[data-validate=true]"));for(t=0;t0&&(new RegExp(c).test(e.value)||(a=!1,d=!1)),d||(H(i,"bad-validation"),e&&0===t&&e.focus())}}else e.hasAttribute("data-validate")&&(O(e,"bad-validation"),"email"!==e.getAttribute("type")||lo(e.value)||""===e.value||(a=!1,H(e,"bad-validation"),e&&0===t&&e.focus()))}return a}}switch(t.layout){case"button":"function"==typeof t.onClick&&(e=function(e){t.onClick(M,{widget:o,config:t,event:e})});break;case"modal":t.listeners.escape={type:"keydown",target:document,fn:function(e){27===(e=e||window.event).keyCode&&(mo("close",t),Eo(v+o.id,t.expiration),bo(o.id,!0),Mo(o,t,e))}}}l&&To(l,"close",t,o),p&&To(p,"cancel",t,o),a&&(a.onmouseenter=function(o){mo("hover",t,o.target)},a.onclick=function(a){var p,l,r=!0;if("function"==typeof i){switch(t.type){case"form":l="gate"===t.layout?"unlock":"submit";break;case"subscription":l="subscribe"}if(!l||!i(a))return;n&&(mo(l,t,n),p=Array.prototype.slice.call(n.querySelectorAll("input, textarea, select")).filter(function(o){return!o.type||"checkbox"!==o.type&&"radio"!==o.type||o.checked}).map(function(o){return{name:o.name||o.id,value:o.value}}),"function"==typeof t.onSubmit&&t.onSubmit(E,{widget:o,config:t,event:a,data:p}))}if(mo("confirm",t),Eo(d+o.id,t.expiration),"function"==typeof e&&e(a),"object"==typeof t.confirmAction&&(!1===t.confirmAction.close&&(r=!1),"function"==typeof t.confirmAction.callback)){var u={widget:o,config:t,event:a};if(p&&(u.data=p),!0===t.confirmAction.waitForAsyncResponse)return void t.confirmAction.callback(k,u,function(e){Ao(e,o,t)});t.confirmAction.callback(k,u)}r&&("inline"===t.layout||t.formStates&&t.formStates.success?Ao(!0,o,t):(bo(o.id,!0),Mo(o,t,a)))}),r&&(r.onmouseenter=function(o){mo("hover",t,o.target)},r.onclick=function(e){mo("confirm",t,e.target),Eo(d+o.id,t.expiration)})}(t,o),function(o,t){var e=o.querySelector(".pf-content-unit"),i=t.recommend;if(t.recommend&&t.content&&Object.keys(t.content).length>0){var n=t.content[0],l=R.createElement("div"),r=R.createElement("div"),u=R.createElement("h4"),s=R.createElement("p"),d=R.createElement("span");if(e.href=n.url,!n.image||i.display&&!1===i.display.image||(l.className="pf-content-unit-img",l.style.backgroundImage="url('"+n.image+"')",e.appendChild(l)),r.className="pf-content-unit-meta",!n.title||i.display&&!1===i.display.title||(u.innerHTML=n.title,r.appendChild(u)),n.author&&i.display&&!0===i.display.author&&(d.innerHTML="by "+n.author),n.date&&i.display&&!0===i.display.date){var c=new Date(n.date),v=i.display.locale,f=i.display.dateOptions;!v&&x.pathfora&&x.pathfora.locale?v=x.pathfora.locale:v||(v=a),!f&&x.pathfora&&x.pathfora.dateOptions?f=x.pathfora.dateOptions:f||(f=p),c=c.toLocaleDateString(v,f),d.innerHTML?d.innerHTML+=" | "+c:d.innerHTML=c}if(d.innerHTML&&(d.className="pf-content-unit-info",r.appendChild(d)),n.description&&(!i.display||!1!==i.display.description)){var g=n.description,m="modal"===t.layout?220:160;i.display?i.display.descriptionLimit||(i.display.descriptionLimit=m):i.display={descriptionLimit:m},g.length>i.display.descriptionLimit&&-1!==i.display.descriptionLimit&&(g=(g=g.substring(0,i.display.descriptionLimit)).substring(0,g.lastIndexOf(" "))+"..."),s.innerHTML=g,r.appendChild(s)}e.appendChild(r)}}(t,o),function(o,t){o.className=["pf-widget ","pf-"+t.type," pf-widget-"+t.layout,t.position?" pf-position-"+t.position:"",t.pushDown?" pf-has-push-down":"",t.origin?" pf-origin-"+t.origin:"",t.image?" pf-widget-has-image pf-widget-variant-2":"",t.recommend?" pf-widget-has-recommend pf-widget-variant-3":"",t.image||t.recommend?"":" pf-widget-variant-1"," pf-widget-layout-"+t.layout,t.theme?" pf-theme-"+t.theme:"",t.className?" "+t.className:"",t.branding?" pf-widget-has-branding":"",t.responsive?"":" pf-mobile-hide"].join("")}(t,o),No(t,o),function(o,t){switch(t.theme){case"custom":t.colors&&Go(o,t.colors);break;case"none":break;default:t.theme&&Go(o,N.generic.themes[t.theme])}}(t,o),t}function Lo(o,t){if("inline"===o.layout||"modal"===o.layout&&o.recommend){var e=t.querySelector(".pf-content-unit");e&&(t.offsetWidth<650&&!K(e,"stack")?H(e,"stack"):t.offsetWidth>=650&&O(e,"stack"))}}function xo(o){var t=function(o,t){for(var e=0;e0});t.length&&(o.shiftKey?i.contains(o.target)&&o.target!==t[0]||(o.preventDefault(),t[t.length-1].focus()):i.contains(o.target)&&o.target!==t[t.length-1]||(o.preventDefault(),t[0].focus()))}}}}}else{var n=null==o.config.positionSelector?o.config.position:o.config.positionSelector,a=R.querySelector(n);if(!a)throw B.openedWidgets.pop(),new Error("Widget could not be initialized in "+n);a.appendChild(i)}for(var p in setTimeout(function(){var e=o.config.onLoad;H(i,"opened"),"function"==typeof t&&t(i),"function"==typeof e&&e(A,{config:o,widget:i}),"modal"===o.config.layout&&"function"==typeof o.config.onModalOpen&&o.config.onModalOpen(T,{config:o,widget:i})},50),o.displayConditions.hideAfter&&setTimeout(function(){bo(o.id,!0)},1e3*o.displayConditions.hideAfter),Lo(o,i),o.listeners.resize={type:"resize",target:x,fn:function(){Lo(o,i)}},o.listeners)if(o.listeners.hasOwnProperty(p)){var l=o.listeners[p];l.target&&"function"==typeof l.target.addEventListener&&l.target.addEventListener(l.type,l.fn)}},e=o.onInit;"function"==typeof e&&e(C,{config:o}),o.displayConditions&&o.displayConditions.showDelay?B.delayedWidgets[o.id]=setTimeout(function(){t(o,function(o){var t=o.querySelector(".pf-widget-ok");t&&t.focus()})},1e3*o.displayConditions.showDelay):t(o)}function Ro(o,t,e){var i=!0;for(var n in o.watchers)o.watchers.hasOwnProperty(n)&&null!==o.watchers[n]&&(i=i&&o.valid&&o.watchers[n].check(e));return o.displayConditions.impressions&&i&&(i=fo(o.displayConditions.impressions,o)),!!i&&(xo(o),o.valid=!1,t(),o.watchers=[],!0)}function Do(o){return Ro(o,function(){B.triggeredWidgets[o.id]=!1,B.readyWidgets.some(function(t,e){if(t.id===o.id)return B.readyWidgets.splice(e,1),!0})})}function Wo(o){var t;if(void 0===o)for(B.triggeredWidgets["*"]=!0,t=0;t0))throw new Error("Could not get account id from Lytics Javascript tag.");t=x.jstag.config.cid[0]}if(!t)throw new Error("Lytics Javascript tag returned an empty account id.");o.acctid=t}}function Ko(o,t){var e,i=this;!function(o){if(o.target){o.common=o.common||[];for(var t=0;t0&&(e[n.id][w]?e[n.id][w].concat(t):e[n.id][w]=t)}B.dependentDataWidgets=e},n=function(o,t){var e=B.dependentDataWidgets,i=0;for(i=0;i0&&(sessionStorage.setItem(l+e,encodeURIComponent(JSON.stringify(a.data))),i(a.data)))}var p,r="seerid",u="_uids";window.jstag&&window.jstag.config&&""!==window.jstag.config.cookie&&(r=window.jstag.config.cookie),p=U(r),window.liosetup&&window.liosetup.field&&""!==window.liosetup.field&&window.liosetup.value&&""!==window.liosetup.value&&(u=window.liosetup.field,p=window.liosetup.value),u||p||(console.warn("Could not determine BY field and value from config"),i([]));var s=["https://c.lytics.io","api","content","recommend",o,"user",u,p],d=t.ql,c=t.ast,v=t.display;delete t.ql,delete t.ast,delete t.display;var f=to(t);if(t.display=v,!t.contentsegment&&(d&&d.raw||c))if(f.length>0?f+="&":f+="?",d&&d.raw)f+="ql="+d.raw;else{var g={table:"content",ast:c};f+="contentsegments=["+encodeURIComponent(JSON.stringify(g))+"]"}var m,h,y,b,w=s.join("/")+f;m=w,h=function(o){var t;try{t=JSON.parse(o)}catch(o){return console.warn("Could not parse json response:"+o),void i([])}if(t.data&&t.data.length>0){for(var n=0;n1&&(t.data[n].url="http://"+a)}sessionStorage.setItem(l+e,encodeURIComponent(JSON.stringify(t))),i(t.data)}else i([])},y=function(){i([])},(b=new XMLHttpRequest).onreadystatechange=function(){4===b.readyState&&200===b.status?h(b.responseText):4===b.readyState&&y(b.responseText)},b.open("GET",m),b.send()}else console.warn("Could not make recommendation - missing callback function.")}function Vo(o,t,e){Uo(o)?(function(o){if("message"!==o.type)throw new Error("Unsupported widget type for content recommendation");if("slideout"!==o.layout&&"modal"!==o.layout&&"inline"!==o.layout)throw new Error("Unsupported layout for content recommendation");if(o.content&&o.content[0]&&!o.content[0].default)throw new Error("Cannot define recommended content unless it is a default")}(o),function(o,t,e){var i=t.recommend;i&&i.collection&&(i.contentsegment=t.recommend.collection,delete i.collection),Fo(o,i,t.id,function(o){if(o[0]){var i=o[0];t.content=[{title:i.title,description:i.description,url:i.url,image:i.primary_image,date:i.created,author:i.author}]}if(!t.content)throw new Error("Could not get recommendation and no default defined");e()})}(t.acctid,o,e)):e()}function Zo(o,t){var e=this;B.prioritizedWidgets=[];var i=function(o,t,n){if(!(t>=o.length)){var a=o[t],p=N[a.type],l=N.generic;if(io(a,l),io(a,p),io(a,a.config),!(B.initializedWidgets.indexOf(a.id)<0))throw new Error("Cannot add two widgets with the same id");B.initializedWidgets.push(a.id),a.success&&(a.formStates||(a.formStates={}),a.formStates.success||(a.formStates.success=a.success)),zo(a,e,function(){Vo(a,e,function(){if(e.initializeWidget(a,n),n&&n.priority===y){if(B.prioritizedWidgets.length&&B.prioritizedWidgets[0].id===a.id)return;i(o,t+1,n)}})}),n&&n.priority===y||i(o,t+1,n)}};i(o,0,t)}function jo(o,t,e,i){if(!e||!e.length)return!0;var n,a,p,l=ao(o,t),r=!1;"function"==typeof l&&(p=l.toString(),l=p.substring(p.indexOf("{")+1,p.lastIndexOf("}")),""!==(a=p.match(/function[^(]*\(([^)]*)\)/)[1])&&(n=a.split(/\W+/)),r=!0);for(var u=0;u1&&(d=s[1].trim());var c,v,f,g=s[0].trim().split(".");if(x.lio&&x.lio.data)c=x.lio.data;else if(x.jstag&&"function"==typeof x.jstag.getEntity){var m=x.jstag.getEntity();m&&m.data&&m.data.user&&(c=m.data.user)}for(v=0;v1){e=e[1].split("&");for(var i=0;i1&&"lytics_variation_preview_id"!==n[0]&&(t[n[0]]=n[1])}}return t}function Yo(o,t,e){if("exact"===e)if(Object.keys(t).length!==Object.keys(o).length)return!1;for(var i in t)if(t.hasOwnProperty(i)&&t[i]!==o[i])return!1;return!0}function _o(o,t,e,i){var n=!1;switch(typeof o){case"string":-1!==t.indexOf(eo(o.split("?")[0],{keepEscaped:!0}))&&(n=Yo(i,Jo(o),"substring"));break;case"object":if(o.match&&o.value){var a=eo(o.value,{keepEscaped:!0}),p=Jo(a);switch(o.match){case"simple":"/"===e.slice(-1)&&(e=e.slice(0,-1)),"/"===o.value.slice(-1)&&(o.value=o.value.slice(0,-1)),e===o.value&&(n=!0);break;case"exact":n=Object.keys(p).length>0&&t.split("?")[0].replace(/\/$/,"")===a.split("?")[0].replace(/\/$/,"")?Yo(i,p,o.match):t.replace(/\/$/,"")===a.replace(/\/$/,"");break;case"regex":new RegExp(o.value).test(t)&&(n=!0);break;default:n=Object.keys(p).length>0&&-1!==t.indexOf(a.split("?")[0])?Yo(i,p,o.match):-1!==t.indexOf(a)}}else console.log("invalid display conditions");break;default:console.log("invalid display conditions")}return n}var Qo=[],$o={add:function(o,t,e){o.addEventListener(t,e),Qo.push({target:o,type:t,listener:e})},remove:function(o,t,e){o.removeEventListener(t,e)},removeAll:function(){var o=this;Qo.forEach(function(t){o.remove(t.target,t.type,t.listener)}),Qo.length=0}};function Xo(o){return o.scrollListener=function(){Ro(o,function(){"function"==typeof x.addEventListener?$o.remove(x,"scroll",o.scrollListener):x.onscroll=null})},"function"==typeof x.addEventListener?$o.add(x,"scroll",o.scrollListener):x.onscroll=o.scrollListener,!0}var ot=null;function tt(o){return{check:function(){var t=R.scrollingElement||function(){if(ot)return ot;if(document.body.scrollTop)return ot=document.body;var o=document.createElement("iframe");o.style.height="1px",document.documentElement.appendChild(o);var t=o.contentWindow.document;t.write('
x
'),t.close();var e=t.documentElement.scrollHeight>t.body.scrollHeight;return o.parentNode.removeChild(o),ot=e?document.documentElement:document.body}();return t.scrollTop/(t.scrollHeight-t.clientHeight)*100>=o}}}function et(o,t){var e,i=o.displayConditions;if(o.watchers=[],o.listeners=[],o.expiration=new Date,o.expiration.setDate(o.expiration.getDate()+365),("gate"!==o.layout||"true"!==oo(r+o.id))&&!0!==o.hiddenViaABTests){if(o.pushDown){if("bar"!==o.layout||"top-fixed"!==o.position&&"top-absolute"!==o.position)throw new Error("Only top positioned bar widgets may have a pushDown property");H(R.querySelector(o.pushDown),"pf-push-down")}var n,a,p,l;o.valid=o.valid&&function(o,t){for(var e,i=!0,n=[],a=0;a0){for(var r=0;r0&&(B.dependentDataWidgets[o.id]||(B.dependentDataWidgets[o.id]={}),B.dependentDataWidgets[o.id][b]=n),i}(o,this.customData),i.date&&(o.valid=o.valid&&(n=i.date,a=!0,p=Date.now(),n.start_at&&pnew Date(n.end_at).getTime()&&(a=!1),a)),i.pageVisits&&(o.valid=o.valid&&(l=i.pageVisits,oo(g)>=l)),i.hideAfterAction&&(o.valid=o.valid&&function(o,t){var e,i=!0,n=Date.now(),a=oo(d+t.id),p=oo(c+t.id),l=oo(v+t.id);return o.confirm&&a&&(e=a.split("|"),parseInt(e[0],10)>=o.confirm.hideCount&&(i=!1),void 0!==e[1]&&Math.abs(e[1]-n)/1e3=o.cancel.hideCount&&(i=!1),void 0!==e[1]&&Math.abs(e[1]-n)/1e3=o.closed.hideCount&&(i=!1),void 0!==e[1]&&Math.abs(e[1]-n)/1e31&&(!e||"HTML"===e.nodeName)){var i=o.positions[o.positions.length-1].y,n=o.positions[o.positions.length-2].y,a=Math.abs(i-n);if(o.positions=[],i-a<=50&&i30&&t.positions.shift()},o.exitIntentTrigger=function(t){Ro(o,function(){"function"==typeof R.removeEventListener?($o.remove(R,"mousemove",o.exitIntentListener),$o.remove(R,"mouseout",o.exitIntentTrigger)):(R.onmousemove=null,R.onmouseout=null)},t)},"function"==typeof R.addEventListener?($o.add(R,"mousemove",o.exitIntentListener),$o.add(R,"mouseout",o.exitIntentTrigger)):(R.onmousemove=o.exitIntentListener,R.onmouseout=o.exitIntentTrigger))}(o,e)),i.displayWhenElementVisible&&(e=function(o){var t={elem:R.querySelector(o),check:function(){var o=R.body.scrollTop||R.documentElement.scrollTop,e=x.innerHeight+o>=R.body.offsetHeight;return!!(t.elem.offsetTop-x.innerHeight/2<=o||e)}};return t}(i.displayWhenElementVisible),o.watchers.push(e),Xo(o)),i.scrollPercentageToDisplay&&(e=tt(i.scrollPercentageToDisplay),o.watchers.push(e),Xo(o)),i.manualTrigger&&(e=function(o,t){return{check:function(){return!!(o&&B.triggeredWidgets[t.id]||B.triggeredWidgets["*"])}}}(i.manualTrigger,o),o.watchers.push(e),B.readyWidgets.push(o),Do(o)),0!==o.watchers.length||i.showOnExitIntent||o.valid&&xo(o)}}function it(o){return o.id=po(),Po(o)}function nt(o){if(Array.isArray(o)){var t=B.openedWidgets,e=[];t.forEach(function(t,i){-1!==o.indexOf(t)&&e.push({widget:t,index:i})}),e.forEach(function(o){var t=o.widget,e=R.getElementById(t.id);for(var i in e&&(O(e,"opened"),e.parentNode&&e.parentNode.removeChild(e)),t.listeners)if(t.listeners.hasOwnProperty(i)){var n=t.listeners[i];n.target.removeEventListener(n.type,n.fn)}}),e.sort(function(o,t){return t.index-o.index}).forEach(function(o){t.splice(o.index,1)})}else console.warn("clearWidget: widgets must be an array")}function at(o){if(Array.isArray(o)){var t=B.delayedWidgets;o.forEach(function(o){var e,i;t.hasOwnProperty(o)&&(e=o,(i=B.delayedWidgets[e])&&(clearTimeout(i),delete B.delayedWidgets[e]))})}else console.warn("cancelDelayedWidgets: widgetIds must be an array")}function pt(){var i=B.openedWidgets,n=B.delayedWidgets;nt(i),at(Object.keys(n)),$o.removeAll(),t(B),e(G),o(N),this.callbacks=[],this.acctid=""}function lt(o){if(Array.isArray(o)){var t=B.openedWidgets,e=[];t.forEach(function(t){-1!==o.indexOf(t.id)&&e.push(t)}),nt(e),at(o),o.forEach(function(o){var t=B.initializedWidgets.indexOf(o);-1!==t&&B.initializedWidgets.splice(t,1);for(var e=B.prioritizedWidgets.length-1;e>=0;e--)B.prioritizedWidgets[e].id===o&&B.prioritizedWidgets.splice(e,1);for(var i=B.readyWidgets.length-1;i>=0;i--)B.readyWidgets[i].id===o&&B.readyWidgets.splice(i,1);B.triggeredWidgets.hasOwnProperty(o)&&delete B.triggeredWidgets[o],B.dependentDataWidgets.hasOwnProperty(o)&&delete B.dependentDataWidgets[o]})}else console.warn("clearById: widgetIds must be an array")}function rt(o,t){var e={valid:!0,type:o};if(!t)throw new Error("Config object is missing");if(e.config=t,!t.id)throw new Error("All widgets must have an id value");return e.id=t.id,e}function ut(o){return rt("message",o)}function st(o){return rt("subscription",o)}function dt(o){return rt("form",o)}function ct(o){return rt("sitegate",o)}function vt(){return B.dependentDataWidgets}function ft(o){o.forEach(function(o){var t=o.type,e=oo(o.cookieId),i=0,n=new Date;e||(e=Math.random()),n.setDate(n.getDate()+365),$(o.cookieId,e,n);for(var a=0;a<1&&!(e<=(a+=t.groups[i]));)i++;if(o.groups.forEach(function(o,t){o.forEach(function(o){if(void 0!==o.abTestingGroup)throw new Error("Widget #"+o.config.id+" is defined in more than one AB test.");o.abTestingGroup=t,o.hiddenViaABTests=i===t})}),void 0!==G.abTestingGroups[o.id])throw new Error("AB test with ID="+o.id+" has been already defined.");G.abTestingGroups[o.id]=i})}function gt(o){return function(o){var t={};if(!o)throw new Error("Config object is missing");if(t.id=o.id,t.cookieId=f+o.id,t.groups=o.groups,!P[o.type])throw new Error("Unknown AB testing type: "+o.type);return t.type=P[o.type],t}(o)}function mt(o){var t={},e=R.querySelectorAll("["+o+"]");this.elements=this.elements.concat(e);for(var i=0;i