!function(j){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.typography=redux.field_objects.typography||{};var C=[],z=!1,k={width:"resolve",triggerChange:!0,allowClear:!0};redux.field_objects.typography.init=function(e,t){e||(e=j(document).find(".redux-group-tab:visible").find(".redux-container-typography:visible")),j(e).each(function(){var r,e=j(this),t=e;(e.hasClass("redux-field-container")||(t=e.parents(".redux-field-container:first")),t.is(":hidden"))||t.hasClass("redux-field-init")&&(t.removeClass("redux-field-init"),e.each(function(){j(this).find(".redux-typography-container").each(function(){var e=j(this).find(".redux-typography-family");void 0===e.data("value")?e=j(this):""!==e.data("value")&&j(e).val(e.data("value"));var t=j(this).find(".select2_params");if(0"+t.name.replace(/\+/g," ")+""}),j("#"+a+" .redux-typography-style").select2("destroy"),j("#"+a+" .redux-typography-style").html(b),j("#"+a+" .redux-typography-style").select2(k),m="",b='',j.each(v.subsets,function(e,t){t.id===c||1===redux.field_objects.typography.size(v.subsets)?(m=' selected="selected"',c=t.id,j("#"+a+" input.typography-subsets").val(c)):m="",b+='"}),j("#"+a+" .redux-typography-subsets").select2("destroy"),j("#"+a+" .redux-typography-subsets").html(b),j("#"+a+" .redux-typography-subsets").select2(k),j("#"+a+" .redux-typography-subsets").parent().fadeIn("fast"),j("#"+a+" .typography-family-backup").fadeIn("fast")}else v&&(j.each(v,function(e,t){e===g||"normal"===e?(m=' selected="selected"',j("#"+a+" .typography-style .select2-chosen").text(t)):m="",b+='"}),j("#"+a+" .redux-typography-style").select2("destroy"),j("#"+a+" .redux-typography-style").html(b),j("#"+a+" .redux-typography-style").select2(k),j("#"+a+" .redux-typography-subsets").parent().fadeOut("fast"),j("#"+a+" .typography-family-backup").fadeOut("fast"));j("#"+a+" .redux-typography-font-family").val(r)}else j(e).hasClass("redux-typography-family-backup")&&""!==p&&j("#"+a+" .redux-typography-font-family-backup").val(p);if(0===j("#"+a+" select.redux-typography-style option[value='"+g+"']").length?(g="",j("#"+a+" select.redux-typography-style").select2("val","")):"400"===g&&j("#"+a+" select.redux-typography-style").select2("val",g),0===j("#"+a+" select.redux-typography-subsets option[value='"+c+"']").length&&(c="",j("#"+a+" select.redux-typography-subsets").select2("val",""),j("#"+a+" input.typography-subsets").val(c)),j("."+("style_link_"+a)).remove(),null!==r&&"inherit"!==r&&j("#"+a).hasClass("typography-initialized")){var w=r.replace(/\s+/g,"+");if(!0===o){var _=w;g&&""!==g&&(_+=":"+g.replace(/\-/g," ")),c&&""!==c&&(_+="&subset="+c),!1===z&&"undefined"!=typeof WebFont&&WebFont&&WebFont.load({google:{families:[_]}}),j("#"+a+" .redux-typography-google").val(!0)}else j("#"+a+" .redux-typography-google").val(!1)}(-1!==g.indexOf("italic")?(j("#"+a+" .typography-preview").css("font-style","italic"),j("#"+a+" .typography-font-style").val("italic"),g=g.replace("italic","")):(j("#"+a+" .typography-preview").css("font-style","normal"),j("#"+a+" .typography-font-style").val("")),j("#"+a+" .typography-font-weight").val(g),y||(y=s),""===s||void 0===s?j("#"+a+" .typography-font-size").val(""):j("#"+a+" .typography-font-size").val(s+x),""===y||void 0===y?j("#"+a+" .typography-line-height").val(""):j("#"+a+" .typography-line-height").val(y+x),""===i||void 0===i?j("#"+a+" .typography-word-spacing").val(""):j("#"+a+" .typography-word-spacing").val(i+x),""===l||void 0===l?j("#"+a+" .typography-letter-spacing").val(""):j("#"+a+" .typography-letter-spacing").val(l+x),j("#"+a).hasClass("typography-initialized"))&&("0"==j("#"+a+" .typography-preview").data("preview-size")&&j("#"+a+" .typography-preview").css("font-size",s+x),j("#"+a+" .typography-preview").css("font-weight",g),j("#"+a+" .typography-preview").css("font-family",r+", sans-serif"),"none"===r&&""===r&&j("#"+a+" .typography-preview").css("font-family","inherit"),j("#"+a+" .typography-preview").css("line-height",y+x),j("#"+a+" .typography-preview").css("word-spacing",i+x),j("#"+a+" .typography-preview").css("letter-spacing",l+x),f&&(j("#"+a+" .typography-preview").css("color",f),j("#"+a+" .typography-preview").css("background-color",redux.field_objects.typography.contrastColour(f))),j("#"+a+" .typography-style .select2-chosen").text(j("#"+a+" .redux-typography-style option:selected").text()),j("#"+a+" .typography-script .select2-chosen").text(j("#"+a+" .redux-typography-subsets option:selected").text()),n&&j("#"+a+" .typography-preview").css("text-align",n),d&&j("#"+a+" .typography-preview").css("text-transform",d),h&&j("#"+a+" .typography-preview").css("font-variant",h),u&&j("#"+a+" .typography-preview").css("text-decoration",u),j("#"+a+" .typography-preview").slideDown());j("#"+a).hasClass("typography-initialized")||j("#"+a).addClass("typography-initialized"),z=!1,t||redux_change(e)}}(jQuery);

"Études nos ha ahorrado miles de horas de trabajo y ha desbloqueado perspectivas que nunca creímos posibles".

Annie Steiner

Director General, Greenprint

/*! elementor-pro - v3.30.0 - 01-07-2025 */ "use strict"; (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["progress-tracker"],{ /***/ "../modules/progress-tracker/assets/js/frontend/handlers/circular-progress.js": /*!************************************************************************************!*\ !*** ../modules/progress-tracker/assets/js/frontend/handlers/circular-progress.js ***! \************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class CircularProgress { constructor(element, settings) { this.settings = settings; this.lastKnownProgress = null; this.circularProgressTracker = element.find('.elementor-scrolling-tracker-circular')[0]; this.circularCurrentProgress = this.circularProgressTracker.getElementsByClassName('current-progress')[0]; this.circularCurrentProgressPercentage = this.circularProgressTracker.getElementsByClassName('current-progress-percentage')[0]; const radius = this.circularCurrentProgress.r.baseVal.value; const circumference = radius * 2 * Math.PI; this.circularCurrentProgress.style.strokeDasharray = `${circumference} ${circumference}`; this.circularCurrentProgress.style.strokeDashoffset = circumference; this.elements = this.cacheElements(); this.resizeObserver = new ResizeObserver(() => { if (this.lastKnownProgress) { this.updateProgress(this.lastKnownProgress); } }); this.resizeObserver.observe(this.circularProgressTracker); } cacheElements() { return { circularProgressTracker: this.circularProgressTracker, circularCurrentProgress: this.circularCurrentProgress, circularCurrentProgressPercentage: this.circularCurrentProgressPercentage }; } updateProgress(progress) { // On page load, there is no progress and some of the elements might be not fully rendered - so we hide the progress. if (progress <= 0) { this.elements.circularCurrentProgress.style.display = 'none'; this.elements.circularCurrentProgressPercentage.style.display = 'none'; return; } this.elements.circularCurrentProgress.style.display = 'block'; this.elements.circularCurrentProgressPercentage.style.display = 'block'; const radius = this.elements.circularCurrentProgress.r.baseVal.value, circumference = radius * 2 * Math.PI, offset = circumference - progress / 100 * circumference; this.lastKnownProgress = progress; this.elements.circularCurrentProgress.style.strokeDasharray = `${circumference} ${circumference}`; this.elements.circularCurrentProgress.style.strokeDashoffset = 'ltr' === this.settings.direction ? -offset : offset; if ('yes' === this.settings.percentage) { this.elements.circularCurrentProgressPercentage.innerHTML = Math.round(progress) + '%'; } } onDestroy() { this.resizeObserver.unobserve(this.circularProgressTracker); } } var _default = exports["default"] = CircularProgress; /***/ }), /***/ "../modules/progress-tracker/assets/js/frontend/handlers/linear-progress.js": /*!**********************************************************************************!*\ !*** ../modules/progress-tracker/assets/js/frontend/handlers/linear-progress.js ***! \**********************************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class LinearProgress { constructor(element, settings) { this.settings = settings; this.linearProgressTracker = element.find('.elementor-scrolling-tracker-horizontal')[0]; this.linearCurrentProgress = this.linearProgressTracker.getElementsByClassName('current-progress')[0]; this.linearCurrentProgressPercentage = this.linearProgressTracker.getElementsByClassName('current-progress-percentage')[0]; this.elements = this.cacheElements(); } cacheElements() { return { linearProgressTracker: this.linearProgressTracker, linearCurrentProgress: this.linearCurrentProgress, linearCurrentProgressPercentage: this.linearCurrentProgressPercentage }; } updateProgress(progress) { // On page load, there is no progress and some of the elements might be not fully rendered - so we hide the progress. if (progress < 1) { this.elements.linearCurrentProgress.style.display = 'none'; return; } this.elements.linearCurrentProgress.style.display = 'flex'; this.elements.linearCurrentProgress.style.width = progress + '%'; if ('yes' === this.settings.percentage && // Multiplying the progress percentage width by 1.5 to make sure it has enough space to be shown correctly. this.elements.linearCurrentProgress.getBoundingClientRect().width > this.elements.linearCurrentProgressPercentage.getBoundingClientRect().width * 1.5) { this.elements.linearCurrentProgressPercentage.innerHTML = Math.round(progress) + '%'; this.elements.linearCurrentProgressPercentage.style.color = getComputedStyle(this.linearCurrentProgress).getPropertyValue('--percentage-color'); } else { this.elements.linearCurrentProgressPercentage.style.color = 'transparent'; } } } var _default = exports["default"] = LinearProgress; /***/ }), /***/ "../modules/progress-tracker/assets/js/frontend/handlers/progress-tracker.js": /*!***********************************************************************************!*\ !*** ../modules/progress-tracker/assets/js/frontend/handlers/progress-tracker.js ***! \***********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _circularProgress = _interopRequireDefault(__webpack_require__(/*! ./circular-progress */ "../modules/progress-tracker/assets/js/frontend/handlers/circular-progress.js")); var _linearProgress = _interopRequireDefault(__webpack_require__(/*! ./linear-progress */ "../modules/progress-tracker/assets/js/frontend/handlers/linear-progress.js")); class ProgressTracker extends elementorModules.frontend.handlers.Base { onInit() { elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); this.circular = 'circular' === this.getElementSettings().type; const Handler = this.circular ? _circularProgress.default : _linearProgress.default; this.progressBar = new Handler(this.$element, this.getElementSettings()); this.progressPercentage = 0; this.scrollHandler(); this.handler = this.scrollHandler.bind(this); this.initListeners(); } getTrackingElementSelector() { const trackingElementSetting = this.getElementSettings().relative_to; let selector; switch (trackingElementSetting) { case 'selector': selector = jQuery(this.getElementSettings().selector); break; case 'post_content': selector = jQuery('.elementor-widget-theme-post-content'); break; default: selector = this.isScrollSnap() ? jQuery('#e-scroll-snap-container') : elementorFrontend.elements.$body; break; } return selector; } // TODO: On Elementor-Pro-3.6.0 delete this function and instead // use the function isScrollSnapActivated() from \elementor\assets\dev\js\frontend\utils\utils.js isScrollSnap() { const scrollSnapStatus = this.isEdit ? elementor.settings.page.model.attributes.scroll_snap : elementorFrontend.config.settings.page.scroll_snap; return 'yes' === scrollSnapStatus ? true : false; } addScrollSnapContainer() { if (this.isScrollSnap() && !jQuery('#e-scroll-snap-container').length) { jQuery('body').wrapInner('
'); } } scrollHandler() { // Temporary solution to integrate Scroll-Snap with Progress-Tracker. // Add Scroll-Snap container to all content in order to calculate the viewport percentage. this.addScrollSnapContainer(); const $trackingElementSelector = this.getTrackingElementSelector(), scrollStartPercentage = $trackingElementSelector.is(elementorFrontend.elements.$body) || $trackingElementSelector.is(jQuery('#e-scroll-snap-container')) ? -100 : 0; this.progressPercentage = elementorModules.utils.Scroll.getElementViewportPercentage(this.getTrackingElementSelector(), { start: scrollStartPercentage, end: -100 }); this.progressBar.updateProgress(this.progressPercentage); } initListeners() { window.addEventListener('scroll', this.handler); elementorFrontend.elements.$body[0].addEventListener('scroll', this.handler); } onDestroy() { if (this.progressBar.onDestroy) { this.progressBar.onDestroy(); } window.removeEventListener('scroll', this.handler); elementorFrontend.elements.$body[0].removeEventListener('scroll', this.handler); } } var _default = exports["default"] = ProgressTracker; /***/ }) }]); //# sourceMappingURL=progress-tracker.fd1d31a26340ed74e10a.bundle.js.map

Welcome to WooCommerce – You‘re almost ready to start selling :)

Run the Setup Wizard

.wcf-loader-bg.show{display:block}.wcf-loader-bg{display:none;position:fixed;width:100%;height:100%;right:0;top:0;overflow:hidden;background:rgba(0,0,0,.5);z-index:99999;animation:popup .7s}.wcf-loader-wrap{width:100%;max-width:500px;height:auto;min-height:140px;top:50%;right:50%;position:relative;transform:translate(50%,-50%);overflow:hidden;background:#fff;border-radius:3px;padding:50px}.wcf-order-msg{text-align:center}.wcf-order-msg .wcf-payment-success{color:#28a745}.wcf-order-msg .wcf-payment-failed{color:#dc3545}.wcf-order-msg p{margin:0 0 .7em}.wcf-order-msg .wcf-note{font-size:13px}.wcf-order-msg .wcf-note-no{display:none}p.wcf-process-msg{font-size:1.2em}.wcf-loader,.wcf-loader::after{border-radius:50%;width:8em;height:8em}.wcf-loader{margin:25px auto;font-size:10px;position:relative;text-indent:-9999em;border-top:5px solid #d4d4d4;border-left:5px solid #d4d4d4;border-bottom:5px solid #d4d4d4;border-right:5px solid #f16334;transform:translateZ(0);animation:load8 550ms infinite linear}.wcf-offer-child-order ul.order_details{padding:0}.woocommerce-product-gallery .slides{position:relative;white-space:nowrap;overflow:hidden}.woocommerce-product-gallery .woocommerce-product-gallery__image{width:100%;display:inline-block}.woocommerce-product-gallery .flex-direction-nav a{height:60px}.woocommerce-product-gallery .flex-direction-nav .flex-next,.woocommerce-product-gallery .flex-direction-nav .flex-prev{display:inline-block;font-family:dashicons;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.woocommerce-product-gallery .flex-direction-nav .flex-prev::before{content:"\f341"}.woocommerce-product-gallery .flex-direction-nav .flex-next::before{content:"\f345"}.woocommerce-product-gallery .flex-direction-nav .flex-prev{right:-50px}.woocommerce-product-gallery .flex-direction-nav .flex-next{left:-50px;text-align:left}.woocommerce-product-gallery:hover .flex-direction-nav .flex-prev{opacity:.7;right:10px}.woocommerce-product-gallery:hover .flex-direction-nav .flex-next{opacity:.7;left:10px}.wcf-offer-price{font-size:22px}.wcf-offer-price .del{padding-left:6px;text-decoration:line-through;opacity:.5}.wcf-offer-shipping-fee{display:block;font-size:15px}.wcf-embeded-product-variation-wrap .variations_form .variations{margin:0}.wcf-embeded-product-quantity-wrap .quantity label.screen-reader-text,.wcf-embeded-product-variation-wrap .variations_form .variations td.label{font-weight:600;font-family:inherit;margin-top:10px}.wcf-embeded-product-variation-wrap .variations_form .variations td.label,.wcf-embeded-product-variation-wrap .variations_form .variations td.value{padding:0 0 5px 0;vertical-align:middle}.wcf-embeded-product-quantity-wrap .quantity input[type=number],.wcf-embeded-product-variation-wrap .variations_form .variations select{background-color:#fff;background-image:none;border:1px solid;border-color:#d4d4d4;border-radius:0;box-shadow:inset 0 -1em .7em 0 rgba(0,0,0,.01);color:#a5a5a5;display:inline-block;font-family:inherit;font-weight:inherit;font-size:14px;height:auto;line-height:1.42857143!important;min-height:34px;outline:0;padding:10px 15px;max-width:100%;width:100%;margin-left:0;-webkit-appearance:none}.wcf-embeded-product-quantity-wrap .quantity input[type=number]:focus,.wcf-embeded-product-variation-wrap .variations_form .variations select:focus{background:#fff;transition:.2s}.wcf-embeded-product-variation-wrap .variations_form .single_variation_wrap{float:right;margin-left:40px;vertical-align:middle}.wcf-embeded-product-variation-wrap .variations_form .single_variation_wrap .single_variation{overflow:hidden}.wcf-embeded-product-variation-wrap .single_variation_wrap .single_variation .woocommerce-variation-description{display:none}.wcf-embeded-product-variation-wrap .variations_form .variations .reset_variations{text-decoration:none;font-family:inherit;font-weight:500;font-size:10px;float:left;margin-top:10px;color:#a00a00;text-transform:uppercase;letter-spacing:.5px;display:none}.wcf-embeded-product-variation-wrap .variations_form .variations .reset_variations::before{content:"\274C";font-size:8px;margin-left:5px}.wcf-embeded-product-variation-wrap .variations_form .price,.wcf-embeded-product-variation-wrap .variations_form .single_variation_wrap .woocommerce-variation-price{margin:0;font-family:inherit;font-weight:400;overflow:hidden;min-height:35px;vertical-align:middle;line-height:2.12}.wcf-embeded-product-variation-wrap .variations .var_not_selected{border:1px solid #e2401c!important}.cartflows-container .single_variation_wrap .woocommerce-variation{display:none!important}.wcf-embeded-product-quantity-wrap .quantity input[type=number],.wcf-embeded-product-variation-wrap table{max-width:250px;max-width:200px}.wcf-embeded-product-variation-wrap table,.wcf-embeded-product-variation-wrap table tbody,.wcf-embeded-product-variation-wrap table tbody tr,.wcf-embeded-product-variation-wrap table tbody tr td,.wcf-embeded-product-variation-wrap table tfoot,.wcf-embeded-product-variation-wrap table tfoot tr,.wcf-embeded-product-variation-wrap table tfoot tr td{width:100%;display:block!important}.wcf-embeded-product-quantity-wrap .quantity{display:block}.wcf-embeded-product-quantity-wrap .quantity .screen-reader-text{clip-path:none;display:inline-block;visibility:visible;opacity:1;position:relative!important;top:0;color:#404040;font-size:15px;min-height:34px;min-height:22px;width:100%;padding-top:0}.wcf-embeded-product-quantity-wrap .quantity label{padding:5px 0;width:100%}@media (min-width:769px){.wcf-embeded-product-quantity-wrap .quantity input[type=number],.wcf-embeded-product-variation-wrap table{max-width:80%}}@media (max-width:768px){.wcf-embeded-product-quantity-wrap .quantity input[type=number],.wcf-embeded-product-variation-wrap table{max-width:100%}}@keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(-360deg)}}@keyframes popup{0%{transform:scale(1.2)}}body[class*=" astra-addon-"] .wcf-offer-product-quantity a#minus_qty,body[class*=" astra-addon-"] .wcf-offer-product-quantity a#plus_qty,body[class*=" astra-addon-"] .wcf-offer-product-quantity label[for^=minus_qty],body[class*=" astra-addon-"] .wcf-offer-product-quantity label[for^=plus_qty]{display:none!important}